倍频程-如何用lsode解微分方程组

时间:2019-02-06 21:10:55

标签: octave

这是我的问题。由于以下两个函数,我试图求解一个包含两个微分方程的系统。给我带来麻烦的代码部分是变量“ 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

运行代码时,出现以下错误:

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

我知道我的错误来自哪里: “错误可能是由于函数f2引起的。它的第一个参数x应该与x0具有相同的维数,因为x0是x的初始条件。

在您的情况下,您打算成为f2的第一个参数的意图都会被忽略,因为在您的函数中您执行x = dlmread('data_txt.txt');这似乎是一个错误。

然后,xdot(1)=((rho-beta)/ g) x(1)+ l x(2);因为rho是向量,将是一个问题。

您需要检查x和rho的尺寸。”

我知道我的错误来自哪里,但我无法解决。有人可以帮助我有效地解决问题吗?

0 个答案:

没有答案