-
我很想告訴你,但我忘記了什麼是字串截斷。
-
公式有沒有錯誤,我沒有仔細看。 從程式的設計來看,您至少有兩個錯誤:
迴圈條件 m !=0 。這裡 m 是乙個浮點數,浮點變數有精度,所以 m !
0 將為真,即您的 for 迴圈將永遠不會結束。 float 變數和 0 表示判斷,而不是 ==、!=,例如,您應該確定 m 的絕對值是否小於閾值。
找到交點 x 後,設 a = x。 也就是說,下一步是找到 (x, b) 之間的交集。 但是,如何確保交點在(x,b)之間而不是(a,x)之間呢?
這裡的設計存在乙個問題,找到交點 x 後,應該確定 f(x) 的值。 知道 f(a) <0 和 f(b) >0,如果 f(x) <0,那麼下一步應該在 (x, b) 之間,但如果 f(x) >0,那麼下一步應該在 (a, x) 之間。
我做了實驗,發現這個函式不能與這種方法收斂。 當最終交點收斂時,不能減小對應的 y 值。
int main()
else 迴圈的目的是繼續查詢橫坐標,直到 y 值等於 0,然後找到近似根。
printf("%f", x);
return 0;
對於太高階的函式,這種方法似乎效果不佳。 您可以通過更改 ss 函式較小的次數來嘗試此方法。
-
設一元方程為 。 f(x)
其中 f(x) 是實區間 d 上的連續函式。
如果它是對的,就不難證明這一點。
x1,x2∈d(x1
x2),有。f(x1)
f(x2)0,則 f(x) 在區間 (x1, x2) 中至少有乙個。
我們對曲線 y 感興趣
(x1, x2)中f(x)的影象是線性近似的,即它被視為傳遞點。
P1 (x1, f(x1)), p2 (x2, f(x2))。 (f(x2)
f(x1))
x2x1)(y
f(x1))
xx1).然後,方程的根大約是字串 p1p2 在 x 軸上交集的 x 坐標(這是一條與 x 軸相交的直線)。
我們在上弦上做 y
0、弦的截距可求解:x
f(x2)f(x1))
x2x1))
x1………#
這就是方程 f(x)。
0 的第乙個近似值。
寫成 x3
然後我們計算 f(x3),如果我們足夠幸運,f(x3)0,我們找到了方程的根。 當然,通常就是這樣。 f(x3)0 或 f(x3)。
會有這個。 f(x1)
f(x3) 或。 f(x2)
f(x3) 重複上述步驟,即再次使用 ( ) 以獲得方程 f(x)0 的更精確近似值。
通過上述足夠多的步驟,可以獲得任意精度方程的根。
這就是字串截斷方法用於計算一元方程根的近似值的方式。
其實學C並不難,關鍵是要找個適合自己的老師或者自學**,報名上課的時候沒學,然後就沒在網上學過**,我一開始就看了,夏老師的,感覺講課很簡潔明瞭, 你聽的時候能理解的那種,你說的就是關鍵,和別人不同的是,有很多難懂的概念和隱喻的例子,比如我最近看到的陣列比作乙個有序的盒子,我一下子就明白了陣列變數和賦值。比以前看的好多了,郝斌和曾毅的累贅就像看課本一樣。