我是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代码中,我将x替换为x,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的范围可以在0到1之间.....我怎么知道上述系统的n个解的哪个范围存在...
请告诉我用于绘制图表的命令...对于v [η] / v [1] ...即。 x(1)[η] / x(1)[1] ...在存在溶液的n的范围内
请指导我......