0

我有一个带有三角函数的二阶非线性 ODE,因此我无法根据二阶导数对其进行公式化。例如:

ay'' + b arctan(y'') + cy' + dy=0
y'(0)=0, y''(0)=0

如果不存在arctan(y'')这样的术语,我可以编写我的 ode 函数,例如

function output=myodefunc(u,t){
  y(1)=u(2);
  y(2)=(-c*u(2)-d*u(1))/m;
  output=y';
}

不幸的是,二阶非线性项 (=> b*arctan(y'') ) 使我无法根据y''编写 ode 。

有什么方法可以在 Matlab 中数值求解这样的三角函数?

4

1 回答 1

0

可以在 ode 函数中使用非线性求解器 (fsolve) 计算 y'':

function output=myodefunc(u,t){
  y(1)=u(2);
  x0=0;
  x=fsolve('a*x + b*atan(x) + c*u(2) + d*u(1)',x0);
  y(2)=x;
  output=y';
}
于 2013-09-17T12:30:12.767 回答