[PHP] 関数電卓なみの計算をしよう(3) 立方根、自然対数

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

関数電卓とは

関数電卓すごすぎて、関数電卓なみとか言ってられないわ

100cm3の箱の大きさはどのくらい?

1辺10cmの立方体の箱の体積は1000cm3(=1リットル)である。ではその10分の1の体積である100cm3の立方体を考えたときに、その1辺はどれだけになるか?

ヒント
立方体の1辺の長さは体積の3乗根で与えられる

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

その前に、2乗と平方根のおさらいよ

正方形の1辺の長さをaとすれば、面積は、a2です。次のphpスクリプトで計算できます。

<?php
$a = 10;
$s = $a ** 2;
echo $s;Code language: PHP (php)

実行すると、

100Code language: plaintext (plaintext)

逆に、正方形の面積をsとしたとき、1辺の長さは、√s です。次のphpスクリプトで計算できます。

<?php
$s = 100;
$a = sqrt($s);
echo $a;Code language: PHP (php)

実行すると、

10Code language: plaintext (plaintext)

例題は、立方体だね。

立方体の1辺の長さをaとすれば、面積は、a3です。次のphpスクリプトで計算できます。

<?php
$a = 10;
$s = $a ** 3;
echo $s;Code language: PHP (php)

実行すると、

1000Code language: plaintext (plaintext)

逆に、立方体の体積をvとしたとき、一辺の長さは、3√v です。立方根3√v は、v1/3で計算します。

v1/3 は、PHPのpow関数を使って、pow($v, 1/3) と計算します。powはpowerの略です。

1/3は、0にならないの?

PHPでは、1/3は、0.33333333333333 なのよ。

<?php
$v = 100;
$a = pow($v, 1/3);
echo $a;Code language: PHP (php)

実行すると、

4.6415888336128Code language: plaintext (plaintext)

pow($v, 1/3) は、$v ** (1/3) とも書けます。

<?php
$v = 100;
$a = $v ** (1/3);
echo $a;Code language: PHP (php)

実行すると、

4.6415888336128Code language: plaintext (plaintext)

PHPのsqrt($s)は、pow($s, 0.5)とも書けるんだね

確かにそうだけど、sqrt関数の知名度が高いから、sqrt関数を使ったほうが無難ね

はがきを折った厚みで月へ行くには?

はがき一枚の厚みを0.23mmとする。一回折ると厚みは2倍となり、また何回でも折ることができるものと仮定すると、このはがきを何回折れば月までの距離を超える厚みになるか? (ただし、月までの距離を38万4400kmとする)

ヒント
1回折り曲げるごとにはがきの厚みは2倍に増えていく。
x回折り曲げた時の厚みは(0.23×10-3)×2xm と表すことができる。

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

ハガキの厚みが0.23mm、メートルに換算して、変数$aに代入します。1mは、1000mm、つまり1mmは0.001mです。

<?php
$a = 0.23 * 0.001;Code language: PHP (php)

月までの距離が38万4400km、メートルに換算して、変数$bに代入します。

// つづき
$b = 384400 * 1000;Code language: PHP (php)

x回折り曲げた時の厚みが (0.23×10-3)×2x、これが38万4400km以上になるようなxを計算します。

関数電卓では、方程式を入力してソルブ機能を使っていますが、PHPにはこの機能はありません。

関数電卓は、方程式を入力すると、解を計算してくれるんだね

ここでは、方程式を解いて、log計算してみましょう。

a×2x = b

↓両辺の自然対数を求めます

ln(a×2x) = ln(b)

↓ln(a×b) = ln(a) + ln(b)なので、

ln(a) + ln(2x) = ln(b)

↓ln(ab) = ln(a) × b なので、

ln(a) + ln(2) × x = ln(b)

↓xを左辺に移動して、整理します。

x = (ln(b) - ln(a)) / ln(2)

自然対数lnは、PHPではlog関数で計算します。

// つづき
$x = (log($b) - log($a)) / log(2);
echo $x;Code language: PHP (php)

エディター欄をまとめると、

<?php
$a = 0.23 * 0.001;
$b = 384400 * 1000;
$x = (log($b) - log($a)) / log(2);
echo $x;
Code language: PHP (php)

実行すると、

40.60411161359Code language: plaintext (plaintext)

はがきを41回折ると、その厚みは月までの距離を上回ることがわかりました。

まとめ

平方根√は、sqrt関数で計算します。

立方根3√vは、v1/3なので、pow関数を使って、pow($v, 1/3)と計算します。

自然対数lnは、log関数で計算します。

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