查看: 146|回复: 4|关注: 0

[已答复] ode45 可以麻烦各位大神帮忙看一下代码哪里错了嘛!小白万分感谢!

[复制链接]

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
发表于 2020-6-26 01:17:30 | 显示全部楼层 |阅读模式
clear;
syms t;
N=10327800; u=0.1;w=0.5;p=30;
h=-0.00022*t^3 + 0.00651*t^2 - 0.03496*t + 0.03459;
d=-0.000001*t^3 + 0.000138*t^2 + 0.001895*t - 0.005628;
odefun=@(t,x)[-p*1*(1-w)*x(3)*x(1)/N-p*x(1)*x(2)/N;
    p*1*(1-w) *x(3)*x(1)/N+p*x(1)*x(2)/N-0.1*x(2);
    0.1*x(2)-( -0.000001*t^3 + 0.000138*t^2 + 0.001895*t - 0.005628)*(1-w)*x(3)-w*x(3)+ w*x(3)-( -0.000001*t^3 + 0.000138*t^2 + 0.001895*t - 0.005628+-0.00022*t^3 + 0.00651*t^2 - 0.03496*t + 0.03459)*w*x(3);
    h*w*x(3);]
x0=[N,0,0,0];
tspan=[0,23];
[t,x]=ode45(@odefun,tspan,x0);
plot(t,x(:,1))
想做微分方程组的图像出来,程序改了好多次都有问题,麻烦各位大神了!
错误如下:
错误: "odefun" 以前用作变量,与其在此处
作为函数或命令名称的用法冲突。
请参阅 MATLAB 文档中的“MATLAB 如何识别
命令语法” 了解详细信息。

回复主题 已获打赏: 0 积分

举报

论坛优秀回答者

6

主题

1440

帖子

306

最佳答案
  • 关注者: 70
发表于 2020-6-26 09:06:20 | 显示全部楼层
仅供参考
  1. clear;

  2. global p w N
  3. N=10327800; u=0.1;w=0.5;p=30;

  4. % d=-0.000001*t^3 + 0.000138*t^2 + 0.001895*t - 0.005628;

  5. x0=[N,0,0,0];
  6. tspan=[0,23];
  7. [t,x]=ode45(@odefun,tspan,x0);
  8. plot(t,x(:,1))
  9. function f=odefun(t,x)
  10. global p w N
  11. h=-0.00022*t^3 + 0.00651*t^2 - 0.03496*t + 0.03459;
  12. f=[-p*1*(1-w)*x(3)*x(1)/N-p*x(1)*x(2)/N;
  13.     p*1*(1-w) *x(3)*x(1)/N+p*x(1)*x(2)/N-0.1*x(2);
  14.     0.1*x(2)-( -0.000001*t^3 + 0.000138*t^2 + 0.001895*t - 0.005628)*(1-w)*x(3)-w*x(3)+ w*x(3)-( -0.000001*t^3 + 0.000138*t^2 + 0.001895*t - 0.005628+-0.00022*t^3 + 0.00651*t^2 - 0.03496*t + 0.03459)*w*x(3);
  15.     h*w*x(3)];
  16. end
复制代码
回复此楼 已获打赏: 0 积分

举报

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
 楼主| 发表于 2020-6-26 10:37:46 | 显示全部楼层

多谢大神!!!!
回复此楼 已获打赏: 0 积分

举报

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
 楼主| 发表于 2020-6-26 12:53:03 | 显示全部楼层

clear;

global p w N
N=10327800; u=0.1;w=0.5;p=30;
syms t;
% d=-0.000001*t^3 + 0.000138*t^2 + 0.001895*t - 0.005628;
x0=[N,0,0,0];
tspan=[0,23];
[t,x]=ode45(@odefun,tspan,x0);
plot(t,x(:,1))
function f=odefun(t,x)
global p w N
h=-0.00022*t^3 + 0.00651*t^2 - 0.03496*t + 0.03459;
f=[-p*1*(1-w)*x(3)*x(1)/N-p*x(1)*x(2)/N;
p*1*(1-w) *x(3)*x(1)/N+p*x(1)*x(2)/N-0.1*x(2);
0.1*x(2)-( -0.000001*t^3 + 0.000138*t^2 + 0.001895*t - 0.005628)*(1-w)*x(3)-w*x(3)+ w*x(3)-( -0.000001*t^3 + 0.000138*t^2 + 0.001895*t - 0.005628+-0.00022*t^3 + 0.00651*t^2 - 0.03496*t + 0.03459)*w*x(3);
h*w*x(3)];
end

大神我改了一下代码这样子,最后出来的图像是一条水平直线是为什么啊…
(我问题真的太多麻烦大神了…
592922EC-8F49-46CE-86A7-2F0D1E148329.png
回复此楼 已获打赏: 0 积分

举报

论坛优秀回答者

6

主题

1440

帖子

306

最佳答案
  • 关注者: 70
发表于 2020-6-26 15:35:06 | 显示全部楼层
试试调整初值,仅供参考
  1. clear;

  2. global p w N
  3. N=10327800; u=0.1;w=0.5;p=30;
  4. syms t;
  5. % d=-0.000001*t^3 + 0.000138*t^2 + 0.001895*t - 0.005628;
  6. x0=[N,1,1,1];
  7. tspan=[0,23];
  8. [t,x]=ode45(@odefun,tspan,x0);
  9. plot(t,x(:,1))
  10. function f=odefun(t,x)
  11. global p w N
  12. h=-0.00022*t^3 + 0.00651*t^2 - 0.03496*t + 0.03459;
  13. f=[-p*1*(1-w)*x(3)*x(1)/N-p*x(1)*x(2)/N;
  14. p*1*(1-w) *x(3)*x(1)/N+p*x(1)*x(2)/N-0.1*x(2);
  15. 0.1*x(2)-( -0.000001*t^3 + 0.000138*t^2 + 0.001895*t - 0.005628)*(1-w)*x(3)-w*x(3)+ w*x(3)-( -0.000001*t^3 + 0.000138*t^2 + 0.001895*t - 0.005628+-0.00022*t^3 + 0.00651*t^2 - 0.03496*t + 0.03459)*w*x(3);
  16. h*w*x(3)];
  17. end
复制代码
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表