我想這裏描述來實現的數值receipes功能樣條和夾板:數值Recipies樣條
http://www.arcetri.astro.it/irlab/library/recipes/bookcpdf/c3-3.pdf - 第3.3節
的代碼仍然是相當混亂給我。有人可以解釋這個數字的含義嗎?
if(yp1>0.99e30) - 這個數字是多少?
或者如果有人可以給一些鏈接來解釋這更多,我將不勝感激。
謝謝。
我想這裏描述來實現的數值receipes功能樣條和夾板:數值Recipies樣條
http://www.arcetri.astro.it/irlab/library/recipes/bookcpdf/c3-3.pdf - 第3.3節
的代碼仍然是相當混亂給我。有人可以解釋這個數字的含義嗎?
if(yp1>0.99e30) - 這個數字是多少?
或者如果有人可以給一些鏈接來解釋這更多,我將不勝感激。
謝謝。
Yp1和Ypn分別是1和n處插值函數的第一個導數。 所以derivitive 1 = YP1
插值功能通過觀察在鏈路再次,這是我爲什麼他們使用(YP> 0.99e30) []存儲爲浮動u的取值意見。可以存儲在浮點數中的最小值爲1.2e-38(根據此鏈接http://floating-point-gui.de/formats/fp/)。現在,用於計算u對應的功能[1]是現在
u[1]=(3.0/(x[2]-x[1]))*((y[2]-y[1])/(x[2]-x[1])-yp1);
Let (3.0/(x[2]-x[1]) = A, (y[2]-y[1]) = B, (x[2]-x[1])-yp1) = C.
u[1]= A * (B/C);
如果YP是一個非常大的數目(例如黃頁> 1e30)。這意味着C是一個很大的數字。這意味着B/C是一個非常小的數字,這意味着A *(B/C)〜= 0(爲了準確存儲,要小)。因此,基本上說,如果一階導數太大(或太小)不能用於不使用它的位置(稱爲自然樣條並且具有O(h^4)的誤差),並且如果它們可以使用它們,將使用一個鉗位樣條(它有一個誤差O(h^2),這意味着它比自然樣條方法更準確)
對於Ypn也是如此。
請注意,您應該在另一個檢查中添加if(Yp> 10e30)來檢查負值。 等。
if((Yp > 10e30 || Yp < -10e30))
同樣爲YPN
1的斜率不是45度角嗎?所以,如果它是1或更大,那麼我們把它歸零?否則,我們做一些不可思議的計算?基本上樣條線計算功能和夾板得到該功能上的一個點? – user1876942
推薦答案見上文 –
'0.99e30'指 「0.99乘以10升高到功率30」。用C語言編寫... – sgarizvi