C 迭代法求开方 牛顿迭代法求根近似值
#include <stdio.h> #include <math.h> double f(double x); double f2(double x); int main(){ //利用迭代法求√a的值 int a=7; double s1=0; double s2=0; s2=a; while( fabs(s1-s2)>1e-5 ){//10^-5 s1=s2;//进行新的一轮计算 //原来的后一项是现在的第一项 s2=(s1+a/s1)/2; } printf("%lf",s2); //利用牛顿迭代法求方程的根 //有这么一个方程2x^3+4x^2+3x-6=0 //则令f(x)=2x^3+4x^2+3x-6 求出f'(x)=6x^2-8x+3 //则下一个近似方程解x(n+1)和上一个解x(n)的关系:x(n+1)=x(n)-f((xn))/f'(x(n)) //下面求来求2x^3+4x^2+3x-6=0方程的解 利用上述代码来求该方程在x=1.5附近的根 //当f(x)的小于等于到10^-6次方就停止 double y=1.5; double x=1.5; while(fabs(y)>(1e-6)){ y=f(x); x=x-y/f2(x); } printf("\n%lf",x); } double f(double x){ return 2*pow(x,3)-4*pow(x,2)+3*x-6; } double f2(double x){ return 6*pow(x,2)-8*x+3; }