| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 18550 人关注过本帖
标题:求助!!!用 MATLAB 的 ode45 求解微分方程组
取消只看楼主 加入收藏
叶子啊
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-4-18
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:3 
求助!!!用 MATLAB 的 ode45 求解微分方程组
我写的M文件是:
function dx=p(t,x)
dx=zeros(6,1);
dx(1)=-0.05*x(1)*x(6)+0.11*x(2)*x(5);
dx(2)=0.05*x(1)*x(6)-0.11*x(2)*x(3)-0.215*x(2)*x(6)+1.228*x(3)*x(5);
dx(3)=0.215*x(2)*x(6)-1.228*x(3)*x(5)-0.242*x(3)*x(6)+0.007*x(4)*x(5);
dx(4)=0.242*x(3)*x(6)-0.007*x(4)*x(5);
dx(5)=0.5*x(1)*x(6)-0.11*x(2)*x(5)+0.215*x(2)*x(6)+1.228*x(3)*x(5)+0.242*x(2)*x(6)-0.007*x(4)*x(5);
dx(6)=-0.5*x(1)*x(6)+0.11*x(2)*x(5)-0.215*x(2)*x(6)-1.228*x(3)*x(5)-0.242*x(2)*x(6)+0.007*x(4)*x(5);

命令窗口:>>[t,x]=ode45('p',[0 3000],[1 0 0 0 0 6],0)
出现的错误:      error('MATLAB:odearguments:IncorrectSyntax',...
            ['Correct syntax is ', solver, '(', funstring(ode), ...
             ',tspan,y0,options).']);      
和:[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
 options, threshold, rtol, normcontrol, normy, hmax, htry, htspan, dataType] = ...
    odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, varargin);
nfevals = nfevals + 1;

诚请各位帮忙看看我的问题怎么解决,谢谢啦
搜索更多相关主题的帖子: function 
2014-04-18 10:59
叶子啊
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-4-18
收藏
得分:0 
回复 2 楼 zvgbaishi
我看书上也没有对时间变量t定义啊,我方程里dx(1)到dx(6)是对t求导
2014-04-19 20:57
叶子啊
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-4-18
收藏
得分:0 
回复 5 楼 zvgbaishi
我的题目是对生物柴油的生产方程的动力学微分方程,用MATLAB的ode45解微分方程并仿真
微分方程是:dT(t)/dt=-0.05*T(t)*A(t)+0.11*W(t)*E(t);
            dW(t)/dt=0.05*T(t)*A(t)-0.11*W(t)*M(t)-0.215*W(t)*A(t)+1.228*M(t)*E(t);
            dM(t)/dt=0.215*W(t)*A(t)-1.228*M(t)*E(t)-0.242*M(t)*A(t)+0.007*G(t)*E(t);
            dG(t)/dt=0.242*M(t)*A(t)-0.007*G(t)*E(t);
            dE(t)/dt=0.5*T(t)*A(t)-0.11*W(t)*E(t)+0.215*W(t)*A(t)+1.228*M(t)*E(t)+0.242*M(t)*A(t)-0.007*G(t)*E(t);
            dA(t)/dt=-dE(t)/dt;
初始条件:T(0)=1,A(0)=6,W(0)=0,M(0)=0,G(0)=0,E(0)=0
谢谢你的热心帮忙,我也不懂,希望也能和你一起探讨!同时也谢谢你发过来的列子!!
2014-04-20 11:43
叶子啊
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-4-18
收藏
得分:0 
回复 7 楼 zvgbaishi
你好,我根据你给的列子写了这个M文件
function z=fly(t,y)
z(1,:)=-0.05*y(1).*y(6)+0.11*y(2).*y(5);
z(2,:)=0.05*y(1).*y(6)-0.11*y(2).*y(3)-0.215*y(2).*y(6)+1.228*y(3).*y(5);
z(3,:)=0.215*y(2).*y(6)-1.228*y(3).*y(5)-0.242*y(3).*y(6)+0.007*y(4).*y(5);
z(4,:)=0.242*y(3).*y(6)-0.007*y(4).*y(5);
z(5,:)=0.05*y(1).*y(6)-0.11*y(2).*y(5)+0.215*y(2).*y(6)+1.228*y(3).*y(5)+0.242*y(2).*y(6)-0.007*y(4).*y(5);
z(6,:)=-0.05*y(1).*y(6)+0.11*y(2).*y(5)-0.215*y(2).*y(6)-1.228*y(3).*y(5)-0.242*y(2).*y(6)+0.007*y(4).*y(5);
运行以后一直没有出结果,一直处于busy状态,你知道这是为什么吗?我的命令是:>> y0=[1;0;0;0;0;6];
>> [x,y]=ode45('fly',[0 1000],y0)

希望你能帮忙看看,不胜感激!!
2014-04-21 10:42
快速回复:求助!!!用 MATLAB 的 ode45 求解微分方程组
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024070 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved