问题描述

求多项式

$$ax^{11}-3x^8-5x^3-1=0$$

的根,要求a用屏幕进行输入,根的精度为0.0000001,并且说可能无解。

C语言实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <stdio.h>
#include <math.h>
/**
* 牛顿迭代求根
*/
//带入原函数后所得的值
double f(double a, double x)
{
return (a*pow(x,11)-3*pow(x,8)-5*pow(x,3)-1)/1.0;
}
//带入一阶导函数后所得的值
double f1(double a, double x)
{
return (a*11*pow(x,10)-24*pow(x,7)-15*pow(x,2))/1.0;
}

//牛顿迭代函数
double F(double a, double x)
{
double x1;
x1=x-1.0*f(a, x)/f1(a, x);
return (x1);
}

int main() {
// ax^11 - 3x^8 - 5x^3 - 1 = 0
double x0=20.0,D_value=0.0,x1=0.0,a=0.0;
printf("ax^11 - 3x^8 - 5x^3 - 1 = 0\n请输入a: ");
scanf("%lf", &a);
printf("\n\na为:%lf", a);
do {
x1=F(a, x0);
D_value=fabs(x1-x0);
x0=x1;
} while((D_value<=0.0000001));
printf("\n\n结果为:%lf", D_value);
printf("\n\n");
return 0;
}