编写程序,用牛顿法求方程x^3-x-1在1.5附近的根

简介: 编写程序,用牛顿法求方程x^3-x-1在1.5附近的根

1.实验目的


1、掌握计算机上常用的一些求非线性方程的近似根的数值方法(对分区间法、迭代法、牛顿法、弦位法),并能比较各种方法的异同点;

2、掌握迭代的收敛性定理;

3、正确应用所学方法求出给定的非线性方程满足一定精度要求的数值解。


2.实验环境


win11、DEV-C++


3.实验内容


编写程序,用牛顿法求方程在1.5附近的根,

方案1:使用牛顿法并取x0=1.5,迭代十次。

方案2:取x0=0,使用同样的公式,迭代十次,观察比较并分析原因。


4.基本思想


牛顿迭代法是用数值的方法来求解非线性方程组的根或其极大极小值,基本思想是:对于非线性函数f(x),根据泰勒公式得到x附近某个点展开的多项式可用来近似函数f(x)的值,该多项式对应的函数为F(x),求得F(x)的极小值作为新的迭代点,然后继续在新的迭代点泰勒公式展开,直到求得的极小值满足一定的精度。


5.流程图



35aa195a1199450ea47b4ed03298c41a.png



6.代码


#include<iostream>
#include<cmath>
using namespace std;
double f(double x);   //f(x)为需要求解方程的对应函数
double f1(double x);   //f1(x)为f(x)的一阶导数
int main(void)
{
  double N;  //N为最大迭代次数;
  double x0, x1;    //x0为运用牛顿法时选取的初值;x1为迭代初值的下一次迭代值
  int count;  //count为当前迭代次数
  cout << "请输入迭代初值:";
  cin >> x0;
  cout << "请输入最大迭代次数:";
  cin >> N;
  count = 0;
  do
  {
    count++;   //迭代次数自增1
    if (count > N)
    {
      break;
    }
    else
    {
      x1 = x0 - f(x0) / f1(x0);
      cout << "第" << count << "次迭代,方程的近似根为:" << x1 << endl;
      //交换x0与1的值,便于进行下一次迭代
      double temp;
      temp = x1;
      x1 = x0;
      x0 = temp;
    }
  } while (1);
cout << "达到计算精度使f(x)=0的解为: " << x0 << endl;
  return 0;
}
double f(double x)   //原函数
{
  double result = x*x*x-x-1;
  return result;
}
double f1(double x)    //导函数
{
  double result = 3*x*x-1;
  return result;


7.结果及分析


20873a70f4664f5eb5707eb473e85f13.png


当初值为0时,大约要迭代22次后,才能把最终值确定选来,而初值为1.5的时候在五六次的时候就可以确定结果了;此次实验要求迭代次数为10次,所以初值为零时并没有得到最后的结果。


2.参考资料  


参考并修改部分代码。

版权声明:本文为CSDN博主「Spring-_-Bear」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_51008866/article/details/115869059


计算方法引论(第四版)

目录
相关文章
|
机器学习/深度学习 算法
算法分析 | 第三套(渐近符号)
算法分析 | 第三套(渐近符号)
97 0
|
算法
秒懂算法 | 递推方程求解方法
时间复杂度和空间复杂度表示为递推方程的两种求解方法。
332 1
秒懂算法 | 递推方程求解方法
|
Java
一元二次方程方程的类
一元二次方程方程的类
115 0
|
算法 C语言
06【C语言 & 趣味算法】牛顿迭代法求方程根(可回看)
06【C语言 & 趣味算法】牛顿迭代法求方程根(可回看)
06【C语言 & 趣味算法】牛顿迭代法求方程根(可回看)
|
存储 算法
算法 |【实验5.3】:一元三次方程的根-连续区间的二分搜索求近似解
算法 |【实验5.3】:一元三次方程的根-连续区间的二分搜索求近似解
159 0
算法 |【实验5.3】:一元三次方程的根-连续区间的二分搜索求近似解
|
机器学习/深度学习
【组合数学】递推方程 ( 非齐次部分是 指数函数 且 底是特征根 | 求特解示例 )
【组合数学】递推方程 ( 非齐次部分是 指数函数 且 底是特征根 | 求特解示例 )
156 0
|
机器学习/深度学习
【组合数学】递推方程 ( 特解形式 | 特解求法 | 特解示例 )
【组合数学】递推方程 ( 特解形式 | 特解求法 | 特解示例 )
287 0
|
机器学习/深度学习 人工智能 移动开发
【组合数学】递推方程 ( 递推方程内容概要 | 递推方程定义 | 递推方程示例说明 | 斐波那契数列 )
【组合数学】递推方程 ( 递推方程内容概要 | 递推方程定义 | 递推方程示例说明 | 斐波那契数列 )
207 0
|
机器学习/深度学习
【组合数学】递推方程 ( 递推方程示例 1 | 列出递推方程 )
【组合数学】递推方程 ( 递推方程示例 1 | 列出递推方程 )
138 0