数学関数
数学関数の使い方
C言語では下記プログラムのように、様々な数学関数を用いることができます.
例えば以下のようなプログラムで、三角関数の計算や平方根等の利用ができます。
(math-1.c として打ち込んでみてください。)
#include <stdio.h> #include <math.h> int main() { double pi,a,x,y,z,r; pi = 3.1415926; a = 3.0; r = 10.0; /*三角関数の計算 */ x = r*cos(pi/a); y = r*sin(pi/a); /*平方根の計算 */ z = sqrt(x*x + y*y); printf("10*sin(pi/3.0)=%lf, 10*cos(pi/3.0)=%lf \n", x, y); printf("A square root of (x*x+y*y) is %lf \n", z); return 0; }
数学関数を用いる場合には、
#include <math.h> をプログラムの先頭付近に書き入れることと、コンパイル時に、
ファイル名を math-1.c とすると、
gcc math-1.c -o math-1 -lm
というふうに、最後に -lm を付け足す必要があります.
sin(), cos(), sqrt()の他に, exp(), tan(), log() などいろいろ用意されています。
(次回以降、よく使う事になります.)
課題3
実数x の値の入力を促し、sin(x)、cos(x)、tan(x)の値を出力するプログラムを作成せよ。
課題4
実数x , hの値の入力を促し、(sin(x + h) – sin(x) )/ h、cos(x)の値を出力するプログラムを作成せよ。
また、同じxの値を与えた場合で、h = 0.1, 0.01, 0.001とおいたときの出力を確認せよ。
課題5
二等辺三角形ABCの角Aの大きさをx (rad)、辺ABと辺ACの長さを共にLとする。
xとLの値の入力を促し、辺BCの長さを求めるプログラムを作成せよ。
課題6
整数Nの入力を促し、半径10の円に内接する正N角形の周りの長さ、面積を求めるプログラムを作成せよ。
(正四角形、正六角形の場合について正しい答えになっているか、またNが大きい場合に円に近い値をとるか、各自試してみよ)
課題7
実数L>0の入力を促し、|sin(x)|をxについて区間[0, L]で積分するプログラムを作成せよ。
絶対値は数学関数fabs()をもちいて計算できる。(例:xの絶対値はfabs(x) )
ただし、区間の分割数nは1000であるとする。
課題8(応用問題)
下図の灰色の部分の面積(の近似値)を数値的に求めるプログラムを作成せよ。
(曲線はそれぞれ y=sin(10*x), y=x*x)
ただし,分割後の領域の幅は0.001以下となるように分割数をとること。
(つまり積分する領域が[0,1]であれば1000分割以上すること)