编写程序,用牛顿法求方程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


计算方法引论(第四版)

相关文章
|
API iOS开发
iOS面试关于runtime
iOS面试关于runtime
370 0
|
5月前
|
缓存 并行计算 Shell
毅硕HPC | 在HPC集群上优雅地使用conda
通过本教程,你将掌握在HPC集群中从零开始部署并高效利用Conda的核心技能。为你的课题创建一个干净的environment.yml文件,让你的科研计算之旅更加规范、高效和可复现。
597 0
|
并行计算 计算机视觉 Windows
ModelScope问题之报超时time out的错误如何解决
本合集将提供ModelScope安装步骤、配置要求和环境准备,以便用户顺利启动ModelScope进行模型开发和测试。
1100 1
|
人工智能 编解码
|
传感器 语音技术
STM32智能小车(循迹、跟随、避障、测速、蓝牙、wife、4g、语音识别)总结-2
STM32智能小车(循迹、跟随、避障、测速、蓝牙、wife、4g、语音识别)总结
STM32智能小车(循迹、跟随、避障、测速、蓝牙、wife、4g、语音识别)总结-2
|
IDE 开发工具 Android开发
【瑞萨MCU】开发环境搭建之 e2 studio
【瑞萨MCU】开发环境搭建之 e2 studio
844 0
|
测试技术
深入白盒测试:静态分析与动态分析的协同效应
【4月更文挑战第12天】 在软件开发的质量控制过程中,白盒测试作为一种重要的测试手段,它通过检查内部结构、设计和实现细节来确保代码的正确性。本文探讨了白盒测试中的两大核心方法——静态分析和动态分析,并分析了两者结合使用时如何提高软件测试的效率和有效性。文章首先概述了白盒测试的基本概念,随后分别详细讨论了静态分析和动态分析的特点和应用场景,最后通过实例说明了如何将这两种分析方法有效整合,以发现更多潜在的缺陷,从而提升软件产品的质量。
505 0
|
Web App开发 存储 缓存
CocosCreator 引擎资源加载与释放原理简析
CocosCreator 引擎资源加载与释放原理简析
779 0
|
SQL 安全 网络安全
某堡垒机 0 day sql注入漏洞
某堡垒机 0 day sql注入漏洞
某堡垒机 0 day sql注入漏洞

热门文章

最新文章