2015-02-05 55 views
0

我被問到在一個任務中使用歐拉方法來確定t和y從t = 0:1000的值。我有所有的基本代碼和參數,但當我把我的歐拉方程中,我得到錯誤代碼請幫助:在作業A(I)= B中,B和I中的元素數量必須相同。 MATLAB

在一個賦值A(I)= B中,B和I中的 元素的數量必須相同。

Project1(第24行)中的錯誤 Ay(i + 1)= Ay(i)+(dAy)* x;

如何在向量和標量之間更改這些變量以允許公式運行?我完整的代碼可以在下面找到:

dt=x; 
Ay=zeros(1,1001); 
Ay0=1250; 
Ay(1) = Ay0; 
t=0; 
y=0; 
t=0:dt:1000; 
for i=1:1000 
    if y > 10 
     Qout=3*(y-10).^1.5; 
    else 
     Qout=0; 
    end 
    Qin=1350*sin(t).^2; 
    dAy=Qin-Qout; 
    Ay(i+1) = Ay(i) + dAy*dt; 
end 
plot(t,y); 

回答

1

問題是你的變量「Qin」不是一個數字,它是一個包含整個向量t的sin值的向量。同樣,你的「dAy」也是一個向量。因此它不能存儲在變量Ay中。
如果DT = X = 1時,只需更換與罪(ⅰ)SIN(t)的即 取代

秦= 1350 * SIN(t)的^ 2。 , Qin = 1350 * sin(i)。^ 2;

+1

或甚至'Qin = 1350 * sin(t(i))。^ 2;'。雖然結果在數字上相同,但它使代碼更易於閱讀和理解。 – am304

1

問題就出在你的代碼行:

Ay(i+1) = Ay(i) + dAy*dt; 

天* DT返回一個向量。

當你將它添加到Ay(i)時,你仍然會得到一個向量。

Ay(i + 1)是矢量內的單個元素。

您無法將矢量數量分配給矢量內的元素。

相關問題