
急急急!!!MATLAB求解微分方程组,需要得到数值解
MATLAB用ode45求解微分方程组,需要编写m文件,怎样直接在命令窗口直接编写代码求解微分方程组,而不编写m文件,或者怎样把m文件展开直接写在代码里面,前提是需要得到...
MATLAB用ode45求解微分方程组,需要编写m文件,怎样直接在命令窗口直接编写代码求解微分方程组,而不编写m文件,或者怎样把m文件展开直接写在代码里面,前提是需要得到数值解,请给一个格式实例,谢谢
能解决问题请回答,非诚勿扰,谢谢 展开
能解决问题请回答,非诚勿扰,谢谢 展开
2个回答
展开全部
对于不是很复杂的微分方程(最好不包含逻辑判断之类的),可以使用匿名函数(7.0之前使用内联函数inline)定义微分方程,然后用ode*系列函数求解。
例如,作为ode*函数文档中的例子:
function dy = vdp1000(t,y)
dy = zeros(2,1); % a column vector
dy(1) = y(2);
dy(2) = 1000*(1 - y(1)^2)*y(2) - y(1);
可以用内联函数表示为:
vdp1000=inline('[y(2); 1000*(1 - y(1)^2)*y(2) - y(1)]','t','y');
[T,Y] = ode15s(vdp1000,[0 3000],[2 0]);
plot(T,Y(:,1),'-o')
例如,作为ode*函数文档中的例子:
function dy = vdp1000(t,y)
dy = zeros(2,1); % a column vector
dy(1) = y(2);
dy(2) = 1000*(1 - y(1)^2)*y(2) - y(1);
可以用内联函数表示为:
vdp1000=inline('[y(2); 1000*(1 - y(1)^2)*y(2) - y(1)]','t','y');
[T,Y] = ode15s(vdp1000,[0 3000],[2 0]);
plot(T,Y(:,1),'-o')
更多追问追答
追答
上次忘说了,对于7.0之后的版本,最好使用匿名函数(由于我当时的电脑中正在用6.5,就随手使用了inline)。
匿名函数与inline函数的最大差别是,匿名函数可以使用当前工作区中已定义的变量,而inline由于是以字符串形式定义的,它不能直接使用工作区中的变量。也正因匿名函数相比之下更方便、更强大,较新的版本中计划删除inline函数,而建议用户使用匿名函数代替。
匿名函数的使用也很简单。例如,上面的内联函数如果用匿名函数定义如下:
vdp1000=@ (t,y)[y(2); 1000*(1 - y(1)^2)*y(2) - y(1)];
注意不要把方括号给丢了。

2024-08-02 广告
科仪器致力于为微纳薄膜领域提供精益级测量及控制仪器,包括各种光谱椭偏、激光椭偏、反射式光谱等,从性能参数、使用体验、价格、产品可靠性及工艺拓展性等多个维度综合考量,助客户提高研发和生产效率,以及带给客户更好的使用体验。...
点击进入详情页
本回答由系科仪器提供
2015-11-16
展开全部
我可以用Mathematica试试,这个软件和Matlab有很多共同点
追问
搞不懂你给我的这是什么回答,。。。。。。。不用换软件,就用MATLAB求解,不会咱就不用谈这些无关痛痒的东西,谢谢您
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询