ID非公開

2022/6/27 23:27

22回答

cプログラミング。 ∫[0,b]exp(-x)dxの分割数を1,10,‥10⁶として数値計算し、厳密値1-exp(-b)との誤差を表示するプログラムを作ってください。

C言語関連45閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

0

ThanksImg質問者からのお礼コメント

ありがとうございました。 Thank you very much.

お礼日時:7/1 1:48

その他の回答(1件)

0

#include <stdio.h> #include <stdlib.h> #include <math.h> double integ(double (*f)(double), double x1, double x2, int n) { int i; double dx = (x2 - x1)/n, s = 0.0; for (i = 0; i < n; i++) s += f(x1 + (i+0.5)*dx)*dx; return s; } double f (double x) { return exp (-x); } int main(int argc, char **argv) { double xi, a = 0, b= 49/100.0 ; int i; printf("Integration of exp(-x) for [%.2f, %.2f] and errors\n",a, b); for(i = 0; i < 7; i++){ xi = integ(f, a, b, pow(10, i)); printf("%.15f%.15e\n", xi, 1-exp(xi)); } printf("strict value = %.15f\n", 1-exp(-b)); return 0; } ----------- Integration of exp(-x) for [0.00, 0.49] and errors 0.383525223738515-4.674485665208541e-01 0.387334855028139-4.730496667849988e-01 0.387373218280844-4.731061788455984e-01 0.387373601940234-4.731067440167247e-01 0.387373605776830-4.731067496684407e-01 0.387373605815202-4.731067497249666e-01 0.387373605815561-4.731067497254953e-01 strict value = 0.387373605815584