单摆微分方程求解:x''+(g/l)sin(x)=0,用Matlab求解,
function dphi=Pendel_DGL(t,x)
g= 9.81;
l= 1;
dphi_1=x(2);
dphi_2=-g/l*sin(x(1));
dphi= [dphi_1;dphi_2];
[t,x]=ode45(Pendel_DGL,[0,4],[pi/2,0])
我觉得思路没有错误呀
单摆微分方程求解:x’’+(g/l)sin(x)=0,用Matlab求解,
答案:1 悬赏:0 手机版
解决时间 2021-04-05 10:42
- 提问者网友:贪了杯
- 2021-04-04 21:17
最佳答案
- 五星知识达人网友:刀戟声无边
- 2021-04-04 21:25
1.这段程序基本没有什么错误,只是在最后调用ode45求解时候,格式有点错误,修改一下就能运行了:[t,x]=ode45(@Pendel_DGL,[0,4],[pi/2,0])
2. 在编程时候,在help里面可以找到很多例子,一般来说照着例子来编程,基本不会发生错误,如下:
子程序:
function dx=myfun(t,x)
g=9.81;
l=1;
dx=zeros(2,1);
dx(1)=x(2);
dx(2)=-g/l*sin(x(1));
计算程序:
>> tspan=[0 4];
>> x0=[pi/2 0];
>> [t,x]=ode45(@myfun,tspan,x0);
>>
3. 目前使用匿名函数比较多,而且比较方便:
>> clear
>> g=9.81;
>> l=1;
>> fun=@(t,x)[x(2);-g/l*sin(x(1))];
>> tspan=[0 4];
>> x0=[pi/2 0];
>> [t,x]=ode45(fun,tspan,x0);
>>
再问: 谢谢你,我加上了@,然后在命令窗口输入计算程序,还是有错误,麻烦您再帮我看看是什么错误,还要怎么改呀?
再答: 看看你的子函数m文件的名称是否和function函数名称一致,不一样调用不了。
再问: 非常感谢,数算出来了。可是最后一个问题,如果作图的话,可以直接在命令窗口这么写么? 谢谢谢谢。 plot(t,x[1,:],'b',t,x[2,:],'r')
再答: >> plot(t,x(:,1),'b',t,x(:,2),'r') 注意matlab中矩阵调用格式!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯