c語言如何求實(shí)數(shù)根

小億
87
2024-10-11 16:34:16
欄目: 編程語言

在C語言中,可以使用牛頓迭代法(Newton’s Iteration)來求實(shí)數(shù)根。牛頓迭代法是一種求解非線性方程零點(diǎn)的迭代算法,對(duì)于求解實(shí)數(shù)根非常有效。以下是一個(gè)使用牛頓迭代法求解實(shí)數(shù)根的C語言程序示例:

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

// 定義函數(shù)f(x),這里以f(x) = x^2 - a為例
double f(double x, double a) {
    return pow(x, 2) - a;
}

// 定義函數(shù)f'(x),即f(x)的導(dǎo)數(shù)
double df(double x, double a) {
    return 2 * x;
}

// 牛頓迭代法求解實(shí)數(shù)根
double newton_iteration(double x0, double a, double epsilon) {
    double x = x0;
    while (fabs(f(x, a)) > epsilon) {
        x = x - f(x, a) / df(x, a);
    }
    return x;
}

int main() {
    double a = 2.0; // 方程系數(shù)
    double epsilon = 1e-6; // 誤差閾值
    double x0 = 1.0; // 初始值

    double root = newton_iteration(x0, a, epsilon);
    printf("實(shí)數(shù)根為:%.6lf\n", root);

    return 0;
}

在這個(gè)示例中,我們定義了一個(gè)二次方程f(x) = x^2 - a,并使用牛頓迭代法求解其實(shí)數(shù)根。newton_iteration函數(shù)接受三個(gè)參數(shù):初始值x0、方程系數(shù)a和誤差閾值epsilon。當(dāng)?shù)Y(jié)果與真實(shí)根的差值小于epsilon時(shí),迭代結(jié)束,返回迭代結(jié)果作為實(shí)數(shù)根。

注意:這個(gè)示例僅適用于求解二次方程的實(shí)數(shù)根。對(duì)于其他類型的非線性方程,需要相應(yīng)地修改函數(shù)f(x)df(x)。

0