MATLAB中常微分方程求解系统的误差分析
我试图在MATLAB中解决以下Toda ODE系统: a_k'=2*(b_k^2-b_(k-1)^2)对于k=1,…,m和b_0=b_m=0 对于k=1,…,m-1,b_k'=b_k*(a_(k+1)-a_k) 具有任意初始条件(b为非零)。我尝试了以下代码:MATLAB中常微分方程求解系统的误差分析,matlab,ode,Matlab,Ode,我试图在MATLAB中解决以下Toda ODE系统: a_k'=2*(b_k^2-b_(k-1)^2)对于k=1,…,m和b_0=b_m=0 对于k=1,…,m-1,b_k'=b_k*(a_(k+1)-a_k) 具有任意初始条件(b为非零)。我尝试了以下代码: syms t syms a_1(t) a_2(t) a_3(t) a_4(t) a_5(t) a_6(t) a_7(t) a_8(t) a_9(t) a_10(t) syms b_1(t) b_2(t) b_3(t) b_4(t) b_5
syms t
syms a_1(t) a_2(t) a_3(t) a_4(t) a_5(t) a_6(t) a_7(t) a_8(t) a_9(t) a_10(t)
syms b_1(t) b_2(t) b_3(t) b_4(t) b_5(t) b_6(t) b_7(t) b_8(t) b_9(t)
a_1_10 = [a_1; a_2; a_3; a_4; a_5; a_6; a_7; a_8; a_9; a_10];
a_1_9 = [a_1; a_2; a_3; a_4; a_5; a_6; a_7; a_8; a_9];
a_2_10 = [a_2; a_3; a_4; a_5; a_6; a_7; a_8; a_9; a_10];
b_1_10 = [b_1; b_2; b_3; b_4; b_5; b_6; b_7; b_8; b_9; 0];
b_0_9 = [0; b_1; b_2; b_3; b_4; b_5; b_6; b_7; b_8; b_9];
b_1_9 = [b_1; b_2; b_3; b_4; b_5; b_6; b_7; b_8; b_9];
eqns_a = diff(a_1_10) == 2.*(b_1_10.^2 - b_0_9.^2);
eqns_b = diff(b_1_9) == b_1_9 .* (a_2_10 - a_1_9);
eqns = [eqns_a; eqns_b];
init_a = a_1_10(0) == randn(10,1);
init_b = b_1_9(0) == randn(9,1);
init = [init_a; init_b];
S = dsolve(eqns, init);
但我一直在犯错误:
Error using mupadengine/feval (line 163)
The equations are invalid.
Error in dsolve>mupadDsolve (line 336)
T = feval(symengine,'symobj::dsolve',sys,x,options);
Error in dsolve (line 193)
sol = mupadDsolve(args, options);
我还希望能够为许多不同的m值(即大于或小于10的函数向量)运行此代码,但如果需要,我不介意手动执行
谢谢你的帮助 你期待解析解吗?我想我应该期待。
a_1_10(0)
不是有效的Matlab语法,Matlab索引从1开始,而不是从0开始。这可能就是问题所在。