matlab解一维方程,一维抛物线型方程数值解法(1)(附图及matlab程序)

精确解为:U(x,t)=e^(x+t);

下面给出两个matlab程序,实质一样(用的是向前欧拉格式)

第二个程序由之前解线性方程组的G-S迭代法得到,迭代次数k=2(固定)

function [p u e x t]=pwxywxq(h1,h2,m,n)

% 解抛物线型一维方程向前欧拉格式(Ut-aUxx=f(x,t),a>0)

%不用解线性方程组,由下一层(时间层)的值就直接得到上一层的值

%m,n为x,t方向的网格数,例如(2-0)/0.01=200;

%e为误差,p为精确解

u=zeros(n+1,m+1);

x=0+(0:m)*h1;

t=0+(0:n)*h2;

for(i=1:n+1)

u(i,1)=exp(t(i));

u(i,m+1)=exp(1+t(i));

end

for(i=1:m+1)

u(1,i)=exp(x(i));

end

for(i=1:n+1)

for(j=1:m+1)

f(i,j)=0;

end

end

r=h2/(h1*h1); %此处r=a*h2/(h1*h1);a=1 要求r<=1/2差分格式才稳定for(i=1:n)

for(j=2:m)

u(i+1,j)=(1-2*r)*u(i,j)+r*(u(i,j-1)+u(i,j+1))+h2*f(i,j);

end

end

for(i=1:n+1)

for(j=1:m+1)

p(i,j)=exp(x(j)+t(i));

e(i,j)=abs(u(i,j)-p(i,j));

end

end

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值