用c语言解非线性方程割线法,割线法求解非线性方程

//用割线法求解非线性方程

#include

#include

#include

using namespace std;

class secant

{

private:

int iteration;

double eps, error, f, x_new, x_old1, x_old2;

public:

secant()

{

iteration = 0;

}

void solution();

double function(double x)

{

f = 1.55 * pow(x, -0.5) - 7.2 * x + 8.1 * x * x - 4 * pow(x, 3) - 1.3;

return f;

}

};

void main()

{

secant nonlinear;

nonlinear.solution();

}

void secant::solution() {  cout << "\n输入初始估值x0和x1:";  cin >> x_old1 >> x_old2;  cout << "\n输入公差";  cin >> eps;  if (fabs(function(x_old1)) < eps)  {   cout << "\n解是:" << x_old1 << endl;   exit(0);  }  if (fabs(function(x_old2)) < eps)  {   cout << "\n解是:" << x_old2 << endl;   exit(0);  }  do  {   iteration++;   if (x_old1 == x_old2)   {    cout << "\n遇到了错误x(i) = x(i-1),异常中断..." << endl;    exit(0);   }   x_new = x_old2 - (function(x_old2) * (x_old2 - x_old1)) / (function(x_old2) - function(x_old1));   error = fabs(function(x_new));   x_old1 = x_old2;   x_old2 = x_new;  }while (error >= eps);  cout << "\n解是:" << x_new << endl;  cout << "\n收敛于" << iteration << "次迭代" << endl; }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值