【弦割法】多项式方程求解的迭代程序

【弦割法】多项式方程求解的迭代程序


用弦割法求解方程式:f (x)= x^3-3x-1
取x0=2,x1=2.1


#include <cmath>
#include <iostream>
#include <iomanip>
 
double fx(double x)
{
	double f = x*x*x-3*x-1;//原函数
	return f; //f(x) = 0中的f(x)函数形式
}
void main()
{
	using namespace std;
	int N = 100,//迭代次数最大值
		k = 0;//迭代次数实际值
	double a = 2,//(a, b)为x取值区间
		b = 2.1,
		epsilon = 0.00001,//允许精度
		x = b, //初始化
		delta = b - a,//初始化
		Oldfx = fx(a),//初始化
		Newfx = fx(x);//初始化
 
	cout<<"x0 = "<<a<<endl;
	cout<<setw(15)<<"delta"<<setw(15)<<"x"<<setw(15)<<"f(x)"<<endl;
	cout<<setw(15)<<0<<setw(15)<<a<<setw(15)<<Oldfx<<endl;
	cout<<setw(15)<<delta<<setw(15)<<x<<setw(15)<<Newfx<<endl;
 
	for(int i = 0; i<N; i++)//迭代步骤
	{
		delta *= -Newfx/(Newfx - Oldfx);
		x += delta;
		k++;
		if(fabs(delta) > epsilon)
		{
			Oldfx = Newfx;
			Newfx = fx(x);
			cout<<setw(15)<<delta<<setw(15)<<x<<setw(15)<<Newfx<<endl;
		}
		else 
		{
			cout<<setw(15)<<delta<<setw(15)<<x<<endl;
			break;
		}
	}
	cout<<"迭代次数:"<<k<<endl<<"x = "<<x<<endl;
	cin>>x;//控制台停留
}

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值