我正在尝试在 MATLAB 中求解达芬方程。
在哪里
为此,我编写了一个用于 ode45 的函数。
function [F] = ode_fun(t,y)
F = zeros(size(y));
F(1) = y(2);
F(2) = -k*y(1)-c*y(2)-k3*y(1)^3+A*sin(omega*t);
end
然后我调用 ode 函数:
[t,u] = ode45('ode_fun',[0 T],[0 0]);
这是正确的方法吗?
因为我希望在绘制“力与位移”图时获得三次函数,但实际上我获得了一条直线。
编辑:我也会给你我用于模拟的数值。
基本上,我从一个示例中找到的线性方程开始,然后添加了非线性项来检查我的代码是否能够区分线性和非线性动态系统。
线性情况的值是:,,.
然后我将非线性项添加为
作为强制项,我决定使用正弦波和.
最终模拟时间为
编辑:我正在测试的完整代码是我在另一个问题中谈到的,我从 3D 表面发布了 2D 横截面
我试图了解此过程是否适用于非线性参数识别