Октава - Система дифференциальных уравнений с Изодом - PullRequest
0 голосов
/ 05 февраля 2019

вот моя проблема.Я пытаюсь решить систему двух дифференциальных уравнений благодаря двум функциям ниже.Часть кода, которая доставляет мне некоторые неприятности, - это переменная «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

Я знаю, что моя ошибка происходит из-за несоответствияРазмер между некоторыми переменными, но я искал ошибку в течение нескольких дней, и я не вижу.Может ли кто-нибудь попытаться дать и объяснить мне эффективную коррекцию?Спасибо

1 Ответ

0 голосов
/ 05 февраля 2019

Ошибка может исходить от вашей функции f2.Его первый аргумент x должен иметь то же измерение, что и x0, поскольку x0 является начальным условием x.

В вашем случае, каким бы ни был ваш первый аргумент f2игнорируется, поскольку в вашей функции x = dlmread('data_txt.txt'); это кажется ошибкой.

Тогда xdot(1) = ((rho-beta)/g)*x(1) + l*x(2); будет проблемой, поскольку rho - это вектор.

Вам необходимопроверьте размеры x и rho.

...