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