根本的な問題の方程式の主要シリーズ6.ニュートン反復法を探します

ルート方程式のためのニュートン反復法

問題の説明
ニュートン反復法による書き込み機能のルート方程式、方程式AX ^ 3 + BX ^ 2 + CX + D = 0
の係数の入力の主な機能によってD、B、C、実根の近傍xを見つけることをルートが決定された後、主機能出力
ニュートン反復法の式は、
X = X0 - F(X0)/ F「(X0)は、反復に提供さ| X-X0 | <= 10 ^ 5の端
分析
ニュートン反復方法は、次に近いX0より方程式のこの基本検索ルート、近い方程式の根近似ルートを見つけるステップの繰り返しで、X0に撮影され
、Rは、F(X)=ルート0、rとX0初期近似値を選択されてみましょう、点(X0、F(X0))を介して曲線y = f(x)が接線Lを作るために

L式y = F(X 0)+ F「(X0)(X-X0)

Lのx軸は横軸の交点X1 = X0得られる- F(X0) / F「(X0)
Rの最初の近似であるX1と呼ばれる、ポイント上(X1を、F(X1))が曲線y = Fを作るために(X)接線、接線と横のX軸X2 = X1-F(X1)見つける / F「(X2) 二次近似と呼ばれるRは、上記のプロセスは上記プロセスRの近似値を得るために繰り返されるニュートン反復XNでありますプロセス解法
アルゴリズム設計
プログラムのフロー分析を:
| --1 1の任意の実数の近傍に見ては=初期値X0として1.5すなわち1.5 X0を取られる。
| --2式の初期値X0によってその時点で算出Fを値(X0)及び式によって記述FD誘導体後変数fの値の方程式によって記述F「(X0)プログラム
|。--- 3算出デルタ= FのH / fdが
|。--4計算次のx、 X0 = X - H
| --5新たに次の反復の準備発生したXとオリジナルX0を置き換える。
| --6場合| X-X0 |> =ル。 -5 そうでなければ継続するステップ3に進み進みます7。
|。7ìXを尋ねる方程式斧^ 3 + BX ^ 2 +である CX + D = 0、根、出力

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
    float solution(float a, float b, float c, float d);     //函数功能是用牛顿迭代法求方程的根
    float a,b,c,d,x;        //x用来记录求得的方程根, abcd代表所求方程的系数
    printf("请求输入方程的系数:");
    scanf("%f %f %f %f", &a, &b, &c, &d);
    x = solution(a, b, c, d);
    printf("所求方程的根为x = %f", x);
    return 0;
}

float solution(float a, float b, float c, float d)
{
    float x0, x = 1.5, f, fd, h;   //f用来描述方程的值, fd用来描述方程求导之后的值
    do
    {
        x0 = x;     //用来求得的x的值代替x0原来的值
        f = a*x0*x0*x0 + b*x0*x0 + c*x0 + d;
        fd = 3*a*x0*x0 + b*x0 + c;
        h = f/fd;
        x = x0 - h;
    } while (fabs(x-x0) >= 1e-5);
    return x;
}

/* !< input */
2 -4 3 -6
/* !< output */

おすすめ

転載: www.cnblogs.com/xuzhaoping/p/11484499.html