增值寻根法:基本思想为:从初始值x(0)开始,按规定的一个初始步长h来增值。令x(n+1)=x(n)+h,(n=0,1,2…),同时计算f(x(n+1)).在增值过程中会遇到三种情况:1. f(x(n+1))=0,此时x(n+1)即为方程根。
2. f(x(n))和f(x(n+1))同号,说明区间内无根。
3. f(x(n))和f(x(n+1))同号,说明区间内有根,则把步长缩小,直至满足精度要求为止,x(n)或x(n+1)就是满足精度的近似根。
#include<stdio.h>
double fun(double x){ //原函数
return(x*x*x+4*x*x-10);//求解方程f(x)=x*x*x+4*x*x-10=0的根,精度为10-3.
}
int main(){
double a=1.25,h=1,x=a;
printf("初始近似值为:%lf\n",a);
do{
if(fun(x)==0){printf("根为:%f",x);return 0;} /*如果初始值函数值为0,则初始值即为根*/
else if(fun(x)*fun(x+h)>0) /*如果fun(x)和fun(x+h)同号则使X加h并跳出本次循环执行下一次*/
{x=x+h;continue;}
else if(fun(x)*fun(x+h)<0) //若异号则说明在X和X+h之间存在函数根,则缩//短步长继续寻根
{h=h/10.0;}
}while(h>0.001);//当不满足精度要求时继续执行循环体
printf("根为:%f\n",x);//跳出循环说明满足精度要求则x可近似作为方程根
return 0;
}