| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4012 人关注过本帖
标题:用ode45求解12个常微分方程组,报错不知道咋改
只看楼主 加入收藏
初学者_123
Rank: 2
等 级:论坛游民
帖 子:25
专家分:14
注 册:2021-11-6
结帖率:100%
收藏
 问题点数:0 回复次数:2 
用ode45求解12个常微分方程组,报错不知道咋改
%Chaos–hyperchaos transition in three identical quorum-sensing mean-field coupled ring oscillators
%initial state
history=rand(12,1);
tspan =[0,100];
x0=history(1:3,1);
y0=history(4:6,1);
z0=history(7:9,1);
s0=history(10:12,1);
%--------------Parameters seting------------------------------------------
 beta1=0.5;
 beta2=0.1;
 beta3=0.1;
 n=3;
 kS0=1;
 kS1=0.01;
 Eta=2;
 K=15;
 Q=0.01;
 alpha=2777;
[t,x] = ode45(odefunction1,odefunction2,odefunction3,odefunction4,tspan,history);
 plot(t,x(:,1),t,x(:,2),t,x(:,3));  

%-----------------------------------------------------------------------
Sext=Q*(s(1)+s(2)+s(3))/3;
function dxdt=odefunction1(t,x,beta1,alpha,n)
    dxdt = zeros(3,1);
    dxdt(1)=beta1*(-x(1)+alpha/(1+z(1)^n));
    dxdt(2)=beta1*(-x(2)+alpha/(1+(z(2))^n));
    dxdt(3)=beta1*(-x(3)+alpha/(1+(z(3))^n));
end
function dydt=odefunction2(t,x,y,beta2,alpha,n)
    dydt=zeros(3,1);
    dydt(1)=beta2*(-y(1)+alpha/(1+x(1)^n));
    dydt(2)=beta2*(-y(2)+alpha/(1+(x(2))^n));
    dydt(3)=beta2*(-y(3)+alpha/(1+(x(3))^n));
end

function dzdt=odefunction3(t,y,z,s,beta3,K,alpha)
dzdt=zeros(3,1);
    dzdt(1)=beta3*(-z(1)+alpha/(1+y(1)^n)+K*s(1)/(1+s(1)));
    dzdt(2)=beta3*(-z(2)+alpha/(1+(y(2))^n)+K*s(2)/(1+s(2)));
    dzdt(3)=beta3*(-z(3)+alpha/(1+(y(3))^n)+K*s(3)/(1+s(3)));
end
function dsdt=odefunction4(t,s,y,kS0,kS1,Eta,Sext)
    dsdt=zeros(3,1);
    dsdt(1)=-kS0*s(1)+kS1*y(1)-Eta*(s(1)-Sext);
    dsdt(2)=-kS0*s(2)+kS1*y(2)-Eta*(s(2)-Sext);
    dsdt(3)=-kS0*s(3)+kS1*y(3)-Eta*(s(3)-Sext);
   
end



问题1:想用ode45求解上面12个微分方程组的数值解,初始条件设置为随机的,向画t关于x1,x2,x3的时间序列图,老是报错,而且工作区也没有变量x,y,x,s的数据,
程序运行后出现以下错误:

错误使用 odearguments (line 21)
如果 ode45 的第一个参数为函数句柄,则 tspan 参数必须至少包含两个元素。

出错 ode45 (line 115)
  odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, varargin);

出错 chaos1 (line 20)
[t,x] = ode45(@odefunction1,@odefunction2,@odefunction3,@odefunction4,tspan,history);

问题2:我定义了多个函数,在利用ode45时,[t,x]=ode45(),()中该如何填,应该不能同时@多个函数?


问题3:也尝试过另一种定义函数的方法,
function [t,x(1),y(1),z(1),s(1)]=ode1(x(1),y(1),z(1),s(1))
    dxdt(1)=beta1*(-x(1)+alpha/(1+z(1)^n));
    dydt(1)=beta2*(-y(1)+alpha/(1+x(1)^n));
    dzdt(1)=beta3*(-z(1)+alpha/(1+y(1)^n)+K*s(1)/(1+s(1)));
    dsdt(1)=-kS0*s(1)+kS1*y(1)-Eta*(s(1)-Sext);  
但这时,不知道如何定义函数,因为是不同的变量x,y,z,s,如果是第二种函数定义,function后面该咋写,求大神指导

[此贴子已经被作者于2021-11-30 11:01编辑过]

搜索更多相关主题的帖子: function alpha 函数 end 定义 
2021-11-30 10:42
初学者_123
Rank: 2
等 级:论坛游民
帖 子:25
专家分:14
注 册:2021-11-6
收藏
得分:0 
自己已解决
2022-03-17 19:44
mocun
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2023-3-22
收藏
得分:0 
回复 2楼 初学者_123
你好,请问怎么解决的,我遇到了同样的问题
2023-03-22 14:10
快速回复:用ode45求解12个常微分方程组,报错不知道咋改
数据加载中...
 
   



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

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