記錄學習過程
寫於2020.11.14
#include
//呼叫標準函式庫,使輸入輸出函式可用
#include
//呼叫數學函式庫
#define n 100
#define eps 1e-6
//定義全域性變數eps(根的容許誤差),delta(函式絕對值的容許誤差)
#define eta 1e-8
double a, b, c, d;
//定義全域性變數a,b,c,d
doublef1(
double x)
//定義double型子函式f1,傳入x值進行運算(寫在最前,則後續被呼叫時無需宣告)
doublef2(
double x)
//定義f1的導數為f2
void
main()
//定義void型主函式,無返回引數
z =fabs
(x1)
<
1? x1 - x0 :
(x1 - x0)
/ x1;
//?為條件運算子,當滿足fabs(x1)<1時,將x1-x0 的值賦給z;否則將(x1 - x0) / x1賦給z (追求迭代最快)
x0 = x1;
//迭代,將x1的值賦給xo
printf
("x(%d)=%f\t"
, t, x0)
;//輸出第t次牛頓迭代法結果x(t)
if(t %3==
0)printf
("\n");
//隔三列換行
}while
(fabs
(z)> eps &&
fabs(f1
(x1)
)> eta)
;//&&邏輯與,全真則真;z的絕對值小於根的容許誤差或函式值的絕對值小於其容許誤差eta,終止迴圈
printf
("方程的近似根為%lf"
,x1 )
;chong:
printf
("\n\n是否繼續輸入初值:\n");
//選擇是否繼續輸入初值進行計算
printf
("1.繼續輸入初值\t 2.結束程式\n");
printf
("請選擇:");
int w;
scanf_s
("%d"
,&w)
;switch
(w)//使用選擇及結構語句switch,根據w的值選擇方案
}}
結果圖
牛頓迭代法
創新工廠的筆試題 不用庫函式sqrt 求乙個整型數n的開方,要求精度達到0.001即可。在這裡首先介紹一下牛頓迭代法 假設乙個方程為 f x 0 那麼假設其解為x0,則用泰勒級數展開之後可得 f x f x0 f x0 x x0 0 其中x為其近似解。根據上式推導出 x x0 f x0 f x0 這...
牛頓迭代法
目前接觸到的牛頓迭代法主要應用於兩個方面 1 方程求根問題 2 最優化問題。1 求解方程。並不是所有的方程都有求根公式,或者求根公式很複雜,導致求解困難。利用牛頓法,可以迭代求解。原理是利用泰勒公式,在x0處展開,且展開到一階,即f x f x0 x x0 f x0 求解方程f x 0,即f x0 ...
牛頓迭代法
欲求某方程 f x 0 的根,按照以下步驟進行求解 令x0 1 也可以選擇其他值 i 0,1,2 1 求出 f xi 和 導數f xi 2 令 x i 1 xi f xi f xi 3 將 x i 1 帶入方程 f x 計算方程值,當方程值與目標值的誤差小於預定值時,退出演算法輸出 x i 1 即為...