1

有人可以告诉我我是否正确编码了吗?这是我在给定周长、高度和角度的情况下求解三角形边的代码(有关代数,请参见http://www.analyzemath.com/Geometry/challenge/triangle_per_alt_angle.html

Prompt P
Prompt H
Prompt L [the angle]
(HP^2)/(2H(1+cos(L))+2Psin(L))→Y
(-P^2-2(1+cos(L))Y/(-2P)→Z
(Z+sqrt(Z^2-4Y))/2→N
[The same as above but Z-sqrt...]→R
If N>0
N→U
If R>0
R→U
Y/U→V
sqrt(U^2+V^2-2UVcos(L))→W
Disp U
Disp V
Disp W

另外,我将如何解决这个问题,以便我可以输入角度 = 90?此外,在这段代码中,高度是否介于 b 和 c 之间(再次参考网站)是否重要?提前致谢

4

2 回答 2

2
  1. 该代码已经适用于 L=90°。
  2. 是的,高度必须是点到点和点之间A的底的距离,与该底形成一个直角。推导做出了这个假设,特别是关于它使用的方式和第二个区域公式。如果以不同方式绘制,则该确切公式将不适用。aBCha1/2 h ah
  3. 您的第二组输入导致非真实答案的原因是,有时一组数学参数可能彼此不一致并描述了一个不可能的构造,而您的PhL值正是这样做的。具体来说,他们描述了一个不可能的三角形。

给定一个高度h和角度L,可以达到的最小周长P是一个等腰三角形,从中间向下分割h。使用L=30,这将具有 perimeter P = a + b + c = 2h tan15 + h/cos15 + h/cos15,插入您的h=3,会导致P=7.819。您改为尝试使用P=3+sqrt(3)=4.732. 尝试使用小于 7.819 的各种数字(加上一点;我在这里四舍五入),你会看到它们都会产生虚构的结果。那是数学告诉您您正在计算现实中不存在的东西。

如果您在第 5 行的 theY/in 之间填写缺少的右括号,那么您的代码可以完美运行。

我编写的代码与您略有不同,这就是我所做的:

Prompt P
Prompt H
Prompt L

HP²/(2H(1+cos(L))+2Psin(L))→Y
(HP-Ysin(L))/H→Z

Z²-4Y→D
If D<0:Then
Disp "IMAGINARY"
Stop
End
(Z+√(D))/2→C

Y/C→B
P-(B+C)→A

Disp A
Disp B
Disp C

编辑: @Gabriel,关于角度 30-60-90 没有什么特别的(关于这个问题);描述这些三角形的 、 和 输入Ph集合是无限的。L但是,如果您真的想在答案中得出这样的三角形,那么您实际上已经改变了问题;您现在知道三个角度 (30-60-90) 加上和,而不是只知道一个角度L加和。您现在已经过度指定了三角形,因此可以确定一组随机生成的输入将描述一个不可能的三角形。作为一个人为的示例,如果您指定为 0.0001 并且PhPhhP作为 99999,那么这显然是不可能的,因为一个高度很小且角度相当不极端的三角形(30-60-90 是)不可能达到其高度数倍的周长。

如果您只想从P或之一开始,那么您可以从已知的或加上 30-60-90 角的知识h推导出方程来计算三角形的所有参数。Ph

举一个例子,如果我们假设边a形成 90° 和 60° 角之间的三角形的底,那么我们有L=30和(将 60° 角标记为 B)我们有h=b,你可以得到简单的方程所有参数:

P = a + h + c
sin60 = h/c
cos60 = a/c

=> P = c cos60 + c sin60 + c
   P = c(cos60 + sin60 + 1)
   c = P/(cos60 + sin60 + 1)

   b = h = c sin60
   a = c cos60

插入P=100我们有

c = 100/(cos60 + sin60 + 1) = 42.265
b = h = 36.603
a = 21.132

如果您将P=100h=36.603、 和L=30插入代码,您将看到您得到这些确切的结果。

于 2015-03-08T08:18:00.700 回答
0

始终优化速度,然后是尺寸。

进一步优化bgoldst的代码:

Prompt P,H,L
HP²/(2H(1+cos(L))+2Psin(L
.5(Z+√((HP-sin(L)Ans)/H)²-4Ans
{Y/C→B,P-B-Ans,Ans
于 2015-03-08T16:34:50.867 回答