我很尷尬地問這個,因爲我相信我可能會錯過某些明顯的東西,但我不知道自己出錯的地方。作爲一個更大程序的一部分,我正在研究離散化方法在方波上近似對流方程的應用。但是,我注意到,在某些情況下,我的方波的邊界被錯誤地應用。當其他地方的10.25 < = X < = 10.5和0時,它應具有1的初始條件。這是問題的一個示例:不正確的方波波形
L=20; %domain length
dx=0.01; %space step
nx=(L/dx); %number of steps in space
x=0:dx:(nx-1)*dx; %steps along x
sqr=zeros(1,nx); %pre-allocate array space
for j=1:nx
if ((10.25<=x(j))&&(x(j)<=10.5))
sqr(j)=1;
else
sqr(j)=0;
end
d=plot(x,sqr,'r','LineWidth',2); axis([10.1 10.6 0 1.1]);
drawnow;
在這種情況下,波顯示錯誤,其中x = 10.5服用和0值不是1時,像這樣:
https://dl.dropboxusercontent.com/u/8037738/project/square_wave.png
的奇怪的是,如果我將域長度更改爲不同的值,它有時會正確顯示。這是當區間的長度設定爲30,它顯示正確:
https://dl.dropboxusercontent.com/u/8037738/project/square_wave_correct.png
我真的不明白,因爲我的X陣列在0.01區間總是離散化,所以它永遠不會「錯過」時,10.5它循環通過。我希望我已經充分解釋了這個問題,如果這是我的一個愚蠢的錯誤,我提前道歉。
好極了!我忘了複製'結束'了。我發現奇怪的是需要增加容忍度,這對於人們來說肯定是一個普遍問題?儘管感謝解決方案。 – Jimog