2013-12-04 1 views
0

У меня возникли проблемы с устранением этой ошибки. Я прочитал несколько подобных вопросов, но я просто должен пропустить что-то очень простое. Следующий код использует ODE45. Есть 3 начальных условия, и мне кажется, что моя функция также выводит 3 переменные. Тем не менее, он говорит:Конфликт векторных элементов MATLAB.

«??? Ошибка с помощью ==> odearguments на 116 DBTS возвращает вектор длины 2, но длина начального условия вектора 3. Вектор, возвращаемый DBTS и начальное вектор условий должен иметь одинаковое количество элементов ».

Это мой м-файл:

function dDdt=Dbts(t,i) 
global p1 p2 p3 n V1 Gb Ib U 

I=i(1); 
X=i(2); 
G=i(3); 

dIdt=-(n*(I-Ib))+(U/V1); 
dXdt=-(p2*X)+(p3*I); 
dGdt=-(p1*G)-(X*(G-Gb))+(9.0*exp(-0.05*t)); 

dDdt=[dIdt;dXdt;dGdt]; 

Это то, что я вложил в основной:

global p1 p2 p3 n V1 Gb Ib 
p1=0.028735; 
p2=0.0228344; 
p3=.00005035; 
n=.0926; 
V1=12; 
Gb=81; 
Ib=15; 
global G X I U 
TT=[]; 
SS=[]; 
i0=[0 0 0]; 
tspan=[0 400]; 
[t,i]=ode45(@Dbts,tspan,i0); 

На данный момент ошибка я отправил выше придумывает. Я знаю, что я, должно быть, что-то просчитал, но я просто не могу это точно определить. Если бы кто-нибудь мог помочь с этим, я был бы чрезвычайно благодарен. Все, что мне нужно сделать, это графики графика 3, когда я исправляю эту проблему.

ответ

1

Я думаю, это потому, что U не определен:

>> size(U) 
ans = 

    0 0 

поэтому размер DiDt является 0x0 и, следовательно, выход Dbts является 2x1.

+0

То же самое касается 'G',' X' и 'I'. – am304

+0

А, я полностью забыл размер U. Большое вам спасибо. G, I и X, где отлично, потому что я определяю их в начальных условиях. Его всегда легче решить проблему с новым набором глаз. Еще раз спасибо! – Okari