2015-11-01 100 views
-1

我已經寫在MATLAB下面的代碼,它應該會返回矢量uexact:錯誤在MATLAB

function v=uexact(x,t) 
    v=sin(2*pi*x)*exp(-4*pi^2*t); 
end 

function [ex]=test3 

    h = 1/50; 
    T=1/2500; 

    x=0:h:1; 
    t=0:T:1; 



    ex=uexact(x,t); 

end 

我得到以下警告消息:

??? Error using ==> mtimes 
Inner matrix dimensions must agree. 

Error in ==> uexact at 3 
    v=sin(2*pi*x)*exp(-4*pi^2*t); 

Error in ==> test3 at 11 
    ex=uexact(x,t); 

你能告訴在我的錯誤是?

+0

@IKavanagh我改變了它,但我再次收到警告信息: ???錯誤使用==>次 矩陣尺寸必須一致。 ==> uexact at 3的錯誤 v = sin(2. * pi。* x)。* exp(-4。* pi。^ 2. * t); 錯誤在==> test3在11 ex = uexact(x,t); –

+1

請描述你的函數應該返回什麼。 – Daniel

+0

@Daniel它應該返回矢量uexact,這是一個邊界/初始值問題的解決方案。 –

回答

1

問題是你的tx是不同的大小。然後在你的函數中,你試着重複sin(2*pi*x)這個是1x51exp(-4*pi^2*t)這就是1x2501。這是一個尺寸不匹配,正如您收到的錯誤消息中明確指出的那樣。

如果你想有一個矩陣作爲解決方案v=sin(2*pi*x)'*exp(-4*pi^2*t);會做的伎倆。

+0

非常感謝!我試圖計算有限差分後向歐拉方法的精度順序,但我沒有得到正確的結果。我可以告訴你我試過了什麼嗎? –

+0

當然,雖然我在ODE的時候生鏽了。只需編輯你的問題,這樣你的後續問題也會出現。 –

+0

@DennisKlopfer我很確定這不是最好的建議。我懷疑*其他*問題與這個問題有微小的聯繫,因此可以更加明智地添加一個新的問題。 –