[计算机数值分析]迭代法求方程的根

Posted Spring-_-Bear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[计算机数值分析]迭代法求方程的根相关的知识,希望对你有一定的参考价值。

问题描述

迭代法是一种逐次逼近法,求根过程分为两步,第一步先提供某个猜测值,即所谓迭代初值,然后再将迭代初值逐步加工成满足精度要求的根。对于一般的方程f(x) = 0, 为使用迭代法,需将它改写成x = φ(x)的形式,式中φ(x)称迭代函数。

例:求方程 x³ - x - 1 = 0的唯一正根,则将方程改写成:x = x⅓,则迭代函数φ(x) = x⅓。

运行示例

在迭代次数允许的条件下找到满足精度要求的根

在迭代次数不允许的条件下没找到满足给定精度的根

源码

//程序实现用迭代法求方程的根
#include<iostream>
#include<cmath>
using namespace std;

//用户自定义的迭代函数f(x)
double function(double x)

	double result = pow(x + 1, 1.0 / 3);
	return result;


int main(void)

	double x0, x1, accrucy, item;   //x0为迭代初值,x1=f(x0);accrucy为精度
	int n, k = 1;   //n为允许的最大迭代次数

	cout << "请输入迭代初值:";
	cin >> x0;
	cout << "请输入精度:";
	cin >> accrucy;
	cout << "请输入您想要的最大迭代次数:";
	cin >> n;

	do 
	
		x1 = function(x0);

		if (abs(x0 - x1) < accrucy)    //根的近似解符合要求,输出近似根
		    
			cout << "近似解为:" << x1;
		
		else   //继续下一次迭代,直至找到符合精度要求的根或最大迭代次数用完
		    
			if (k > n)   //允许迭代n次,当迭代次数大于n时结束迭代
			    
				cout << "迭代次数耗尽,迭代结束!\\n未找到符合精度要求的根!!!" << endl;
				break;
			
			else 
			
				//输出本次迭代信息
				cout << "第" << k << "次迭代!\\t迭代函数的值为:" << x1 << "\\t此次迭代精度为:" << abs(x1 - x0) << endl;
				//交换x0与x1,为下一次迭代做好准备
				item = x0;
				x0 = x1;
				x1 = item;
				k++;
			
		
	 while (abs(x0 - x1) >= accrucy);   //循环进行条件为找到的根不符合精度要求

	return 0;

以上是关于[计算机数值分析]迭代法求方程的根的主要内容,如果未能解决你的问题,请参考以下文章

[计算机数值分析]牛顿下山法求方程的根

数值分析实验之非线性方程求根(MATLAB实现)

matlab中牛顿法编程

如何用牛顿迭代法求解方程

python实现迭代法求方程组的根

[计算机数值分析]牛顿法求解方程的根