数值分析第五章隐式欧拉法matlab解法

根据题目微分方程:{y}'=-2y-4x

根据初值y(0)=2,将x的区间为[0,5]

根据隐式欧拉公式:y_{n+1}=y_{n}+hf\left ( x_{n+1},y_{n+1} \right )

但是我们并不知道y_{n+1}此时的值

所以每次迭代前都需要先计算此时的y_{n+1}=y_{n}+hf\left ( x_{n},y_{n} \right ),以便算出f\left ( x_{n+1},y_{n+1} \right )

matlab代码如下:




a=0;
b=5;
y0=2;
h=0.01;
s=(b-a)/h;
X=zeros(1,s+1);
Y=zeros(1,s+1);
X=a:h:b;
Y(1)=y0;
q=@lin;
for k=1:s
    k1=q(X(k),Y(k));%yn+1=yn+hq(xn,yn)
    k2=q(X(k+1),Y(k)+h*k1);%yn+1=yn+hq(xn+1,yn+1)
    Y(k+1)=Y(k)+h*k2;
end
x=X';
y=Y';

f1=exp(-2*x)-2*x+1;
figure(1);
subplot(1,2,1);
plot(x,y);
hold on;
plot(x,f1);

subplot(1,2,2);
plot(x,f1-y);

function f=lin(c,d)
f=-2*d-4*c;
end

 

  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值