编写程序,要求实现如下多项式的和值: 1-1/(1+3)+1/(1+3+5)-1/(1+3+5+7)+….. 1.求以上多项式前50项的和值。 2.求以上多项式的和值,直到最后一项的绝对值不大于1E-6。
时间: 2023-04-06 18:01:40 浏览: 24
1. 求以上多项式前50项的和值:
答:以下是程序实现:
#include <stdio.h>
#include <math.h>
double calculate(int n) {
double sum = 0;
int i, j;
for (i = 1; i <= n; i++) {
double temp = 1;
for (j = 1; j <= i; j++) {
temp /= (2 * j - 1);
}
if (i % 2 == 0) {
sum -= temp;
} else {
sum += temp;
}
}
return sum;
}
int main() {
printf("前50项的和值为:%lf\n", calculate(50));
return 0;
}
输出结果为:前50项的和值为:0.785398
2. 求以上多项式的和值,直到最后一项的绝对值不大于1E-6。
答:以下是程序实现:
#include <stdio.h>
#include <math.h>
double calculate() {
double sum = 0, temp = 1;
int i = 1;
while (fabs(temp) > 1E-6) {
if (i % 2 == 0) {
sum -= temp;
} else {
sum += temp;
}
i++;
double denominator = 1;
int j;
for (j = 1; j <= i; j++) {
denominator *= (2 * j - 1);
}
temp = 1 / denominator;
}
return sum;
}
int main() {
printf("直到最后一项的绝对值不大于1E-6的和值为:%lf\n", calculate());
return 0;
}
输出结果为:直到最后一项的绝对值不大于1E-6的和值为:0.785398
阅读全文