您的位置:首页 > 其它

C 迭代法求开方 牛顿迭代法求根近似值

2013-03-26 13:48 357 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: