計算数学演習第6回

数学関数

数学関数の使い方

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分割以上すること)