MATLAB中,编写ode45求解单摆运动的一阶常微分方程组 80

%函数文件(保存yfun2.m)functionexer2=yfun2(t,y);g=9.8;l=25;exer2=[x(2);(-g/l)*sin(x(1))];%程序... %函数文件(保存yfun2.m)
function exer2=yfun2(t,y);
g=9.8;
l=25;
exer2=[x(2);(-g/l)*sin(x(1))];
%程序文件
tspan=[0,10];
y0=[0.1475,0];
[t,y]=ode45(‘yfun2’,tspan,y0);
plot(t,y(:,1));

请问这个程序错在哪?我们只上了四节课老师便要我们自己编写程序,所以很多不懂
展开
 我来答
zhaozhengbuaa
2014-09-16 · TA获得超过131个赞
知道答主
回答量:52
采纳率:0%
帮助的人:35.7万
展开全部

%单摆程序

%状态量变y[角位置,角速度]

%运动微分方程dy=[y(2),-g/l*y(1)]

function main

TSPAN=0:0.01:10;

y0=[0.1475,0];

[t,y]=ode45(@(t,y) yfun2(t,y),TSPAN,y0);

plot(t,y(:,1),'r');

hold on

plot(t,y(:,2),'k');

legend('position','velocity');

grid on

end



function  exer2=yfun2(t,y);

g=9.8;

l=25;

exer2(1,1)=y(2);

exer2(2,1)=(-g/l)*sin(y(1));

%程序文件

end

追问

我还是没办法运行,是版本问题吗?我是r2012a

追答
这样改下试试:

%单摆程序
%状态量变y[角位置,角速度]
%运动微分方程dy=[y(2),-g/l*y(1)]
function main
TSPAN=0:0.01:10;
y0=[0.1475,0];
[t,y]=ode45(@yfun2,TSPAN,y0);
plot(t,y(:,1),'r');
hold on
plot(t,y(:,2),'k');
legend('position','velocity');
grid on
end
function exer2=yfun2(t,y);
g=9.8;
l=25;
exer2(1,1)=y(2);
exer2(2,1)=(-g/l)*sin(y(1));
%程序文件
end
如风清澈x
2014-09-16 · 超过43用户采纳过TA的回答
知道答主
回答量:131
采纳率:0%
帮助的人:68.6万
展开全部
exer2=[x(2);(-g/l)*sin(x(1))];

敢问x(2)在这个子程序中是什么
追问

这个是根据网上的例题跟着写的格式,就是把单摆运动的方程化为一阶微分方程组后的数

                              

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式