求解一元多次方程的兩種方法:牛頓迭代法和二分法
阿新 • • 發佈:2018-12-26
求解方程x*x*x-2*x-1=0,C語言實現
一:牛頓迭代法,牛頓迭代法是從泰勒公式中取前兩項構成線性近似方程,從x0開始,一步一步接近近似解,直到誤差在限定範圍內。
//牛頓迭代法求求解方程的根 #include <stdio.h> #include <math.h> int main() { double f(double x); double fd(double x); double x0,x1=3; do { x0=x1; x1=x0-f(x0)/fd(x0); } while(fabs(x1-x0)>=1e-5);//1e-5為精確度 printf("根為:%f\n",x1); return 0; } double f(double x) { return x*x*x-2*x-1; } double fd(double x) { return 3*x*x-2; }
二:二分法
#include <stdio.h> #include <math.h> // 二分法求方程的解 int main() { double f(double x); double x0=1,x1=2,root; do { double mid=(x0+x1)/2; if(f(mid)==0) { root==mid; break; } else if(f(x0)*f(mid)<0) { x1=mid; } else if(f(x1)*f(mid)<0) { x0=mid; } }while(fabs(x0-x1)>=1e-5);//fabs(m)的使用方法 printf("根為:%f",(x0+x1)/2); return 0; } double f(double x) { return x*x*x-2*x-1; }