修改文件结构。
This commit is contained in:
37
POP/07/Exercise01.c
Normal file
37
POP/07/Exercise01.c
Normal file
@@ -0,0 +1,37 @@
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
|
||||
double f(double x);
|
||||
double S(double a, double b, int m);
|
||||
|
||||
double f(double x) {
|
||||
return pow(exp(1.0), -x*x);
|
||||
}
|
||||
|
||||
double S(double a, double b, int m) {
|
||||
double step = (b-a) / m;
|
||||
double ans = 0;
|
||||
int i = 0;
|
||||
for (i = 0; i < m; i++) {
|
||||
ans += step * (f(a + step * i) + f(a + step * (i + 1))) / 2;
|
||||
}
|
||||
return ans;
|
||||
}
|
||||
|
||||
int main() {
|
||||
double a, b;
|
||||
int m;
|
||||
double bestResult;
|
||||
double lowerBond, upperBond;
|
||||
bestResult = S(-1, 1, 2000);
|
||||
printf("The best result we get is %.10lf\n", bestResult);
|
||||
lowerBond = ((int)(bestResult * 10000)) / 10000.0;
|
||||
upperBond = lowerBond + 0.0001;
|
||||
for (m = 1; m <= 2000; m++) {
|
||||
if (S(-1, 1, m) >= lowerBond && S(-1,1,m) < upperBond) {
|
||||
printf("Now the first m that satisfies the requirment is %d, the result is %.10lf.", m, S(-1,1,m));
|
||||
break;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user