【发布时间】:2018-12-24 06:59:46
【问题描述】:
我有一个常微分方程(ODE)——范德波尔振荡器问题:
y''-2a (1-y^2)y'+y=0,
y(0)=0, y'(0)=0.5, x in [0,10], a =0.025.
ODE 是在 Maple Software 上使用 fsolve() 函数求解的。
我需要在 Matlab(版本 R2013a)上重写代码。
我的尝试如下。
n = 0
h = 0.1
syms z0; % z in point 0
syms y0; % z in point 0
f0 = 2 * 0.025 * z0 - 2 * 0.025 * ((y0)^2) * z0 - y0
syms z1; % z in point 1
syms y1; % z in point 1
f1 = 2 * 0.025 * z1 - 2 * 0.025 * ((y1)^2) * z1 - y1
syms z2; % z in point 2
syms y2; % z in point 2
f2 = 2 * 0.025 * z2 - 2 * 0.025 * ((y2)^2) * z2 - y2
syms z32; % z in point 3/2
syms y32; % z in point 3/2
f32 = 2 * 0.025 * z32 - 2 * 0.025 * ((y32)^2) * z32 - y32
syms z3; % z in point 3
syms y3; % z in point 3
syms p;
f3 = 2 * p * (1-(y3)^2) * z3 - y3
syms z4; % z in point 4
syms y4; % z in point 4
f4 = 2 * p * (1-(y4)^2) * z4 - y4
syms z72; % z in point 7/2
syms y72; % z in point 7/2
f72 = 2 * p * (1-(y3)^2) * z72 - y72
[c1,c2,c3,c4]=solve(y0, z0, y2 - (-y0 + 2 * y1 + (1/12) * h^2 * f0 + 5/6 * h^2 * f1 + (1/12) * h^2 * f2), y32 - (-1/2 * y0 + 3/2 * y1 + 1/24 *h^2 *f0 + 13/32 * h^2 *f1 - 5/48 * h^2 * f32 + 1/32 * h^2 * f2), -360 * h * z0 - (89 * h^2 * f0 + 186 * h^2 * f1 + 33 * h^2 * f2 - 128 * h^2 * f32 + 360 * y0 -360 * y1))
我有警告:
Warning: 4 equations in 1 variables.
> In C:\Program Files\MATLAB\R2013a\toolbox\symbolic\symbolic\symengine.p>symengine at 56
In mupadengine.mupadengine>mupadengine.evalin at 97
In mupadengine.mupadengine>mupadengine.feval at 150
In solve at 170
Warning: Explicit solution could not be found.
> In solve at 179
问题。 是否可以在 Matlab R2013a 中解决问题?谁能告诉我如何重写代码?
【问题讨论】:
-
具体是什么方法?必须有某种激发公式的步骤描述。从
y[n], y[n+1]开始,目标是计算y[n+2]?这是通过求解值y[n+3/2], y[n+2], z[n], z[n+1], z[n+3/2], z[n+2]? 的隐式非线性系统来完成的。这是一步法和多步法的奇怪组合。是否有关于这种方法及其优点的文档?