- 締切済み
台形公式とシンプソン公式
次の積分を台形公式、シンプソン公式を用いて計算せよ。 ただし、刻みをh=2^-nとし、nと積分値の関係も求めよ。 ∫2~1 1/xdx 刻みの書き方がよくわかりません。それ以外は何とかできそうです。 どなたか教えていただければ幸いです。 因みに、n=1~6だそうです。
- C・C++・C#
- 回答数2
- ありがとう数4
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- 麻野 なぎ(@AsanoNagi)
- ベストアンサー率45% (763/1670)
2^(-n) を算出する その1) int k; int i; for (k = 1, i = 0; i < n; k *= 2, i++); double h = 1.0 / k; その2) double h; int i; for(h = 1, i = 0; i < n; h =/ 2, i++); その3) double h = (1.0 / (1 << n)); その4) No.1 の方の回答を参照。 こんなところか?
関連するQ&A
- 台形公式・シンプソン公式についての質問
以前質問させていただき実際にプログラミングを作ったのですが、なぜか間違った答えが出てしまいます。 区分求積法・台形公式・シンプソンの公式を用いて、1/1+x*xを求めたいのですが、 1)台形公式の答えが区分求積法の答えより精度がが悪くなってしまう。 2)シンプソン公式が答えに収束しない。 となってしまいます。 以下がそのプログラム↓ #include <stdio.h> #define FROM 0.0 #define TO 1.0 double func(double x) { double out; out = 1.0 / ( 1.0 + x * x ); return (out); } double kubun(double start, double end, int num) { int i; double h, s; h = ( end - start ) / num; s = 0.0; for(i=0; i<num; i++) s += func( start + i * h + h / 2.0 ); return ( s * h ); } double daikei(double start,double end,int num) { int i; double h,s; h = ( end - start ) / num; s = 0.0; for(i=1; i<num-1; i++) s += func( start + i * h ); return ((func(start) / 2.0 + s + func(end) / 2.0) * h ); } double simpson(double start,double end,int num) { int i; double h,s; h = ( end - start ) / num; s = 0.0; for(i=1;i<num;i+=2) s += 4.0 * func(start + h * i); for(i=2;i<num;i+=2) s += 2.0 * func(start + h * i); return ( (func(start) + s + func(end))/ 3 ); } int main() { double func(double); double kubun(double, double, int); double daikei(double, double, int); double simpson(double, double, int); printf("\n"); printf("### Square Integration\n"); printf(" ++ Partition = 10\t Answer = %10.6f\n", kubun(FROM, TO, 10)); printf(" ++ Partition = 50\t Answer = %10.6f\n", kubun(FROM, TO, 50)); printf("\n"); printf("### daikei Integration\n"); printf(" ++ Partition = 10\t Answer = %10.6f\n", daikei(FROM, TO, 10)); printf(" ++ Partition = 50\t Answer = %10.6f\n", daikei(FROM, TO, 50)); printf("\n"); printf("### simpson Integration\n"); printf(" ++ Partition = 10\t Answer = %10.6f\n", simpson(FROM, TO, 10)); printf(" ++ Partition = 50\t Answer = %10.6f\n", simpson(FROM, TO, 50)); return (0); } 画面に表示する際に、それぞれ分割数を10と50にした際の値を表示するように作りました。 細かい点までご指摘いただけると幸いです。 よろしくお願いします。
- ベストアンサー
- C・C++・C#
- 台形公式について
台形公式を使って、2*sqrt(1-x*x)の-1から1の積分の近似値を求めようと思うのですが、結果が違う気がします。おかしなところがありますか?また、皆さんの結果ではどういった結果が出てきますか? 台形公式のプログラムリスト double daikei(double N){ int k; double y,S,sum; sum = 0.0; for(k=0; k<=N; k++){ y = 4.0 * sqrt((k/N)*(1.0+(k/N))); if(k==0 , k==N){ S = (1.0/N) * y; } else { S = (2.0/N) * y; } sum = sum + S; } return sum; }
- 締切済み
- C・C++・C#
- 数値解析の問題
質問させていただきます 次の積分の数値積分を考える I=∫[B→A] f(x)dx [A.B}をn分割して、xの分点をとる、即ち xi=A+ih i=0,1,・・・n h=(B-A)/n n=6の場合、台形公式とシンプソンの1/3公式より Iの近似値を求めよ 但し、xi, fi=f(xi), hを用いてあらわせ 台形公式 I=h(f0+f2n)+2h{(f2+f4+・・・・f(2n-2)} シンプソンの公式 I=h/3{f0+f2n+2(f2+f4+・・・・・+f(2n-2)+4(f1+f3++・・・+f(2n-1)} 公式そのまま書いてみたのですが、あってるかどうか分かりません・・・ xiとかも使ってないし・・・ 詳しいかた回答お願いします
- 締切済み
- 数学・算数
- C言語で台形公式を使った二重積分のプログラム
台形公式をつかった二重積分の数値計算を行うプログラムをC言語でつくっているのですが、未だ理解が足りず、うまくできていません。 そこで、 •台形公式をつかった二重積分についてわかりやすく説明しているページ。 •台形公式で二重積分を行うプログラムの例があるページ。 •または、台形公式の二重積分(のプログラム)について説明できる方がいれば教えて下さい。 よろしくお願いします。
- 締切済み
- C・C++・C#
- 台形公式
c言語初心者です。 「f(t)=exp(t)の、0から1までの定積分を台形公式により計算せよ」 という問題に取り掛かっているのですが、うまくいきません。 以下に私の書いたものと、エラーメッセージを載せますので、添削をよろしくお願いします。 ●プログラム #include<stdio.h> #include<math.h> int main(void) { int N,n double d,t[10000],f[10000],s=0,In=0; printf("N="); scanf("%d",&N); d=1/N; while(n=0;n<=N;n++) { t[n]=n*d; f[n]=exp(t[n]); } while(n=1;n<=N-1;n++) { s=s+f[n]; } In=d*((f[0]/2)+s+(f[N]/2)); printf("mennseki=%f",In); return 0; } ●エラーメッセージ(このプログラムのファイル名をz-2-2.cとしています。) z-2-2.c z-2-2.c(7) : error C2143: 構文エラー : ';' が '型' の前にありません。 z-2-2.c(14) : error C2143: 構文エラー : ')' が ';' の前にありません。 z-2-2.c(14) : warning C4552: '<=' : 演算子にプログラム上の作用がありません。作用 を伴う演算子を使用してください z-2-2.c(14) : error C2059: 構文エラー : ')' z-2-2.c(15) : error C2143: 構文エラー : ';' が '{' の前にありません。 z-2-2.c(19) : error C2143: 構文エラー : ')' が ';' の前にありません。 z-2-2.c(19) : warning C4552: '<=' : 演算子にプログラム上の作用がありません。作用 を伴う演算子を使用してください z-2-2.c(19) : error C2059: 構文エラー : ')' z-2-2.c(20) : error C2143: 構文エラー : ';' が '{' の前にありません。
- ベストアンサー
- C・C++・C#
お礼
回答ありがとうございます! 助かりました!