Matlab:双曲方程
2024-08-29 11:08:40
tic;
clear
clc
M=[, ];%空间步数
N=*M;%时间步数
for k=:length(M)
h=/M(k);%空间步长
tau=/N(k);%时间步长
s=tau/h;%步长比
x=:h:;
t=:tau:;
y=inline('exp(x+t)','x','t');%真解函数
for i=:length(x)
for j=:length(t)
exact(i,j)=y(x(i),t(j));%真解
end
end
u=zeros(M(k)+,N(k)+);%数值解内存单元
for i=:M(k)
u(i,)=exp(x(i));%初值u(i,)
u(i,)=exp(x(i))+tau*exp(x(i))+(tau^/)*exp(x(i));%第二层值u(i,)
end
u(,:)=exp(t);%边值u(,t)
u(M(k)+,:)=exp(+t);%边值u(,t)
phi=zeros(M(k)-,N(k));
for i=:N(k)
phi(,i)=exp(t(i));
phi(M(k)-,i)=exp(+t(i));
end A=diag((*(-s^))*ones(M(k)-,))+diag(s^*ones(M(k)-,),)+diag(s^*ones(M(k)-,),-);
for j=:N(k)
u(:M(k),j+)=A*u(:M(k),j)-u(:M(k),j-)+s^*phi(:,j);%数值解
end
error=abs(u(:M(k),:end)-exact(:M(k),:end));%误差
error_inf(k)=max(max(error));
%error=exact-u;
subplot(,,)
[X,Y]=meshgrid(t(end:-:),x(:M(k)));
mesh(X,Y,error);
xlabel('t');
ylabel('x');
zlabel('error');
grid on
% pan on;
% zoom on;
pause(0.05)
hold on
end
legend('h=1/10,tau=1/20','h=1/20,tau=1/40','h=1/40,tau=1/80','h=1/80,tau=1/160');
title('Numerical Result')
for p=:length(M)-
H=error_inf(p)/error_inf(p+);
NORM(p)=log2(H);
end
subplot(,,)
plot(:length(M)-,NORM,'-bp')
ylabel('误差阶数');
text(,,'这就是误差阶数!!!!!')
grid on
axis square
toc;
效果图:
最新文章
- linux输入子系统(input subsystem)之按键输入和LED控制
- Redis——学习之路二(初识redis服务器命令)
- 【51nod】区间求和
- cherry Tree的严重漏洞
- win7下配置Apache本地虚拟主机
- power 做表
- Codeforces Round #350 (Div. 2) D2 二分
- IIS6.0下 Asp.Net 拦截jpg请求
- Git教程(10)git比较复杂的功能
- DataSet排序
- python基础学习笔记1
- HTML+CSS - 搜索 And 高级搜索
- cmd markdown 使用教程
- thinkphp中使用phpexcel读取所有的行记录
- [NOI 2010]能量采集
- vs 为什么使用#include ";stdafx.h";
- 吴裕雄 python深度学习与实践(7)
- 自适应电脑、手机和iPad的网页设计方法
- 2018-2019-2 网络对抗技术 20165301 Exp2 后门原理与实践
- 开工:创建虚拟机,xshell连接虚拟机,复制虚拟机,docker安装,添加加速器