ページ 11

C言語 区分求積法について

Posted: 2012年10月04日(木) 23:22
by xj0461jr
C言語(下記)の区分求積法についての質問なんですが、区分求積法の理論(物事の道理を統一的に説明すること)について教えて頂きたいです。

区分求積法 Cソースプログラム

#include<stdio.h>

void main() {

float p,q,n,hi,bi,s,ai,i,xi;

printf("p,q,n =");
scanf("%f,%f,%f",&p,&q,&n);

s = 0;
bi = (q - p) / n; //図形の始点

for(i = 1;i <= n;i++) {
xi = bi * i + p; //図形の高さまでの長さ
hi = 2 * xi * xi + 3; //図形の高さ
ai = bi * hi; //不明(難しくてわからない) 教えてもらえると有難い
s = s + ai; //図形の面積
}

printf("計算解 =%f\n",s);
printf("厳密解 =%f\n",2 * (q * q * q - p * p * p) / 3 + 3 * (q - p));

}

Re: C言語 区分求積法について

Posted: 2012年10月04日(木) 23:33
by 史上最悪のデスペナ
こちらでいうとこの、
ΔXがbi
オレンジ色の四角形の高さがhiとなり、ΔXの幅を限りなく小さくすると、
この四角形の面積の和が関数が作る面積と同じになるという考え方ですね

史上最悪のデスペナさん: C言語 区分求積法について

Posted: 2012年10月04日(木) 23:47
by xj0461jr
この区分求積法の理論とかは、わかりますか、もし、わかるようなら教えてください。

Re: C言語 区分求積法について

Posted: 2012年10月04日(木) 23:51
by box
xj0461jr さんが書きました:

コード:

	ai = bi * hi; //不明(難しくてわからない) 教えてもらえると有難い
区分求積法とは、別の回答者さんの回答のとおり、
短冊の面積の寄せ集めです。
上の式で、
bi:積分対象区間[p, q]をn等分したi番目のxの位置
hi:その場所での短冊の高さ
ai:短冊の面積

aiを寄せ集めたsの値は、n等分のnが大きくなるほど、つまりbiが小さくなるほど、
厳密解に近づく、ということでしょうか。

Re: C言語 区分求積法について

Posted: 2012年10月05日(金) 10:11
by xj0461jr
xiは、何を表しているかわかります?
教えてもらえるとありがたいです。

Re: C言語 区分求積法について

Posted: 2012年10月05日(金) 11:48
by non
xj0461jr さんが書きました:xiは、何を表しているかわかります?
x座標ですね。
pからqまでをn等分してそのx座標をxiとしてます。xiのときのy座標がhiです。
従って短冊の幅がbi、短冊の面積がaiになります。
理解するためには、図を書いてみましょう。

Re: C言語 区分求積法について

Posted: 2012年10月09日(火) 16:45
by xj0461jr
厳密解の計算は、2(q×q×q-p×p×p) ÷ 3+3(q-p)で求められるみたいなのですが、qやpが三乗になっているのはなぜですか?
ここに出ている2や3の意味も教えてください。お願いします。

Re: C言語 区分求積法について

Posted: 2012年10月09日(火) 16:51
by box
xj0461jr さんが書きました:

コード:

	hi = 2 * xi * xi + 3;  //図形の高さ
このように書かれていますので、積分対象の関数はf(x)=2x^2+3ですね。

∫(x=p~q)(2x^2+3)dx
=[2x^3/3 + 3x](x=p~q)
=2(q^3 - p^3)/3 + 3(q - p)

です。
なお、ここでは ^ をべき乗の意味で使っています。

Re: C言語 区分求積法について

Posted: 2012年10月09日(火) 17:44
by xj0461jr
誠に恐縮なのですが、まだ、学校で積分を学習していないので高校二年生にわかる程度に書いていただけると有難いです。
なんで積分を習っていないのにこんなことをやっているかというと、C言語の学習につかっているので。
特に、厳密解のところがわからないので宜しくお願いします。

Re: C言語 区分求積法について

Posted: 2012年10月09日(火) 17:54
by box
xj0461jr さんが書きました:誠に恐縮なのですが、まだ、学校で積分を学習していないので高校二年生にわかる程度に書いていただけると有難いです。
C言語を学習するのに積分以外のテーマは山ほどあると思います。
理論がわからないテーマ(くだんのコードで何をしているか、正確にはわからない)を無理に選ばなくても、
理解できるテーマ(例えば2次方程式の解き方とか)をお選びになる方が、
C言語の学習がしやすいのではないか、と思います。


# 高2の10月だったら、そろそろ微積分を勉強する時期じゃないのかな?
# 今の高校数学の科目分けはややこしくて、どの単元をいつ勉強するのかよくわからないけど。

Re: C言語 区分求積法について

Posted: 2012年10月09日(火) 18:48
by 大学受験生
区分求積法は(旧課程では)数IIIの終わりの方なので高3になってからになるかと思います。
文系の場合学校では習わない可能性もあります。

C言語の学習の目的が分からないですが、boxさんも仰っているようにC言語の勉強としてやることは他にもあると思うので、他のことをやった方が有意義でしょう。

Re: C言語 区分求積法について

Posted: 2012年10月09日(火) 19:05
by non
積分を使うなら、C言語で解く意味はないので、知らなくてもいいです。
答え合わせに使っているだけでしょうから。
区分求積法だけ理解できれば、良いでしょう。区分求積法なら理解できるはず。

なぜx^2を積分するとx^3の項になるかは、
x^3を微分するとx^2の項になるからですね。微分と積分は逆なので。