■ヘロンの公式
三角形ABCについて、3辺の長さがわかれば、以下のように面積(S)を算出できる。
ただし、s(ルート内の小文字 [s])は以下の通りである
■例題1
三角形ABCの3辺がそれぞれ a = 3, b = 4, c = 5 の時、
三角形ABCの面積を求める。
▼サンプルコード
# -*- Coding:UTF-8 -*-
import math
# ヘロンの公式関数
def HeronFormula(a: int, b: int, c: int):
# スモールsの値を算出
s = (a + b + c) / 2
# 三角形の面積を算出
S = math.sqrt(s * (s - a) * (s - b) * (s - c))
# 面積を戻り値として返す
return S
# メイン処理
if __name__ == '__main__':
# 三角形ABCの3辺がそれぞれ a = 3, b = 4, c = 5 の時、
# 三角形ABCの面積を求める。
a = 3
b = 4
c = 5
print('三角形の面積:', HeronFormula(a, b, c))
▼実行結果
三角形の面積: 6.0
■例題2
三角形ABCの辺 a = 7、b = 24、面積S = 84の時、
三角形ABCの辺cを求める。
▼サンプルコード
# -*- Coding:UTF-8 -*-
import math
import sympy
# ヘロンの公式を使って辺の長さを求める関数
def HeronToLine(a: int, b: int, S: int):
# 戻り値用配列をセット
ans = []
# 文字列をセット
c = sympy.Symbol('c')
# スモールsの値を算出(文字cはそのまま)
s = (a + b + c) / 2
# ヘロンの公式を元に辺cについて解く
# S = √s(s-a)(s-b)(s-c)
# S**2 = s(s-a)(s-b)(s-c) :ルートを外すために両辺を2乗
# s(s-a)(s-b)(s-c) - (S**2) = 0 :sympy.solove()で使用する形に変形
tmp = sympy.solve((s * (s - a) * (s - b) * (s - c)) - (S**2), c)
# tmpの回答分ループ処理
for i in range(len(tmp)):
# ゼロより大きい物だけを格納
if tmp[i] > 0:
ans.append(tmp[i])
# 面積を戻り値として返す
return ans
# メイン処理
if __name__ == '__main__':
# 三角形ABCの辺 a = 7、b = 24、面積S =84
a = 7
b = 24
S = 84
print('辺c = :', HeronToLine(a, b, S))
▼実行結果
辺c = : [25]
コメント