• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C语言实现牛顿迭代法解方程详解

C语言实现牛顿迭代法解方程详解

作者:Engineer-Mr-Yang 字体:[增加 减小] 来源:互联网 时间:2017-05-28

Engineer-Mr-Yang 通过本文主要向大家介绍了牛顿迭代法c语言,牛顿迭代法c语言程序,牛顿迭代法c,牛顿迭代法c 程序,牛顿迭代法求根c语言等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

 C语言实现牛顿迭代法解方程详解

利用迭代算法解决问题,需要做好以下三个方面的工作:

一、确定迭代变量

在可以用迭代算法解决的问题中,我们可以确定至少存在一个可直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量。

二、建立迭代关系式

所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系)。迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成。

三、对迭代过程进行控制

在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题。不能让迭代过程无休止地执行下去。迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定。对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析得出可用来结束迭代过程的条件。

接下来,我介绍一种迭代算法的典型案例----牛顿-拉夫逊(拉弗森)方法

  牛顿-拉夫逊(拉弗森)方法,又称牛顿迭代法,也称牛顿切线法:先任意设定一个与真实的根接近的值x0作为第一次近似根,由x0求出f(x0),过(x0,f(x0))点做f(x)的切线,交x轴于x1,把它作为第二次近似根,再由x1求出f(x1),过(x1,f(x1))点做f(x)的切线,交x轴于x2,……如此继续下去,直到足够接近(比如|x- x0|<1e-6时)真正的根x*为止。

而f '(x0)=f(x0)/( x1- x0) 

所以 x1= x0- f(x0)/ f ' (x0)。

我们来看一副从网上找到的图:

接下来,我们来看一个例子:

我们还是直接上代码:

例子:用牛顿迭代法求下列方程在值等于2.0附近的根:2x3-4x2+3x-6=0。

#include <stdio.h> 
#include <math.h>  
int main(void) 
{ 
  float x,x0,f,f1;  
  x = 2.0; 
  do{  
      x0=x; 
      f=2*x0*x0*x0-4*x0*x0+3*x0-6; 
      f1=6*x0*x0-8*x0+3; 
      x=x0-f/f1;  
  //函数fabs:求浮点数x的绝对值 
  //说明:计算|x|, 当x不为负时返回 x,否则返回 -x    
  }while(fabs(x-x0)>=1e-5); 
   printf ("%f\n",x); 
  return 0 ; 
 } 
</div>

执行结果:

当x=1.5时,方程2x3-4x2+3x-6=0。附近的根为2.000000 。

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C语言实现牛顿迭代法解方程详解

相关文章

  • 2017-05-28关于c语言指针的两处小tip分享
  • 2017-05-28深入线性时间复杂度求数组中第K大数的方法详解
  • 2017-05-28剖析C++编程当中指针作为函数参数的用法
  • 2017-05-28C++编程中私有和保护以及公有的类成员访问控制
  • 2017-05-28Cocos2d-x学习笔记之开发环境搭建
  • 2017-05-28用C++面向对象的方式动态加载so的方法
  • 2017-05-28websocket++简单使用及实例分析
  • 2017-05-28全面了解结构体、联合体和枚举类型
  • 2017-05-28C++实现将输入复制到输出的方法
  • 2017-05-28c语言 跳台阶问题的解决方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C语言实现在数组A上有序合并数组B的方法
    • 浅谈C++ 基类指针和子类指针的相互赋值
    • 基于条件变量的消息队列 说明介绍
    • C++实现判断字符串是否回文实例解析
    • C语言system 自动关机函数代码
    • 深入Windows下的回车是回车换行(\r\n)还是换行回车(\n\r)的详解
    • gdb调试命令的使用及总结
    • 浅析C语言中assert的用法
    • C++模板之特化与偏特化详解
    • C++继承中的访问控制实例分析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有