[PHP] 関数電卓なみの計算をしよう(1) 絶対値、平方根

関数電卓で、絶対値や平方根の計算ができます。これらの計算をphpスクリプトで計算してみましょう。

関数電卓とは

理系の学生が持っていることが多いよ。

関数電卓を見たこともない人が多いかもね

Windowsの電卓の関数電卓モードや、macOSの計算機の科学技術計算モードと何が違うの?

微分・積分、シグマの計算や、分数のまま計算をしたり、方程式を解いたりできるわ

abs関数 - 絶対値

PHPには、あらかじめ数多くの関数が用意されています。数学系の関数の一覧は、https://www.php.net/manual/ja/book.math.php にあります。

この一覧の先頭にある abs関数を使ってみましょう。abs関数は、絶対値を計算します。

-1.234の絶対値は、1.234と表示されるはずです。

エディター欄に入力します。

<?php echo abs(-1.234);

関数に渡す値を「引数(ひきすう)」といいます。上の例では「abs関数の引数に-1.234を渡す」と言います。

関数の結果を「戻り値(もどりち)」や「返り値(かえりち)」と呼びます。上の例では「abs関数に引数-1.234を渡したら、戻り値1.234が返ってきた」と言います。

サスペンス映画の殺人シーン?

それは返り血

実行すると、出力欄に次のように表示されます。

1.234

もし次のように「Call to undefined function」が表示されたら、absのスペルを間違っています。このエラーでは、absではなく、abdと書いてしまったようです。

PHP Fatal error: Uncaught Error: Call to undefined function abd() in /workspace/Main.php:2 Stack trace: #0 {main} thrown in /workspace/Main.php on line 2

他の値を渡してみましょう。
5の絶対値は、5
-4の絶対値は、4
と表示されるはずです。

エディター欄に入力します。

<?php echo abs(5); echo "\n"; echo abs(-4); echo "\n";

実行すると、出力欄に次のように表示されます。

5 4

変数を引数に渡すこともできます。

エディター欄に入力します。

<?php $a = 5; echo abs($a); echo "\n"; $b = -4; echo abs($b); echo "\n";

実行すると、出力欄に次のように表示されます。

5 4

戻り値を変数に代入してから、変数を表示してみましょう。

エディター欄に入力します。

<?php $a = -4; $b = abs($a); echo $b;

実行すると、出力欄に次のように表示されます。

4

sqrt関数 - 平方根、二乗根、ルート

次は、√(平方根、ルート)を計算しましょう。√2 は 1.41421356、√3 は 1.7320508です。

一夜一夜に人見ごろ

人並みにおごれや

PHPでは、sqrt関数を使います。sqrtはsquare root(平方根)の略です。

エディター欄に入力します。

<?php echo sqrt(2);

実行すると、出力欄に次のように表示されます。

1.4142135623731

エディター欄に入力します。

<?php echo sqrt(3);

実行すると、出力欄に次のように表示されます。

1.7320508075689

平方根の計算ができると、直角三角形の斜辺の長さを計算できます。

ピタゴラスの定理だ!

直角をはさむ2辺の長さを 3cm、4cmとすると、斜辺の長さ = √(32 + 42) です。

エディター欄に入力します。32 の計算は、3 ** 23 * 3 どちらでも合っています。

<?php echo sqrt(3 ** 2 + 4 ** 2);

実行すると、出力欄に次のように表示されます。

5

一辺の長さが1の正三角形の面積はいくらになるか

カシオ教育情報ステーションのサイトに関数電卓例題があります。平方根に関する例題をphpスクリプトで計算してみましょう。

一辺の長さが1の正三角形の面積はいくらになるか。

https://edu.casio.jp/cal/cal03/

カシオの関数電卓、計算過程が分数やルートのままだよ!

phpスクリプトでは真似できないわ

まず、辺の長さを変数$aに代入します。

<?php $a = 1;

高さを計算して、変数$bに代入します。
斜辺2 = 高さ2 + (底辺÷2)2 なので、

高さ2 = 斜辺2 - (底辺÷2)2

高さ = √(斜辺2 - (底辺÷2)2) です。

$b = sqrt($a ** 2 - ($a / 2) ** 2);

三角形の面積を計算して、変数$cに代入します。三角形の面積 = 底辺 × 高さ ÷ 2 です。最後に、三角形の面積を表示します。

$c = $a * $b / 2; echo $c;

エディター欄をまとめると、次のように入力します。

<?php $a = 1; $b = sqrt($a ** 2 - ($a / 2) ** 2); $c = $a * $b / 2; echo $c;

実行すると、出力欄に次のように表示されます。

0.43301270189222

配管パイプの長さはいくら必要?

AとBの2地点に川から1つのポンプを使いパイプを通じて水を送りたい。

A地点は川から1kmはなれており、B地点は2kmはなれている。
A、B地点から川への最短距離地点をA'、B'としたとき、2点間の距離A'B'は5kmだった。
A'から川に沿ってB'の方向4kmの場所にポンプPを置いた場合、パイプは合計何km必要か。

https://edu.casio.jp/cal/cal02/

A' はどう読むのかな?

エーダッシュと習ったけど、正しくはエープライムらしいわ

APの距離は√(12+42)、BPの距離は √(22+(5-4)2)です。

APの距離を変数$a、BPの距離を変数$bに計算します。エディター欄に入力します。

<?php $a = sqrt(1 ** 2 + 4 ** 2); $b = sqrt(2 ** 2 + (5 - 4) ** 2); $c = $a + $b; echo $c;

実行すると、出力欄に次のように表示されます。

6.3591736031175

測定した長さをsqrtの引数に書くのではなく、測定した長さを変数に代入してから、計算してみましょう。

<?php $a = 1; // AA' $b = 2; // BB' $c = 5; // AB' $d = 4; // A'P // AP $x = sqrt($a ** 2 + $d ** 2); // BP $y = sqrt($b ** 2 + ($c - $d) ** 2); // AP + BP $z = $x + $y; echo $z;

実行すると、出力欄に次のように表示されます。

6.3591736031175

さきほどと同じ結果が表示されました。

直方体の対角線の長さを求めよう

縦が5cm、横が7cm、高さが8cmの直方体の容器がある。この容器に長さ12cmの棒を入れることは可能か?

https://edu.casio.jp/cal/cal29/

この例題は、関数電卓のベクトル計算を使いますが、PHPにはベクトル計算の機能はないので、地道に計算します。

縦が5cmを変数$x、横が7cmを変数$y、高さが8cmを変数$zに代入してから、対角線の長さを計算します。

対角線の長さ = √(縦2 + 横2 + 高さ2)

<?php $x = 5; $y = 7; $z = 8; $a = sqrt($x ** 2 + $y ** 2 + $z ** 2); echo $a;

実行すると、出力欄に次のように表示されます。

11.747340124471

結果は12cmより小さいので、12cmの棒は箱に入らないことがわかりました。

まとめ

絶対値は、abs関数

平方根は、sqrt関数

関数に渡す値を「引数」といいます。

関数の結果を「戻り値」または「返り値」といいます。

タイトルとURLをコピーしました