11(非线性方程求解)不动点迭代法求函数根

不动点迭代法求函数根(非线性方程求解)

【问题描述】在[a,b]区间内寻找方程x**5-2*x-1=0的根的初始近似值位置,确定不动点迭代的初始点(可能有多个),然后使用不动点迭代法求方程的根(可能有多个根)。前后两次迭代的差的绝对值小于delta后停止迭代。

【输入形式】在屏幕上输入3个数,依次为区间左端点值a、右端点值b和所求根的精度值。各数间都以一个空格分隔。根据输入的所求根的精度值可求得delta。测试用例的输入满足:b>a, 1<=d<=8, d为正整数。

【输出形式】每一行输出一个根,保留d位小数。根据a、b的值,可能荐在0或1或多个根。若在区间[a, b]内没有根,则输出error。

【样例1输入】

-1.2 1.5 3

【样例1输出】

-1.000

-0.519

1.291

【样例1说明】输入:左端点a值为-1.2,右端点b值为1.5,前后两次迭代的差的绝对值小于delta=10**(-3)后停止迭代。输出:从小到大顺序输出三个根的值,保留3位小数。

【样例2输入】

-2 -1.2 3

【样例2输出】

error

【样例2说明】输入:左端点a值为-2,右端点b值为-1.2,前后两次迭代的差的绝对值小于delta=10**(-3)后停止迭代。输出:error,表示在区间[-2, -1.2]内没有根。

【评分标准】根据输入得到的输出准确

#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <iomanip>

using namespace std;

double func(double x)//原函数 
{
   
	return pow(x, 5) - 2 * x - 1;
}
double g_1(double x)//x=g_1(x) 求出-0.519
{
   
	return (pow(x, 5) - 1) / 2;
}
double g_2(double x)//x=g_2(x) 求出-1.000和1.291
{
   
	double result=pow((2 * x + 1), (1 / 5));
	if ((2 * x +1) < 0)
	{
   
		return -result;
	}
	else 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值