c++ 牛顿迭代法求根源码(c++函数有多个不同类型返回值的处理方法)

#include <iostream>
#include<cmath>
using namespace std;
struct result
{
    double x;
    int iter;
};
double f(double x) //原函数
{
    return  pow(x,4) - 6.4*pow(x,3) + 6.45*pow(x,2) + 20.538*x - 31.752;

}
double diff(double x,double h=0.05)//原函数的导数,h的设置影响很大,决定导数的一个步长
{
    return (f(x+h)-f(x))/h;
}
result newtoniteration(double x,int iter=0,double tol=1.0e-4)//牛顿迭代法求根
{
   result ret;
    while(1)
    {
        double dx=-f(x)/diff(x);
        x+=dx;
        iter+=1;

        if(abs(dx)<tol){
            break;
        }

        cout<<x<<" "<<iter<<endl;
    }
    ret.x=x;
    ret.iter=iter;
    return ret; //这里利用返回值有多个的时候,利用struct 结构体,自定义一个result 结构体
}
int main()
{
   result r1=newtoniteration(2);
   cout<<"迭代次数:"<<r1.iter<<endl;
   cout<<"根:"<<r1.x<<endl;
   return 0;
}


c++ 牛顿迭代法求根源码(c++函数有多个不同类型返回值的处理方法)