Matlab解非线性微分方程组的问题
答案:1 悬赏:70
解决时间 2021-02-17 22:26
- 提问者网友:沦陷
- 2021-02-17 07:36
Matlab解非线性微分方程组的问题
最佳答案
- 二级知识专家网友:鸽屿
- 2021-02-17 08:59
没解析解你肯定得用数值解。以下是步骤。
第一步,在Matlab里写m-file,命名微分方程对应的函数:
function f=myfun(t,x)
f = [-x(1)+x(2)^2; -2*x(2)+x(1)^2];
这里的x(1)就是你这儿的x, x(2)就是你这儿的y。写完后自动保存,不要对保存目录做任何修改,文件名就叫myfun.m。
第二步,在Matlab命令窗口里写命令:
s=[0:0.01:10];x0=[1,1];
[t,x]=ode45('myfun',s,x0);
plot(x(:,1),x(:,2))
就完了。第一行是在设置画图的范围,s就是画图的区间,0.01是步长,0和10是t的起点和终点,这些你都可以自行设定(步长越小图形越精确),x0是初始值;第二行是在解微分方程,t为自变量(注意在上一步定义函数的时候一定要把t也定义进去,不然matlab不会认为这是个微分方程);第三行就是画相图了。 方程的解就保存在变量t和x里,s里面有多少个点你就会得到多少个x和y。
第一步,在Matlab里写m-file,命名微分方程对应的函数:
function f=myfun(t,x)
f = [-x(1)+x(2)^2; -2*x(2)+x(1)^2];
这里的x(1)就是你这儿的x, x(2)就是你这儿的y。写完后自动保存,不要对保存目录做任何修改,文件名就叫myfun.m。
第二步,在Matlab命令窗口里写命令:
s=[0:0.01:10];x0=[1,1];
[t,x]=ode45('myfun',s,x0);
plot(x(:,1),x(:,2))
就完了。第一行是在设置画图的范围,s就是画图的区间,0.01是步长,0和10是t的起点和终点,这些你都可以自行设定(步长越小图形越精确),x0是初始值;第二行是在解微分方程,t为自变量(注意在上一步定义函数的时候一定要把t也定义进去,不然matlab不会认为这是个微分方程);第三行就是画相图了。 方程的解就保存在变量t和x里,s里面有多少个点你就会得到多少个x和y。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |