1. 程式人生 > >c++ 牛頓迭代法求根原始碼(c++函式有多個不同型別返回值的處理方法)

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; }

在這裡插入圖片描述