見出し画像

定積分を論理的に行うプログラムを作ってみた!(C言語)

こんにちは皆さん!さとしです!

何かと使われる定積分。皆さんはお馴染みの公式を使って計算しているでしょう。それはもちろんプログラムでも同じでしょう…

しかし!そんな単純なことしていても面白くありません!
そこで、定積分を論理的に行うプログラムを、C言語で作ったので紹介していこうと思います(笑)

定積分の定義

まずは定積分の定義を確認してみましょう。

関数f(x)とf(x)との不定積分(原始関数)のひとつをF(x)とするとき,実数a,bに対して,F(b))−F())を関数f(x)のaからbまでの定積分といい,

定義

となる。(Webページ:KIT数学ナビゲーションより引用)

これは皆さんご存じの公式ですね。
実はこれ、このような形もあります!

極限での定義

これは定積分の公式を∫を使わずに表したものです。この説明についてはこちらのページ(https://www.geisya.or.jp/~mwm48961/koukou/lim_siguma2.htm)を参考にしてもらえればいいのですが、
簡単に言うと、ものすごく小さい区間とその高さf(xi)をかけて出される面積を、定めたX=a~bの区間分足し合わせるという考え方です。

極限での定義図

今回、私がやりたかったことはこの考え方をプログラミングするということです。

ではさっそくプログラムを作成していくわけですが、今回の肝の部分を提示します。

・積分する範囲のxを指定する。
・xiの区間を限りなく小さくする。
・小さい区間とその地点の高さf(xi)をかけた面積を求める。
・算出した面積を全て足し合わせる。

※なお、今回はmath.hをインクルードしません。
 関数f(x)=x^2 とします。

これらの部分を意識して作成したプログラムがこちらです。

#include<stdio.h>

#define a 0
#define b 1//aからbの範囲で定積分

int main(){
	double S,x,y; //yはxの関数、Sは面積
	double n=0.00000001//Δn 値が小さいほど、精度が増す。
	for(x=a;x<=b;x+=n){
		y=x*x; //関数を設定
		S+=y*n;
	}
	printf("%lf\n",S);
	
	return 0;
}

ただ、このプログラムには一つ嘘がありまして(;^ω^)
見れば分かると思うのですが、nを限りなく小さくするはずが、限りが見えちゃってるんですよね(笑)

こればっかりは、プログラムの性質上、数を定める必要があるのでできるだけ小さくするしかなかったのだとご了承ください。

ともかく!これで論理的に積分するプログラムが完成しました!
学生の暇つぶしだったので大した内容でなかったかもしれませんが、面白いと思っていただけたら幸いです( *´艸`)

最後までお付き合いいただきありがとうございました!

この記事が気に入ったらサポートをしてみませんか?