• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

MATLAB求解常微分方程:ode45函数与dsolve函数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

ode45函数无法求出解析解,dsolve可以求出解析解(若有),但是速度较慢.

1.      ode45函数

①求一阶常微分方程的初值问题

[t,y] = ode45(@(t,y)y-2*t/y,[0,4],1);

plot(t,y);

求解 y’ – y + 2*t / y且初值y(0) = 1的常微分方程初值问题,返回自变量和函数的若干个值.

若不写返回值,则会自动作出函数随自变量的变化图像.

ode45(@(t,y)y-2*t/y,[0,4],1);


②求解一阶微分方程组

x’ = -x^3-y,x(0)=1

y’ = x-y^3,y(0)=0.5.

自变量为t,且0<t<30.

求解过程如下.

第一步,在M函数文件中将函数x和函数y写成向量形式.

function f = fun(t,x);

f(1) = -x(1)^3 – x(2);

f(2) = x(1) – x(2)^3;

f = f(:);%确保f为列向量.

第二步,在M脚本文件中求解.

[t,x] = ode45(@fun,[0,30],[1;0.5]);

subplot(1,2,1);plot(t,x(:,1),t,x(:,2),\':\');xlabel(\'t\');ylabel(\'x/y\');%作x和y随t变化图

subplot(1,2,2);plot(x(:,1),x(:,2));xlabel(\'x\');ylabel(\'y\');%作x和y的相位图

第三步,在命令窗口运行M脚本文件中的代码.


③求解高阶常微分方程组

将高阶常微分方程组通过变量替换转化为一阶的常微分方程组,然后用ode45求解.


2.      dsolve函数

①求解析解

y’ = a*x + b;

s = dsolve(\'D2y=a*y+b*x\',\'x\');

D2y用以表示y的二阶导数,默认是以t为自变量的,所以最好指明自变量为x.


②初值问题

y’ = y – 2*t / y , y(0) = 1;

s = dsolve(\'Dy == y - 2*t / y\',\'y(0) ==1\');


③边值问题

x*y’’ – 3*y’ = x^2 , y(1) = 0 , y(5) = 0;

s = dsolve(\'x*D2y - 3*Dy ==x^2\',\'y(1)=0\',\'y(5) == 0\',\'x\');

函数最后一个参数指明自变量为x.


④高阶方程

求解y’’ = cos(2x) – y , y(0) = 1 , y’(0) = 0;

s=dsolve(\'D2y == cos(2*x) - y\',\'y(0) =1\',\'Dy(0) = 0\',\'x\');

simplify(s);


⑤方程组问题

f’ = f + g , g’ = -f + g,f(0) = 1, g(0) =2;

[f,g]= dsolve(\'Df == f + g\',\'Dg = -f + g\',\'f(0)==1\',\'g(0) == 2\',\'x\');

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
咏南DELPHIDATASNAPLINUX中间件咏南DATASNAPLINUX中间件发布时间:2022-07-18
下一篇:
Delphi中为DBNavigator的按钮加中文发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap