学习笔记:常微分方程和常微分方程组的数值解

为什么要求数值解?

有许多常微分方程从理论上讲有解析解,但无法求出,此时只能寻求数值解。且,数值解法必须提供初值。
基本思想:
在这里插入图片描述
在这里插入图片描述
MATLAB求解标准形式:
M(x,y)*y’=F(x,y)

例1:y’=2x,初值y(0)=10,积分区间[0,10]

:

// An matlab block
f =@(x,y)2*x     %为什么要写要y?因为匿名函数必须同时接受两个输入(x,y),即使一个输入未使用也是如此
tspan = [0,10]
y0=10;
ode45(f,tspan,y0)

结果:

在这里插入图片描述

例2:y’‘=u(1-y**2)y’+y,初值y(0)=1,y’(0)=0,积分区间[0,20]

首先转化为MATLAB标准求解格式:令y=y,z=y’
则转化为(1)y’=z (2)z=u(1-y**2)*z+y

:

// An matlab block
u=1;
f =@(x,y)fun(y,u);
tspan = [0,20];
y0=[1 0];
[x,y]=ode45(f,tspan,y0);
plot(x,y);
// An matlab block
  function ydot = fun(y,u)
  ydot =[y(2);u*(1-y(1)^2)*y(2)+y(1)];
  end

结果:

在这里插入图片描述
x,y形成的图像(蓝色);x,z形成的图像(红色):

在这里插入图片描述

例3:方程组:(1) y’=a-(b+1)y+(y2)z , (2) z’=by-(y2)*z 初值:y(0)=3,z(0)=4,积分区间[0,10]

:

// An matlab block
  a=100;
b=50;
f =@(x,y)fun(y,a,b);
tspan = [0,10];
y0=[3 4];
[x,y]=ode45(f,tspan,y0);
plot(x,y(:,1),"r",x,y(:,2),"g")
// An matlab block
  function ydot = fun(y,a,b)
  ydot =[a-(b+1)*y(1)+y(1)^2*y(2);b*y(1)-y(1)^2*y(2)];
end

结果:

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值