单摆微分方程求解:x''+(g/l)sin(x)=0,用Matlab求解,

学习 时间:2026-03-30 17:35:29 阅读:4724
单摆微分方程求解: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])我觉得思路没有错误呀

最佳回答

忐忑的金毛

大力的毛衣

2026-03-30 17:35:29

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中矩阵调用格式!

最新回答共有2条回答

  • 受伤的舞蹈
    回复
    2026-03-30 17:35:29

    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中矩阵调用格式!

上一篇 求一段为高三生自制作文书做的序言

下一篇 高三,怎样可以轻松背单词?