迭代求方程的根c++

迭代求方程的根c++

题目

求x³-x-1=0的根

迭代求根方法

  1. 将方程变形,求出根的收敛表达示g(x),即x=∛(x+1)。而不能变成x=x³-1,因为这个x的表达式是发散的。
  2. 选一个方程的近似根2,赋给变量x0。
  3. 将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0;
  4. 当x0与x1的差的绝对值还大于指定的精度要求时,重复步骤2、3的计算。

代码

cpp 复制代码
#include<stdio.h>
#include<math.h>
typedef double(*fpt)(double);//函数指针 
int rootX(fpt g,double initRoot,double precision,double *root){
	double x0=initRoot,x1=0;
	int n=0;//迭代次数
	do{
		printf("x%d=%.5f\n",n,x0);
		x1=x0;
		x0=g(x1);
		n++;
	} while(fabs(x0-x1)>= precision);
	*root=x0;
	printf("x%d=%.5f\n",n,x0);
	return n;
}
double f(double x){
	return pow(x+1,1.0/3.0);
}
int main(){
	double x;
	int m=rootX(f,2,0.000005,&x);
	printf("迭代%d次,根为%.5f\n",m,x);
}

说明

pow 函数

  • base 是底数,可以是任意浮点数。
  • exponent 是指数,也可以是任意浮点数。
  • 返回值是 base 的 exponent 次幂,类型为 double。
cpp 复制代码
double pow(double base, double exponent);
相关推荐
NiceCloud喜云3 小时前
Opus 4.8 的 Effort Control 怎么选:Low 到 Max 五档策略
android·java·大数据·前端·c++·python·spring
小羊在睡觉4 小时前
力扣84. 柱状图中最大的矩形
后端·算法·leetcode·golang·go
cjhbachelor4 小时前
c++继承
c++
3DVisionary4 小时前
蓝光三维扫描:医疗制造的精度焦虑怎么解
人工智能·算法·制造·蓝光三维扫描·医疗制造·三维检测·义齿检测
好评笔记4 小时前
机器学习面试八股——常用损失函数
人工智能·深度学习·算法·机器学习·校招
weixin_468466854 小时前
全局与局部注意力机制新手实战指南
人工智能·python·深度学习·算法·自然语言处理·transformer·注意力机制
肩上风骋4 小时前
C++14特性
开发语言·c++·c++14特性
_日拱一卒4 小时前
LeetCode:994腐烂的橘子
java·数据结构·算法·leetcode·深度优先
珂朵莉MM5 小时前
第七届全球校园人工智能算法精英大赛-算法巅峰赛产业命题赛第3赛季优化题--束搜索
人工智能·算法
Omics Pro6 小时前
首个!外源天然产物综合性代谢图谱
数据库·人工智能·算法·机器学习·r语言