2014-02-16 1 views
0

Вот мой код:Ошибка О количестве элементов в For-Loop

%Initial Conditions: 

y(1)=1; 
Dy(1)=0; 
DDy(1)=0; 
t(1)=0; 

%Parameters: 
dt = 0.1; 
nsteps =10/dt; 

for i=1:nsteps 
    t(i+1) = t(i) + dt; 
    DDy(i+1) = 12*t.*y(i) + (18*t.^2 - 6).*(y(i).^2).*Dy(i); 
    Dy(i+1) = Dy(i) + DDy(i)*dt; 
    y(i+1) = y(i) + Dy(i+1)*dt; 
end 

А вот сообщение об ошибке:

В присваивания A (I) = B, число элементов в B, и я должен быть тем же.

Ошибка в euler_croemer_de (строка 20) DDY (г + 1) = 12 * T * у (я) +. (18 * T^2 -. 6).. * (У (я)^2) * Dy (я).


Я попытался найти в Интернете, что я могу решить проблему самостоятельно. Однако, честно говоря, я не мог найти ничего полезного.

Я был бы признателен за помощь кому-то.

ответ

1

В строке

DDy(i+1) = 12*t.*y(i) + (18*t.^2 - 6).*(y(i).^2).*Dy(i); 

t содержит i+1 элементы, так что правая часть представляет собой вектор длины i+1. Однако левая часть относится к одному значению, а именно к одной записи DDy. Таким образом, вы пытаетесь присвоить вектор одной записи DDy. Отсюда и ошибка.

Возможно, вы имеете в виду t(i+1) вместо t на этой линии?

+0

О, так ошибка была в том, что я пренебрег индексом вектора t в моем цикле for? – Mack

+1

@Mack Это зависит от того, что вы намеревались сделать. Но, конечно, если вы указали вектор 't', ошибка исчезнет –