C语言之基本算法25—牛顿迭代法求方程近似根

//牛顿迭代法!

/*

============================================================

题目:用牛顿迭代法求解3*x*x*x-2*x*x-16=0的近似解。

============================================================

*/

#include<stdio.h>

#include<math.h>

#define E 1e-8

double hs(double x)

{

return(3*x*x*x-2*x*x-16);    
//原函数

}

double dhs(double x)

{

return(9*x*x-4*x);            
//导函数

}

void main()

{

double x1=1.0,x2;

x2=x1+1.0;

while(fabs(x2-x1)>E)  
  //不管怎么变,仅仅要x1和x2能进入循环,就能够完毕求解。即x2!=x1.

{

x1=x2;

x2=x1-hs(x1)/dhs(x1);  
 //此处是用泰勒展式保留前两项推倒得出的。

读者可查找相关文献具体理解之。

}

printf("方程:3*x*x*x-2*x*x-16=0\n");

printf("解得:x=%.4lf\n",x2);

}

/*

============================================================

评: 牛顿迭代法非常好掌握。有用性较强!编程时仅仅需求得导函数。 将原函数和

导函数在程序中替换,就可以求得方程的解!

============================================================

*/

时间: 2024-10-19 20:26:20

C语言之基本算法25—牛顿迭代法求方程近似根的相关文章

C语言之基本算法11—牛顿迭代法求平方根

//迭代法 /* ================================================================== 题目:牛顿迭代法求a的平方根!迭代公式:Xn+1=(Xn+a/Xn)/2. ================================================================== */ #include<stdio.h> #include<math.h> main() { float a,x0,x1;

计算方法-C/C++牛顿迭代法求非线性方程近似根

把f(x)在x0附近展开成泰勒级数f(x) = f(x0)+f'(x0)(x-x0)+f''(x0)/2!*(x-x0)^2+...然后取其线性部分,作为非线性方程f(x) = 0的近似方程,即泰勒展开的前两项,则有f(x) = f'(x0)x - x0*f'(x0) + f(x0) = 0f'(x0)x = x0*f'(x0) - f(x0)x = x0 - f(x0)/f'(x0)得到牛顿的一个迭代序列:->x(n+1) = x(n)-f(x(n))/f'(x(n)) 例:求方程f(x) =

牛顿迭代法求方程的根

#include <stdio.h> #include <math.h> int main() {     double a,b,c,d,n,m,x,y;     while(scanf("%lf,%lf,%lf,%lf",&a,&b,&c,&d)!=EOF)     {         x=0;         m=a*x*x*x+b*x*x+c*x+d;         n=3*a*x*x+2*b*x+c;         y

c语言:用牛顿迭代法求方程在1.5附近的根:2x^3-4x^2+3x-6=0.

用牛顿迭代法求方程在1.5附近的根:2x^3-4x^2+3x-6=0. 解:牛顿迭代法又叫牛顿切线法.设f =2x^3-4x^2+3x-6,f1为方程的导数,则f1 = 6x^2 - 8x+3,且f1=(f(x0)-0)/(x0-x1),推导得:x1 = x0 - f / f1 程序: #include<stdio.h> #include<math.h> int main() { double x0,x1,f,f1; x1 = 1.5; do { x0 = x1; f = 2*x0

牛顿迭代法求方程的解

迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题.迭代法又分为精确迭代和近似迭代."二分法"和"牛顿迭代法"属于近似迭代法.迭代算法是用计算机解决问题的一种基本方法. 利用迭代算法解决问题,需要以下三个步骤: 1.确定迭代变量 在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量. 2.建立迭代关系式 所谓迭代关系式,指如何从变量的前一个值推出其下

经典算法:牛顿迭代法求平方根

//牛顿迭代法求平方根 1 double mysqrt(double num) 2 { 3 double x = num/2; 4 double y = 0; 5 do{ 6 x = x/2+num/(2*x); 7 y = x*x-num; 8 if(y<0) y = -y; 9 } while(y>0.0001); 10 return x; 11 } 12 int main(int argc, char* argv[]) 13 { 14 printf("%.3f",my

牛顿迭代法 求方程根

牛顿迭代法 牛顿迭代法(Newton's method)又称为牛顿-拉夫逊方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法.多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要. 方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根.牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0的单根附近具有平方收敛,而且该法还可以用来求方程的重根.复根,此时线性

C语言之基本算法23—二分法求方程近似根

//二分法! /* ======================================================== 题目:用二分法求解方程3x^3-2x^2-16=0的近似解. ========================================================= */ #include <stdio.h> #include <math.h> double hs(double t) { return 3*t*t*t-2*t*t-16;/

C语言之基本算法24—黄金切割法求方程近似根

//黄金切割法! /* ================================================================ 题目:用黄金切割法求解3*x*x*x-2*x*x-16=0的根. ================================================================ */ #include<stdio.h> #include <math.h> #define E 1e-8 double hs(doub