Mtlab:抛物型方程的交替方向隐格式(ADI)
tic;
clear
clc
M=[,,,,];
N=M;
for p=:length(M)
h=/M(p);% 这里定义空间步长等距
tau=/N(p); % 时间步长
x=:h:;
y=:h:;
t=:tau:;
Numerical(M(p)+,M(p)+,N(p)+)=;%u
numerical(M(p)+,M(p)-)=;%u*
%-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
% 求解u*ij和uij过程中构造三对角矩阵
% a 表示下对角线元素
% b 表示主对角线元素
% c 表示上对角线元素
a=-tau/(*h^)*ones(M(p)-,);
b=(tau/h^+)*ones(M(p)-,);
c=-tau/(*h^)*ones(M(p)-,);
%-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
for i=:M(p)+
for j=:M(p)+
Numerical(i,j,)=exp(/*(x(i)+y(j)));% 初值Numerical(x,y,)=u(i,j,)
end
end
for j=:M(p)+
for k=:N(p)+
Numerical(,j,k)=exp(/*y(j)-t(k));% 边值Numerical(,y,t)=u(,j,k)
end
end
for j=:M(p)+
for k=:N(p)+
Numerical(M(p)+,j,k)=exp(/*(+y(j))-t(k));% 边值Numerical(,y,t)=u(m,j,k)
end
end
for i=:M(p)+
for k=:N(p)+
Numerical(i,,k)=exp(/*x(i)-t(k));% 边值Numerical(x,,t)=u(i,,k)
end
end
for i=:M(p)+
for k=:N(p)+
Numerical(i,M(p)+,k)=exp(/*(+x(i))-t(k));% 边值Numerical(x,,t)=u(i,m,k)
end
end
f=inline('-3/2*exp(1/2*(x+y)-t)','x','y','t');
fun=inline('exp(1/2*(x+y)-t)','x','y','t');
for i=:M(p)+
for j=:M(p)+
for k=:M(p)+
Accurate(i,j,k)=fun(x(i),y(j),t(k));
end
end
end
for k=:N(p);
for j=:M(p)-;% 固定j
numerical(,j)=-tau/(*h^)*Numerical(,j,k+)+(tau/h^+)*Numerical(,j+,k+)-tau/(*h^)*Numerical(,j+,k+);% u*0j
numerical(M(p)+,j)=-tau/(*h^)*Numerical(M(p)+,j,k+)+(tau/h^+)*Numerical(M(p)+,j+,k+)-tau/(*h^)*Numerical(M(p)+,j+,k+);% u*mj
for i=:M(p)-
numerical_right_vector(i,)=tau*f(x(i+),y(j+),t(k)+tau/)+Numerical(i+,j+,k)...
+tau/(*h^)*(Numerical(i,j+,k)-*Numerical(i+,j+,k)+Numerical(i+,j+,k))...
+tau/(*h^)*(Numerical(i+,j,k)-*Numerical(i+,j+,k)+Numerical(i+,j+,k))...
+tau^/(*h^)*(Numerical(i,j,k)-*Numerical(i+,j,k)+Numerical(i+,j,k))...
+tau^/(*h^)*(-*Numerical(i,j+,k)+*Numerical(i+,j+,k)-*Numerical(i+,j+,k))...
+tau^/(*h^)*(Numerical(i,j+,k)-*Numerical(i+,j+,k)+Numerical(i+,j+,k));
end
numerical_right_vector(,)=numerical_right_vector(,)+tau/(*h^)*numerical(,j);
numerical_right_vector(M(p)-,)=numerical_right_vector(M(p)-,)+tau/(*h^)*numerical(M(p)+,j);
numerical(:M(p),j)=chase(a,b,c,numerical_right_vector);
end
for i=:M(p)- % 固定i
for j=:M(p)-
Numerical_right_vector(j,)=numerical(i+,j);
end
Numerical_right_vector(,)=Numerical_right_vector(,)+tau/(*h^)*Numerical(i+,,k+);
Numerical_right_vector(M(p)-,)=Numerical_right_vector(M(p)-,)+tau/(*h^)*Numerical(i+,M(p)+,k+);
Numerical(i+,:M(p),k+)=chase(a,b,c,Numerical_right_vector);
end
end
error=abs(Numerical(:,:,M(p)+)-Accurate(:,:,M(p)+));
error_inf(p)=max(max(error));
figure(p)
[X,Y]=meshgrid(y,x);
subplot(,,)
surf(X,Y,Accurate(:,:,M(p)));
xlabel('x');ylabel('y');zlabel('Numerical');
title('the image of Accurate rusult');
grid on;
subplot(,,)
surf(X,Y,Numerical(:,:,M(p)));
xlabel('x');ylabel('y');zlabel('Numerical');
title('the image of Numerical');
grid on;
subplot(,,)
surf(X,Y,error);
xlabel('x');ylabel('y');zlabel('error');
title('the image of error Numerical');
grid on;
end
for k=:length(M)
X=error_inf(k-)/error_inf(k);
Norm(k-)=log2(X);
end
figure(length(N)+)
plot(:length(N)-,Norm,'-b^');
xlabel('序号');ylabel('误差阶数');
title('ADI格式误差阶');
grid on;
toc;
取t=1,N=5,10,20,40,80;真解与数值解的结果图:
N=5:
N=10;
N=20;
N=40;
N=80;
误差阶数:
Mtlab:抛物型方程的交替方向隐格式(ADI)的更多相关文章
- 有限差分法(Finite Difference Method)解方程:边界和内部结点的控制方程
FDM解常微分方程 问题描述 \[\frac{d^2\phi}{dx^2}=S_{\phi} \tag{1} \] 这是二阶常微分方程(second-order Ordinary Differenti ...
- Fluent经典问题答疑
原文链接1 原文链接28 什么叫边界条件?有何物理意义?它与初始条件有什么关系? 边界条件与初始条件是控制方程有确定解的前提. 边界条件是在求解区域的边界上所求解的变量或其导数随时间和地点的变化规律. ...
- C++线性方程求解
介绍 程序SolveLinearEquations解决联立方程.该方案需要一个文本文件,其中包含输入和输出方程解决.这个项目是几年前我写在C#中http://www.codeproject.com/A ...
- 详解如何将MathType嵌入word中
将MathType嵌入word中的过程就是word插入对象的过程,插入对象是word软件中最常见的操作,MathType公式编辑器与所有的Office程序(OLE技术)都有很好的兼容性,本教程将详解如 ...
- 线性二次型控制器(LQR)——轨迹跟踪器
1 概念 2 线性时变系统的跟踪问题 3 线性定常系统的跟踪问题 公式18--22为求解的关键 根据20.21分别求出P.g的值则通过18可求得期望的输出u 4 实例分析 5 仿真实验 先将上 ...
- OpenFOAM 编程 | One-Dimensional Transient Heat Conduction
0. 写在前面 本文中将对一维瞬态热传导问题进行数值求解,并基于OpenFOAM类库编写求解器.该问题参考自教科书\(^{[1]}\)示例 8.1. 1. 问题描述 一维瞬态热传导问题控制方程如下 \ ...
- vijos P1915 解方程 加强版
背景 B酱为NOIP 2014出了一道有趣的题目, 可是在NOIP现场, B酱发现数据规模给错了, 他很伤心, 哭得很可怜..... 为了安慰可怜的B酱, vijos刻意挂出来了真实的题目! 描述 已 ...
- NOIP2014 uoj20解方程 数论(同余)
又是数论题 Q&A Q:你TM做数论上瘾了吗 A:没办法我数论太差了,得多练(shui)啊 题意 题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, ...
- vijos1910解方程
描述 已知多项式方程: a0+a1x+a2x2+...+anxn=0a0+a1x+a2x2+...+anxn=0 求这个方程在[1, m]内的整数解(n 和 m 均为正整数). 格式 输入格式 输 ...
随机推荐
- NetCore +EF+Mysql 从数据库生成实体类到项目
1.点击“工具”->“NuGet包管理器”->“程序包管理器控制台” 分别安装以下几个包 Mysql 版本: Install-Package MySql.Data.EntityFramew ...
- 小程序使用npm
1.cmd进入小程序的目录,cd C:\Users\lenovo\WeChatProjects\SITfu 2.npm install 3.npm init 4.npm install minipro ...
- mongols的反向代理和负载均衡功能
mongols是C++ 服务器基础设施库,它最近更新提供了反向代理和负载均衡功能. 以下为用mongols代理两个nodejs后端(8888和8889)并与nginx压测对比图: 压测显示mongol ...
- Python strip()与lstrip()、rstrip()
.strip()方法可以根据条件遍历字符串中的字符并一一去除 默认去除字符串中的头尾空格 “ Alins ”.“ AA BB CC ”用了之后就是 “Alins”.“AA BB CC” ...
- 词云(wordcloud2.js js2wordcloud.js)
npm安装: npm install js2wordcloud --save 用法 var wc = new Js2WordCloud(document.getElementById('contain ...
- Charles 抓包工具(新猿旺学习总结)
Charles 抓包工具安装机操作 1.Charles 抓包工具是代理服务器工具,可以拦截数据,进行更改,返回数据,以实现前端后台的请求和响应数据的测试2.Charles 菜单介绍 Charles抓包 ...
- linux 安装软件三种方法
引言 在ubuntu当中,安装应用程序我所知道的有三种方法,分别是apt-get,dpkg安装deb和make install安装源码包三种.下面针对每一种方法各举例来说明. apt-get方法 使用 ...
- Automatically populating $HTTP_RAW_POST_DATA is deprecated......
Automatically populating $HTTP_RAW_POST_DATA is deprecated... 1 这个问题和PHP版本有关系,PHP 5.6已经废弃了$HTTP_RAW_ ...
- kubernets controller 和 CRD的扩展
sample git repo 各个组件开发指导 operator 介绍 此图来自谷歌员工的实践介绍 client-go的使用和源码分析 (dlv) p pods *k8s.io/api/core/v ...
- 复旦大学2018--2019学年第一学期(18级)高等代数I期末考试第七大题解答
七.(本题10分) 设 $V$ 为 $n$ 维线性空间, $\varphi,\psi$ 是 $V$ 上的线性变换, 满足 $\varphi\psi=\varphi$. 证明: $\mathrm{Ke ...