在MATLAB中使用ode45对ODE系统使用匿名函数时出错

时间:2017-04-07 21:09:33

标签: matlab

我正在尝试在MATLAB中解决n耦合ODE的系统。代码:

clear all
n = 21;
dx = 1./(n-1);
x = [0:dx:1];
u0 = sin(0.5*n*pi*x);
f1 = @(t,u) [0, u(1:n-2)-2*u(2:n-1)-u(3:n), 2*(u(n-1)-u(n))]'/dx^2;
% f1 = @(t,u) [0; u(1:n-2)'-2*u(2:n-1)'-u(3:n)'; 2*(u(n-1)-u(n))]/dx^2;
[t,U] = ode45(f1, [0,2.5], u0');

给出错误:

Dimensions of matrices being concatenated are not consistent.
Error in t1>@(t,u)[0,u(1:n-2)-2*u(2:n-1)-u(3:n),2*(u(n-1)-u(n))]'/dx^2

u是列向量时,我从匿名函数的两个表单(一个已注释掉)中得到错误,就像通过ode45调用函数时一样。

1 个答案:

答案 0 :(得分:0)

u传递给f1的{​​{1}}是列向量。串联必须反映这一点:

ode45