Python 自作の平方根のモジュールを用いた計算

実現したいこと

このような問いがあります。

①キーボードから入力された非負の実数値をs に格納した後,平方根を計算する。
関数sqrv () を用いて u に s の平方根を代入し, u を小数点以下第 6 位まで画面出力するプログラムを作成せよ.
○関数名sqrv()
・引数:x
・処理:まず,z に 1.0 を初期値として代入する.次に,z = (z + (x / z)) / 2とする処理を 30 回繰り返す.
・戻り値:z

この関数部分をモジュール"ex1"として作成し、次の問題を解きます。

②高さ100mに静止しているドローンを自由落下させることを考える.キーボードから入力された非負の実数値を height に格納した後,高さ height [m] になるまでの時間[s] を計算する関数 freefall() を使用して t に時間を代入し,t を小数点以下第3位まで画面出力するプログラムを作成せよ.
※重力加速度 g は 9.8 [m/s^2] として計算し,平方根の計算はモジュール"1"の関数 sqrv() を使用すること.
○関数名 freefall()
・引数:h
・処理:高さ 100 [m] から自由落下で高さ h [m] に到達するまでの時間を計算し,変数 rslt に格納する.
・戻り値:rslt

式は、h=1/2(g t^2)を用いる。

実行画面の例は以下のようになります。
Input height : 90.0
Time t = 1.429

前提

ここに質問の内容を詳しく書いてください。
(例)
Pythonで上記のようなシステムを作っています。
①のモジュールを作るところまではできたのですが、②を実装したところ計算結果が異なりました。

発生している問題・エラーメッセージ

実行画面
Input height : 90.0
Time t = 4.286

該当のソースコード

①モジュールのソースコード

Python

1def sqrv(x):2 z = 1.03 for i in range(30):4 z = (z + (x / z)) / 25 return z

②問題のソースコード

Python

1import ex1 2 3def freefall(h):4 t = (2.0 * h) / 9.85 t = ex1.sqrv(t)6 rslt = t 7 return rslt 8 9# use_function10h = input('Input height : ')11h = float(h)12t = freefall(h)13print(f'Time t = {t:.3f}')

コメントを投稿

0 コメント