这是我的问题。由于以下两个函数,我试图求解一个包含两个微分方程的系统。给我带来麻烦的代码部分是变量“ rho”。 “ rho”是一个函数,其值是从文件中给出的,我尝试将其放入变量rho中。
function [xdot]=f2(x,t)
# Parameters of the equations
t=[1:1:35926];
x = dlmread('data_txt.txt');
rho=x(:,4);
beta = 0.68*10^-2;
g = 1.5;
l = 1.6;
# Definition of the system of 2 ODE's :
xdot(1) = ((rho-beta)/g)*x(1) + l*x(2);
xdot(2) = (beta/g)*x(1)-l*x(2);
endfunction
。
# Initial conditions for the two variables :
x0 = [0;1];
# Definition of the time-vector -> (initial time,temporal mesh,final time) :
t = linspace (1, 10, 10000);
# Resolution with the lsode routine :
x = lsode ("f2", x0, t);
# Plot of the two curves :
plot (t,x);
运行代码时,出现以下错误:
>> resolution_effective2
error: f2: A(I) = X: X must have the same size as I
error: called from
f2 at line 34 column 9
resolution_effective2 at line 8 column 3
error: lsode: evaluation of user-supplied function failed
error: called from
resolution_effective2 at line 8 column 3
error: lsode: inconsistent sizes for state and derivative vectors
error: called from
resolution_effective2 at line 8 column 3
我知道我的错误来自某个变量之间的大小不匹配,但是我已经寻找错误好几天了,但我没有看到。有人可以给我解释一下有效的纠正方法吗? 谢谢
答案 0 :(得分:0)
该错误可能来自您的函数f2
。它的第一个参数x
应该与x0
具有相同的维数,因为x0
是x
的初始条件。
在您的情况下,您打算成为f2
的第一个参数的意图都会被忽略,因为您在函数中执行x = dlmread('data_txt.txt');
似乎是一个错误。
然后,xdot(1) = ((rho-beta)/g)*x(1) + l*x(2);
将成为问题,因为rho
是向量。
您需要检查x
和rho
的尺寸。