//拟牛顿法求解非线性方程组
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
#define eps 0.0000001 //精度
#define Max 1000 //迭代次数
#define n 3 //方程组未知数个数
class netn
{
private:
double *x, *f, t, h;
double **a, *b;
public:
netn (int nn)
{
int k;
x = new double[n]; //动态分配内存
f = new double[n];
b = new double[n];
a = new double*[n];
for (k=0; k<n; k++) a[k] = new double[n];
t=0.1;//拟牛顿法的控制变量 t
h=0.1;//拟牛顿法的增量 h 初值
x[0]=1.0;//设置拟牛顿法解的一组初值,一对初值不能一样,3 个值一样可以
x[1]=0.0;
x[2]=1.0;
}
void setx0 (double a1,double a2,double a3);
void sett(double tt){t=tt;}
void seth(double hh){h=hh;}
void netn_root (); //执行拟牛顿法
void gauss (); //全选主元 Gauss 消去法
void output (); //输出非线性方程组的一组解到文件并显示
void func (double *); //计算方程组各左端函数值 f
~netn ()
{
int k;
for (k=0; k<n; k++) { delete [] a[k]; }
delete [] a;
delete [] x, f, b;
}