台形を求めるためにプログラムを作りf=1-xにおいて 0 < x < 1 の区間で区間を10000分割して近似計算しましたが
for(i=N;i>0;i--) { a=dx*i; b=dx*(i+1); y1=f(a); y2=f(b); S += zukei(y1,y2,dx); }
において昇順させた時と降順させた時では下記のように出てくる値が異なりました。
これは何故なのでしょうか?ご回答宜しくお願いします。
降順の場合:N = 10000, S = 0.49989999999999984448
昇順の場合:N = 10000, S = 0.50000000000000011102
#include <stdio.h> #define N 10000 double zukei(double a,double b,double h) { return (a+b)*h/2; } double f(double x) { return 1-x; } int main(void) { double S=0.0; double a,b,y1,y2; int i; double dx=1.0/N; for(i=N;i>0;i--) { a=dx*i; b=dx*(i+1); y1=f(a); y2=f(b); S += zukei(y1,y2,dx); } printf("N = %d, S = %.10f\n", N, S); return 0; }
回答2件
あなたの回答
tips
プレビュー