tic;
clear
clc
M=[,,,,,,];%x的步数
K=M; %时间t的步数
for p=:length(M)
hx=/M(p);
ht=/K(p);
r=ht/hx^; %网格比
x=:hx:;
t=:ht:;
numerical=zeros(M(p)+,K(p)+);
numerical(:,)=exp(x); %初始值
numerical(,:)=exp(t); %边值
numerical(M(p)+,:)=exp(t+); %边值
a=-r/*ones(M(p)-,);b=(+r)*ones(M(p)-,);c=-r/*ones(M(p)-,);
fun1=inline('exp(x+t)','x','t');
for i=:length(x)
for j=:length(t)
Accurate(i,j)=fun1(x(i),t(j));
end
end
d=r/*ones(M(p)-,);e=(-r)*ones(M(p)-,);f=r/*ones(M(p)-,);
B=diag(d,-)+diag(e,)+diag(f,);
fun2=inline('','x','t');
for i=:M(p)-
for k=:K(p)
f(i,k)=ht*fun2(x(i+),t(k)+ht/);
end
end
for k=:K(p)
f(,k)=r/*(numerical(,k+)+numerical(,k));
f(M(p)-,k)=r/*(numerical(M(p)+,k+)+numerical(M(p)+,k));
end
for k=:K(p)
right_vector=f(:,k)+B*numerical(:M(p),k);
numerical(:M(p),k+)=chase(a,b,c,right_vector);
end
error=numerical(:M(p),:K(p))'-Accurate(2:M(p),2:K(p))';
error_inf(p)=max(max(error));
figure(p)
[X,Y]=meshgrid(x,t);
subplot(,,)
mesh(X,Y,Accurate');
xlabel('x'),ylabel('t');zlabel('Accurate');
title('the image of Accurate result');
grid on
subplot(,,)
mesh(X,Y,numerical');
xlabel('x'),ylabel('t');zlabel('numerical');
title('the image of numerical result');
grid on
subplot(,,)
mesh(X,Y,numerical'-Accurate');
xlabel('x'),ylabel('t');zlabel('error');
title('the image of error result');
grid on
end
for k=:length(M)
H=error_inf(p-)/error_inf(p);
E_inf(k-)=log2(H);
end
figure(length(M)+)
plot(:length(M)-,E_inf,'-r v');
ylabel('误差阶数');
title('Crank nicolson 误差阶数');
grid on
toc;

Matlab:Crank Nicolson方法求解线性抛物方程的更多相关文章

  1. Matlab:五点差分方法求解椭圆方程非导数边值问题

    差分格式脚本文件: tic; clear clc M=32;%x的步数 N=16;%y的步数 h1=1/M;%x的步长 h2=1/N;%y的步长 x=0:h1:1; y=0:h2:1; u=zeros ...

  2. 【matlab】MATLAB程序调试方法和过程

    3.8  MATLAB程序的调试和优化 在MATLAB的程序调试过程中,不仅要求程序能够满足设计者的设计需求,而且还要求程序调试能够优化程序的性能,这样使得程序调试有时比程序设计更为复杂.MATLAB ...

  3. FESTUNG — 3. 采用 HDG 方法求解对流问题

    FESTUNG - 3. 采用 HDG 方法求解对流问题[1] 1. 控制方程 线性对流问题控制方程为 \[\begin{array}{ll} \partial_t c + \nabla \cdot ...

  4. 三种初步简易的方法求解数值问题 of C++

    1. “二分法解方程” 在二分法中,从区间[a,b]开始,用函数值f(a)与f(b)拥有相反的符号.如果f在这个区间连续,则f的图像至少在x=a,x=b之间穿越x轴一次,因此方程f(x)=0在[a,b ...

  5. C语言多种方法求解字符串编辑距离问题的代码

    把做工程过程经常用的内容记录起来,如下内容段是关于C语言多种方法求解字符串编辑距离问题的内容. { if(xbeg > xend) { if(ybeg > yend) return 0; ...

  6. 工具使用——MATLAB基本调试方法

    作者:桂. 时间:2017-02-28  07:06:30 链接:http://www.cnblogs.com/xingshansi/articles/6477185.html 声明:转载请注明出处, ...

  7. 使用三种方法求解前N个正整数的排列

    本篇博文给大家介绍前N个正整数的排列求解的三种方式.第一种是暴力求解法:第二种则另外声明了一个长度为N的数组,并且将已经排列过的数字保存其中:第三种方式则采用了另外一种思路,即首先获取N个整数的升序排 ...

  8. 导出CCS3.3数据及使用matlab处理的方法

    CCS3.3是一款DSP的集成开发环境(IDE).在做DSP开发时,为验证算法.经常须要使用matlab进行算法验证,验证算法就须要数据.因此,一种交互的方法是: 使用DSP开发板连接CCS 用CCS ...

  9. C++笔记005:用面向过程和面向对象方法求解圆形面积

    原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 结束了第一个hello world程序后,我们来用面向过程和面向对象两个方法来求解圆的面积这个问题,以能够更清晰的体会面向对象和面向过程. ...

随机推荐

  1. python摸爬滚打之day26----网络编程之socket

    1.网络通信原理 互联网的本质就是一系列的网络协议, 统称为互联网协议. 互联网协议的功能:定义计算机如何接入internet,以及接入internet的计算机通信的标准. 互联网协议按照功能不同分为 ...

  2. 内置委托func

    1.p=>p.CTName,其中p是此委托入参,p.CTName是返回值 2. 3.调用委托的方法

  3. jQuery学习--Code Organization Concepts

    jQuery官方文档:  http://learn.jquery.com/code-organization/concepts/ Code Organization Concepts(代码组织概念) ...

  4. expect-调试模式的使用

    1.expect简介 Expect是一种TCL扩展性的语言,主要用于完成系统交互方面的功能,比如SSH.FTP等,这些程序都需要手工与它们进行互动,而使用Expect就可以模拟人手工互动的过程,是一种 ...

  5. 【LeetCode每天一题】Combinations(组合)

    Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. Example: I ...

  6. JMeter_方案上架,遇到的问题及解决

    问题:手动输入时间接口正确,但是不会在前端展示 解决:发布时间.加入时间设置为服务器时间,服务器时间通过接口自动获取到

  7. Docker:Docker machine(5)

    Docker machine Docker Machine的安全集成在Docker Toolbox中,是用户在Windows环境下使用docker并管理VirtualBox的一个终端: docker- ...

  8. hive sql执行的job在map时报java.lang.OutOfMemoryError的错误

    较为详细且重要的一段报错信息是org.apache.hadoop.mapred.YarnChild: Error running child : java.lang.OutOfMemoryError: ...

  9. Linux C++ IDEs

    个人推荐CLion, Visual Studio, Netbeans, Eclipse CDT排名部分先后,纯属个人偏好. 还有一点需要说明的是,笔者只用这几个工具写代码,也就是用他们提供的代码提示, ...

  10. [macOS] error when brew updating

    I want to update the brew, then run brew update but unluckly, i got these error /usr/local/Library/b ...