用c语言程序写出用牛顿切线法求函数f(x)=x^2-3x+1的根。
时间: 2024-09-23 10:13:44 浏览: 43
在C语言中,我们可以使用牛顿迭代法(也称为牛顿-拉夫逊法)来逼近函数f(x) = x^2 - 3x + 1的零点。这个算法通过不断逼近函数图像与x轴的交点来找到解。以下是基本的步骤和一个简单的示例代码:
首先,我们需要编写函数来计算函数值及其导数:
```c
#include <stdio.h>
#include <math.h>
double f(double x) {
return pow(x, 2) - 3 * x + 1;
}
double df(double x) {
return 2 * x - 3; // 导数为f'(x) = 2x - 3
}
```
然后,我们将使用牛顿迭代公式:
```c
double newton_raphson(double initial_guess, double tolerance, int max_iterations) {
double current_value = initial_guess;
for (int i = 0; i < max_iterations && abs(f(current_value)) > tolerance; ++i) {
double derivative = df(current_value);
if (derivative == 0) {
printf("警告:导数为0,无法继续迭代.\n");
break;
}
current_value -= f(current_value) / derivative;
}
return current_value;
}
int main() {
double initial_guess = 1.0; // 初始猜测值
double tolerance = 1e-6; // 容许的误差范围
int max_iterations = 100; // 最大迭代次数
double root = newton_raphson(initial_guess, tolerance, max_iterations);
printf("方程的近似解为: %.6lf\n", root);
return 0;
}
```
阅读全文