[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);
Code language: PHP (php)

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

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

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

それは返り血

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

1.234
Code language: plaintext (plaintext)

もし次のように「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 2Code language: plaintext (plaintext)

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

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

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

echo abs(-4);
echo "\n";
Code language: PHP (php)

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

5
4
Code language: plaintext (plaintext)

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

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

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

$b = -4;
echo abs($b);
echo "\n";
Code language: PHP (php)

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

5
4
Code language: plaintext (plaintext)

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

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

<?php
$a = -4;
$b = abs($a);
echo $b;
Code language: PHP (php)

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

4
Code language: plaintext (plaintext)

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

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

一夜一夜に人見ごろ

人並みにおごれや

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

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

<?php
echo sqrt(2);
Code language: PHP (php)

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

1.4142135623731
Code language: plaintext (plaintext)

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

<?php
echo sqrt(3);
Code language: PHP (php)

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

1.7320508075689
Code language: plaintext (plaintext)

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

ピタゴラスの定理だ!

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

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

<?php
echo sqrt(3 ** 2 + 4 ** 2);
Code language: PHP (php)

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

5
Code language: plaintext (plaintext)

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

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

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

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

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

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

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

<?php
$a = 1;
Code language: PHP (php)

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

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

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

$b = sqrt($a ** 2  - ($a / 2) ** 2);
Code language: PHP (php)

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

$c = $a * $b / 2;
echo $c;Code language: PHP (php)

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

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

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

0.43301270189222
Code language: plaintext (plaintext)

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

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;
Code language: PHP (php)

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

6.3591736031175
Code language: plaintext (plaintext)

測定した長さを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;
Code language: PHP (php)

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

6.3591736031175
Code language: plaintext (plaintext)

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

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

縦が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;
Code language: PHP (php)

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

11.747340124471
Code language: plaintext (plaintext)

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

まとめ

絶対値は、abs関数

平方根は、sqrt関数

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

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

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