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 均为正整数). 格式 输入格式 输 ...
随机推荐
- 前端JS插件整理
1.JQuery.js JavaScript 库,简化JS. 官网地址:https://jquery.com/ 菜鸟教程:http://www.runoob.com/jquery/jquery-tut ...
- JavaScript之jsx&react
1.Virtual DOM 1.将网页所有内容映射到一颗树形结构的层级对象模型上,浏览器提供对dom的支持,用户可以是用脚本调用dom,api来动态修改dom节点,从而达到修改网页目的,这种修改是浏览 ...
- 【论文速读】Fangfang Wang_CVPR2018_Geometry-Aware Scene Text Detection With Instance Transformation Network
Han Hu--[ICCV2017]WordSup_Exploiting Word Annotations for Character based Text Detection 作者和代码 caffe ...
- final关键字的几种用法
在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们来了解一下final ...
- 为fastdfs文件服务器新增一个storage
一.前言: 前期,已经搭建好了一套fastdfs文件服务器,一个tracker和一个storage,且部署在同一台服务器上,已经正式投入运行快半年了,1T的空间现在只剩下100G容量了,现在需要扩容, ...
- 2018-2019-2 网络对抗技术 20165316 Exp4 恶意代码分析
2018-2019-2 网络对抗技术 20165316 Exp4 恶意代码分析 一.原理与实践说明 1.实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分析Exp2 ...
- 使用第三方jar时出现的问题
Eclipse下把jar包放到工程lib下和通过buildpath加载有什么不同(解决找不到类的中级方法) 我通过Eclipse的 User Libranry 将jar导入 Eclipse里面,编译没 ...
- HTTP请求中GET和POST的区别
一.原理区别 一般我们在浏览器输入一个网址访问网站都是GET请求;再FORM表单中,可以通过设置Method指定提交方式为GET或者POST提交方式,默认为GET提交方式. HTTP定义了与服务器交互 ...
- v-charts简介
一, v-charts简介 在使用 echarts 生成图表时,经常需要做繁琐的数据类型转化.修改复杂的配置项,v-charts 的出现正是为了解决这个痛点.基于 Vue2.0 和 echarts 封 ...
- Redis学习-主从复制、哨兵
主从复制 官方文档:https://redis.io/topics/replication Redis中的主从复制,也就是Master-Slave模型,有以下特点 Master可以拥有多个slave ...