- 建立一个用牛顿迭代法求方程f(x)=0的一个实根的类equation,要求如下:
(1)私有数据成员
● float x0,x : x0为迭代初始值,x为求得的根值。
● double eps : eps为误差值。
(2)公有成员函数。
● 构造函数:初始化x0、eps的值,缺省时x0赋值0,eps赋值1。
● float root(float x0,double eps,float(*f)(float),float(*g)(float)):重新设置x0、g的值,计算方程f(x)=0的一个实根。f指针指向函数f(x),g指针指向函数fˊ(x)。计算结果保存在x中并返回该值。
● void print( ):输出x的值。
(3)编写一个程序测试该类,求的一个实根,取迭代初值为0。
#include <iostream>
#include <cmath>
using namespace std;
float f(float x){return x*x+3*x-4;}
float g(float x){return 2*x+3;}
class equation{
float x0,x;
double eps;
public:
equation(int a=0,int b=1)
{x0=a;eps=b;}
float root(float x0,double eps,float(*f)(float),float(*g)(float)){
x=x0-f(x0)/g(x0);
for(;fabs(x-x0)>eps;)
{x0=x;x=x0-f(x0)/g(x0); }
return x; }
void print(){cout<<"x*x+3*x-4的一个根为:"<<x<<endl;}
};
int main(){
equation h;
h.root(0,1E-9,&f,&g);
h.print();
return 0;}