首页 > 其他分享 >牛顿迭代求根公式

牛顿迭代求根公式

时间:2023-04-19 19:56:14浏览次数:37  
标签:方程 迭代 float 牛顿 fd x0 include 求根

1,问题描述:
编写用牛顿迭代法求方程根的函数。方程为ax+bx’+cx+d=0,系数a,b,c,d由主函数输入。求x在1附近的一个实根。求出根后,由主函数输出。

2.问题分析:
牛顿迭代法是取x之后,在这个基础上,找到比更接近的方程的根,一步一步迭代,从而找到更接近方程根的近似根。

3.算法设计
程序流程分析:
(1)在1附近找任一实数作为x。的初值,我们取1.5,即xo=1.5。

(2)用初值代入方程中计算此时的f(x)及f'(x);程序中用变量f描述方程的值用fd描述方程求导之后的值。

(3)计算增量 h=f/fd。

(4)计算下一个x:x=x0-h。

5)用新产生的x替换原来的xo,为下一次迭代做好准备。

(6)若|x-xo|>=le-5,则转到第(3)步继续执行,否则转到步骤(7)。

(7)所求x就是方程ax3+bx2+cx+d=0的根,将其输出。

4.确定程序框架:
该程序的主体结构如下:

#include<stdio.h>

#include<math.h>

main()

{/*输入方程的系数*/

/*用牛顿迭代法求方程的根*/

/*输出所求方程的根*/

5.源代码:

 

#include<stdio.h>

#include<math.h>

int main()

{

float solution(float a,float b,float c,float d);
float a,b,c,d,x;
printf("请输入方程的系数:");
scanf("%f %f %f %f",&a,&b,&c,&d);
x=solution(a,b,c,d);
printf("所求方程根为x=%f",x);
}
float solution(float a,float b,float c,float d)
{
float x0,x=1.5,f,fd,h;
do
{
x0=x;
f=a*x0*x0*x0+b*x0*x0+c*x0+d;
fd=3*a*x0*x0+2*b*x0+c;
h=f/fd;
x=x0-h;

}
while(fabs(x-x0)>=1e-5);
return x;


}

6.流程图:

 

标签:方程,迭代,float,牛顿,fd,x0,include,求根
From: https://www.cnblogs.com/tianpeisen/p/17334431.html

相关文章

  • Altair SimSolid快速设计迭代的结构分析
    通过在几分钟内对功能齐全的CAD组件执行结构分析,AltairSimSolid是面向设计师、工程师和分析师的改变传统设计规则的仿真技术。它消除了几何准备和网格划分:传统结构仿真中执行的两项耗时、专业知识广泛且容易出错的任务。 可以在现实条件下快速模拟多个设计场景。可以使用任......
  • 重学Java设计模式-行为型模式-迭代器模式
    重学Java设计模式-行为型模式-迭代器模式内容摘自:https://bugstack.cn/md/develop/design-pattern/2020-06-23-重学Java设计模式《实战迭代器模式》.html#重学-java-设计模式-实战迭代器模式「模拟公司组织架构树结构关系-深度迭代遍历人员信息输出场景」迭代器模式介绍图......
  • 浅析python中的生成器和迭代器
    一、什么叫生成器?在Python中,一边循环一边计算的机制,称为生成器:generator二、怎么创建生成器1.生成器表达式()生成器表达式返回一个生成器对象,需要用一个变量名来接收g=(x*3forxinrange(5))#打印g,返回一个生成器对象print(g)#<generatorobject<genexpr>at0x000......
  • 牛顿迭代法求方程根
    一、问题描述:编写用牛顿迭代法求方程根的函数。方程为ax3+bx2+cx+d=0,系数a,b,c,d由主函数输入。求x在1附近的一个实根。求出根后,有主函数输出。牛顿迭代法的公式是:x=x。-(f(x。)/f'(x。)),设迭代到|x-x.。|<=10-5时结束。二、设计思路1、在1附近找任一实数作为的初值x。,我们去1......
  • Rust语言 学习12 闭包和迭代器
    一、闭包入门usestd::thread;usestd::time::Duration;fnmain(){letspecified_value=10;letrandom_number=7;generate_workout(specified_value,random_number);}fngenerate_workout(intensity:u32,random_number:u32){//定义一个函数闭包......
  • 1.5牛顿迭代法
    1.题目编写用牛顿迭代法求方程根的函数。方程为ax^3+bx^2+cx+d=0,系数a,b,c,d由主函数输入。求x在1附近的一个实根。求出根后,由主函数输出。牛顿迭代法的公式是:x=x-f(xo),设迭代到|x-xal≤10-5时结束。2.问题分析f'(x)牛顿迭代法是取x之后,在这个基础上,找到比x更接近的方程的根,一步一......
  • 牛顿迭代法求方程根(1)
    问题描述:问题描述:用牛顿迭代法求方程的根方程为aX3+bX2+cx+d,有一根在1附近要求迭代至10-5次方以内 解题思路:问题分析:牛顿迭代法是不断接近根的方法,背景:多数方程不存在求根公式,因此求精确根比较复杂,甚至不可解,从而寻找方程的近似解就显得很重要。方法是使用*f(x)*的泰勒级......
  • m规则LDPC和非规则LDPC误码率matlab对比仿真,并对比不同译码迭代次数的误码率
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要LDPC码是麻省理工学院RobertGallager于1963年在博士论文中提出的一种具有稀疏校验矩阵的分组纠错码。几乎适用于所有的信道,因此成为编码界近年来的研究热点。它的性能逼近香农极限,且描述和实现简单,易于进行理论......
  • 牛顿迭代法求方程根
      1.在1附近找任一实数作为x0的初值,取1.5,x0=1.5;   2.分别计算f(x),f'(x)的值   3.令h=f(x)/f'(x);   4.x=x0-h;令x0=x准备进行下一次循环;   5.若|x-x0|>=1e-5,则继续进行循环,反之输出x的值;         #include<iostream>......
  • [软件工程]小议迭代计划如何做
    对话原文地平风线11:07:05项目计划,是否在一开始就写清楚各次迭代的内容青润11:07:44不是的。地平风线11:08:35那是每一次迭代时,再往里面补充吗?青润11:08:36很多时候,迭代在刚开始都是概括的,只有马上要做的那个迭代才会做到很细致的程度。......