• 締切済み

台形公式とシンプソン公式

次の積分を台形公式、シンプソン公式を用いて計算せよ。 ただし、刻みをh=2^-nとし、nと積分値の関係も求めよ。 ∫2~1 1/xdx 刻みの書き方がよくわかりません。それ以外は何とかできそうです。 どなたか教えていただければ幸いです。 因みに、n=1~6だそうです。

noname#121338
noname#121338

みんなの回答

回答No.2

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 の方の回答を参照。 こんなところか?

noname#121338
質問者

お礼

回答ありがとうございます! 助かりました!

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

pow.

noname#121338
質問者

お礼

回答ありがとうございました!!

関連するQ&A

  • 台形公式

    こんにちは。 学校の先生に台形公式を使って次の式を解けといわれました。 x'[n]=cos(θ[n]) 例えば今n=5とします。θ[1]~θ[5]とx[0]は既知です。 僕的には、θが既知であるため台形公式を使わなくても長方形の計算で解けてしまう気がするのですが、間違いでしょうか? また、この場合どのように台形公式を適用すれば良いのでしょうか? どうぞよろしくお願いします。

  • シンプソン公式

    数学が苦手で、わからないので教えていただきたいのですが。 (1)区間0≦x≦1において関数f(x)=1-x^2を台形公式で近似計算するとき、どんなことがいえるのでしょうか。 (2)区間-1≦x≦1において関数f(x)=|1/4-x^2|をシンプソン公式で計算するとき、どんな方針でやればいいのでしょうか。 以上、よろしくお願いいたします。

  • 台形公式・シンプソン公式についての質問

    以前質問させていただき実際にプログラミングを作ったのですが、なぜか間違った答えが出てしまいます。 区分求積法・台形公式・シンプソンの公式を用いて、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にした際の値を表示するように作りました。 細かい点までご指摘いただけると幸いです。 よろしくお願いします。

  • 台形公式

    幅hの小区間上[xi+(h/2),xi-(h/2)]のf(x)の積分に対する台形公式を求めよ。すなわち h{af(xi-(h/2)+bf(xi+(h/2)))} の形の数値積分公式でもっとも次数が高くなるようにa,bを定めよ。 という問題の答えがわかりません。 どなたか教えて下さい。

  • 積分

    一気に答えだけを表示するシンプソンの公式と台形公式のプログラムは分かったんですが計算過程も出せるその二つのプログラムを教えてください。求めたいのは∫e^-x*xdx(0~∞)の定積分の値です。

  • 台形公式について

    台形公式を使って、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; }

  • 数値解析の問題

    質問させていただきます 次の積分の数値積分を考える 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言語初心者です。 「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: 構文エラー : ';' が '{' の前にありません。

  • 台形公式について

    定積分I=∫(0→2) x(x-1)^2dxを数値積分の台形公式で解いてみましたが とき方がいまいちあってる気がしないので、審議お願いします。 条件は分割数は4で等区間の間隔0.5です 答え h=0.5 yo=0(0-1)^2=1, y1=1/2*(1/2)^2=1/8, y2=1*(1-1)^2=0, y3=3/2*(1/2)^2=3/8, y4=2*1^2=2 I=1/4(1+2*1/8+2*0+2*3/8+2)=1 です。 よろしくお願いします

専門家に質問してみよう