计算圆中线段的面积

时间:2013-09-14 02:10:32

标签: python python-3.x

给出直径,以及段或弦的长度。我的问题的直径是12,和弦是10.你必须找到阴影部分的高度,然后打印该区域。原始公式为A=2/3ch + h^3/2c。我的同学在该地区获得了18分,但当我使用我的代码时,我得到了41分。

这是我能找到的最接近的图片。但是,从ϴsImage retrieved from wolfram.com

有一条虚线
from math import sqrt

diamStr=input("Enter the length of the diameter:   ")

diameter=int(diamStr)

chordStr = input( " Enter the chord length:          ")
chord = int(chordStr)


radius = (diameter/2)

s = sqrt (diameter**2+chord**2)

h = (s/2-radius)

i= (2/3*chord*h)

j=(h**3/2*chord)

area = (i+j)

print (area)

1 个答案:

答案 0 :(得分:2)

不幸的是你的公式有问题但是如果用一些基本数学看问题,你可能会注意到ϴ可以找到角度theta = math.acos((radius**2 + radius**2 - chord**2)/(2*radius**2)) ,因为我们知道3个长度 (两个半径和弦长)

Obtained from mathsisfun.com

在Python中它将是:

theta

由于变量area = 1/2 * (theta - math.sin(theta)) * radius**2已经是弧度,我们可以使用这个公式来计算细分的区域:

enter image description here

在python中将是import math diamStr=input("Enter the length of the diameter: ") diameter=int(diamStr) chordStr = input( " Enter the chord length: ") chord = int(chordStr) radius = (diameter/2) theta = math.acos((radius**2 + radius**2 - chord**2)/(2*radius**2)) area = 1/2 * (theta - math.sin(theta)) * radius**2 #print(round((area),2)) print(area)

因此,在合并所有这些之后,我们提出了一个优雅的解决方案:

18.880864248381847

如果您输入直径为12厘米,弦长为10,您将获得round(),但您可以将其四舍五入到print(round((area),2))函数所需的任意小数位数。

例如:18.88打印{{1}}