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

问题描述:

单摆微分方程求解: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])

我觉得思路没有错误呀
1个回答 分类:综合 2014-10-10

问题解答:

我来补答
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中矩阵调用格式!
 
 
展开全文阅读
剩余:2000
也许感兴趣的知识