我是 Matlab 编程和 Runge-Kutta 方法的初学者。
我正在尝试使用 4 阶 Runge-Kutta 方法为我的项目工作解决耦合非线性 ODE 系统。
这是我的问题...
v'(n) = k1 ; d'(n) =k2; p'(n)= k3;q'(n) = k4; w'(n)= k5;
v[1]= (1-b); d[1] = 1/b;p[1] =(1-b); q[1] = 0.01;w[1] = 0.02
在matlab代码中,我把v换成了x1,d换成了x2……
这里 ki, i=1-5 是 xi 和 n 的函数,在 Matlab 代码中作为“case1rk”的行向量给出
我的 MATLAB 代码是——
G = 1.4;
g = 1.4;
k = 0;
z = 0;
b = 0.166667;
syms n;
x2 = symfun(sym('x2(n)'),(n));
x1 = symfun(sym('x1(n)'),(n));
x3 = symfun(sym('x3(n)'),(n));
x4 = symfun(sym('x4(n)'),(n));
x5 = symfun(sym('x5(n)'),(n));
dn = .2;
n = 0:dn:1;
case1rk=@(n,x)[(x2 * x1 *n *(1 - z * x2)*(x1 - n) - 2 * x3 * n *(1 - z * x2) - x4^2 * x2 *(1 - z * x2)- G *x3 *x2 )./ (( G * x3 - (x1 - n)^2 * x2 *(1 - z * x2)) * n);
(x2 * (1 - z * x2)*(x1 * x2 * ( x1 - 2 *n)*( x1 - n) + 2* x3 * n + x4^2 * x2 ) )./ (( G * x3 - (x1 - n)^2 * x2 *(1 - z * x2)) * n * (x1 - n));
(x3 * x2 * (2 * n * x1 - n)^2 * ( 1 - z * x2) + G * x1 * (x1 - 2 *n)* (x1 - n) + x4^2 * G)./ (( G * x3 - (x1 - n)^2 * x2 *(1 - z * x2)) * n * (x1 - n));
(x4 * ( x1 + n)) ./ (n * (x1- n));
- (x5) ./ (n * (x1- n))];
[n,xs]=ode45(@(n,x) case1rk(n,x),n,[0 1],[1-b 1/b 1-b 0.01 0.02]);
错误是
使用 odearguments 时出错(第 93 行)@(N,X)CASE1RK(N,X) 返回长度为 1 的向量,但初始条件向量的长度为 2。@(N,X)CASE1RK(N, X) 和初始条件向量必须具有相同数量的元素。
ode45 错误(第 114 行)[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
n 的范围可以在 o 到 1 之间......我怎么知道上述系统的 n 解决方案的范围......
请告诉我用于绘制图形的命令...对于 v[[Eta]]/v[1]...即 x(1)[[Eta]]/x(1)[1]...在存在解的 n 范围内
请指导我...