用C语言设置一个非线性方程求根:牛顿迭代法
时间: 2023-12-20 16:04:05 浏览: 127
数值分析+非线性方程求根+牛顿迭代法
牛顿迭代法是一种求解非线性方程的常用方法,其基本思想是通过不断逼近函数的零点来求解方程的解。下面是用C语言实现牛顿迭代法的代码:
```c
#include <stdio.h>
#include <math.h>
#define MAX_ITER 100 // 最大迭代次数
#define ERROR 1e-6 // 误差容限
double f(double x) // 定义函数f(x)
{
return x * x - 2;
}
double f_prime(double x) // 定义函数f(x)的导数
{
return 2 * x;
}
double newton(double x0) // 牛顿迭代法求解方程的解
{
double x = x0;
int n = 0;
while (fabs(f(x)) > ERROR && n < MAX_ITER) // 当误差小于容限或达到最大迭代次数时停止迭代
{
x = x - f(x) / f_prime(x); // 根据公式进行迭代
n++;
}
if (n == MAX_ITER) // 如果达到最大迭代次数仍未找到解,则返回NaN
{
return NAN;
}
return x;
}
int main()
{
double x0 = 1; // 初始值
double x = newton(x0); // 求解方程的解
if (isnan(x)) // 判断是否找到解
{
printf("无解!\n");
}
else
{
printf("方程的解为:%f\n", x);
}
return 0;
}
```
上述代码中,`f(x)`表示方程的左边,`f_prime(x)`表示方程左边的导数,`newton(x0)`表示牛顿迭代法求解方程的解,`MAX_ITER`表示最大迭代次数,`ERROR`表示误差容限。在`main()`函数中,首先定义了初始值`x0`,然后调用`newton(x0)`函数求解方程的解,并根据是否找到解输出相应的结果。
阅读全文