声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1105|回复: 1

[编程技巧] 请教下面求解微分方程的程序问题出在哪?

[复制链接]
发表于 2013-3-7 22:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
请教下面求解微分方程的程序问题出在哪?

function dy = hlduffing(t,y)
global f
dy=zeros(3,1);
dy(1)=y(2);
dy(2)=f*cos(0.8*t)-0.2*y(2)-y(1)-y(1)^3;
end


function hlduffing1_bifur_f_getmax
% 最大值法求解分岔图
global f
clear all
t0=[0 100];%积分时间
%bifurcation
for f=linspace(10,32,1000);   %  f=10:32:1000;   %r的变化精度
    [t,y]=ode45('hlduffing',t0,[1;1]);
    [Xmax]=getmax(y(:,1));
    plot(f,Xmax,'k','markersize',1)
    hold on
    clear Xmax
end


下面是系统错误提示:
In an assignment  A(I) = B, the number of elements in B and I must be the same.
Error in hlduffing (line 5)
dy(2)=f*cos(0.8*t)-0.2*y(2)-y(1)-y(1)^3;
Error in odearguments (line 88)
f0 = feval(ode,t0,y0,args{:});   % ODE15I sets args{1} to yp0.
Error in ode45 (line 114)
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
Error in hltest2013 (line 7)
[t,y]=ode45('hlduffing',t0,[1;1])


回复
分享到:

使用道具 举报

发表于 2013-3-8 10:28 | 显示全部楼层
本帖最后由 伤痕累累 于 2013-3-8 10:30 编辑

matlab还得好好学,目测你的程序
global f
dy=zeros(3,1);
dy(1)=y(2);
dy(2)=f*cos(0.8*t)-0.2*y(2)-y(1)-y(1)^3;
end
中dy=zeros(3,1)和后面的方程对应不上,应该是zeros(2,1)。
end也可以不要。

另外,分岔图最好不要用getmax,频闪和极大值法都是相比较之下很好的方法,建议你试一下。

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-17 17:41 , Processed in 0.060238 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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