MATLAB白纸数值分析欧拉法,改进欧拉法,龙格库塔法&画图

相对应代码

%欧拉法

h=0.1;

x=(0:h:1);

y(1)=1;

n=length(x);

for i=1:n-1

y(i+1)=y(i)+h*chp61(x(i),y(i));

m=(1+x).^3;

% err=m(i)-y(i)

end

plot(x,y),hold on;

plot(x,m), hold off;

legend('Euler','Exact','real');

%改进欧拉法

h=0.2;

x=(0:h:1);

y(1)=1;

n=length(x);

for i=1:n-1

K1=chp61(x(i),y(i)) ;

K2=chp61(x(i)+h,y(i)+h*K1);

y(i+1)=y(i)+ h/2*(K1+K2)

m=(1+x).^3

%err=m(i)-y(i)

end

%plot(x,y),hold on;

% plot(x,m), hold off;

%legend('modEuler','Exact','real');

function f=chp61(x,y)

% f=-0.5*y/(1+2*x);

% f=x^2-3*y;

f=3*y/(1+x);

%龙格库塔法

h=0.1;

x=(0:h:1);

y(1)=1;

n=length(x);

for i=1:n-1

k1 = chp61(x(i), y(i));

k2 = chp61(x(i) + h/2, y(i) + h*k1/2);

k3 = chp61(x(i) + h/2, y(i) + h*k2/2);

k4 = chp61(x(i) + h, y(i) + h*k3);

y(i+1) = y(i) + h*(k1 + 2*k2 + 2*k3 + k4) / 6;

m=(1+x).^3;

%err=m(i)-y(i)

end

plot(x,y),hold on;

plot(x,m), hold off;

legend('longeKuta','Exact','real');

%龙格库塔法

ts=0:0.1:1;

y0=1;

[t,y]=ode45('chp61',ts,y0 );

m=(1+x).^3;

% ans=[t',y'];

%err=[t',m']-ans

plot(t',y')

hold on

plot(t',m')

hold off

legend('longeKuta','Exact','real');

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值