求方程解,牛顿迭代和二分

牛顿迭代

#include<iostream>
#include<string.h>
#include<math.h>
using namespace std;
float f(float x){
    return (pow(x,3)-5*pow(x,2)+16*x+80);
}
float f1(float x){
    return (3*pow(x,2)-5*x+16);
}
int main(){
    //  x*x*x-5*x*x+16*x+80;
    float x=1,x1,y1,y2;
    
    cin>>x;
    do{
        x1=x;
        y1=f(x);
        y2=f1(x1);
        x=x1-y1/y2;
        
    }while(fabs(x-x1)>=0.000001);
        cout<<x1<<endl;
        system("pause");

    return 0;
}

如果要计算  根下3  ,则方程为  x*x-3=0;

fabs  对浮点数的取绝对值

用二分法求解方程:

#include<iostream>
#include<math.h>
using namespace std;


double f(double  x){
    return pow(x,x)-10;
}
int main(){
    double a=2,b=3,limit=0.00001;
    while((b-a)>limit){
        if(f((a+b)/2)*f(b)<0){
            a=(a+b)/2;            
        }
        else //同号
            b=(a+b)/2;
    }
    cout<<a<<" "<<b<<endl;
    system("pause");
    return 0;
}

x^x=10;

 

posted @ 2015-04-07 21:33  咸咸的告别  阅读(258)  评论(0编辑  收藏  举报