单摆微分方程求解:x''+(g/l)sin(x)=0, 用Matlab求解,求助大神们帮我看看要怎么改呀?十分感谢。
functiondphi=Pendel_DGL(t,x)g=9.81;l=1;dphi_1=x(2);dphi_2=-g/l*sin(x(1));dphi=[dphi_1...
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])
实在不知道要怎么改了呀? 我觉得思路没有错误呀 展开
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])
实在不知道要怎么改了呀? 我觉得思路没有错误呀 展开
1个回答
展开全部
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函数名称一致,不一样调用不了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询