有人可以告诉我,我是否正确编码了这个?这是我的代码,用于求解三角形的边长,高度和角度(代数见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之间的高度,那么它是否重要(再次参考网站)? 提前致谢
答案 0 :(得分:2)
A
和a
之间从点B
到基座C
的距离,与该基点形成直角。推导得出了这个假设,特别是在第二个区域公式h
中使用a
和1/2 h a
的方式。如果h
的绘制方式不同,那么这个确切的公式将不适用。P
,h
,L
值完全相同。具体来说,他们描述了一个不可能的三角形。给定高度h
和角度L
,可以实现的最小周长P
是等腰三角形,中间分为h
。使用L=30
,这将包含P = a + b + c = 2h tan15 + h/cos15 + h/cos15
,其中插入h=3
会产生P=7.819
。您改为尝试使用P=3+sqrt(3)=4.732
。尝试使用少于7.819的各种数字(加上一点;我在这里四舍五入),你会发现它们都会产生想象的结果。这是数学告诉你,你正在计算现实中不存在的东西。
如果您填写第5行Y
和/
之间缺少的右括号,那么您的代码就可以正常运行。
我编写的代码与您略有不同,这就是我所做的:
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,没有什么特别的(关于这个问题);有无穷多组P
,h
和L
输入来描述这样的三角形。但是,如果你真的想在答案中得到这样的三角形,你实际上已经改变了问题;您现在知道三个角度(30-60-90)加L
和P
,而不只是知道一个角度h
加P
和h
。你现在已经过度指定了三角形,因此可以肯定的是,随机生成的一组输入将描述一个不可能的三角形。作为一个人为的例子,如果你将h
指定为0.0001并将P
指定为99999,那么这显然是不可能的,因为一个海拔很小且角度非常小的三角形(30-60-90)不能可能达到其高度的许多倍。
如果您只想从P
或h
中的一个开始,那么您可以导出公式以计算已知P
或h
中三角形的所有参数加上30-60-90角度的知识。
举一个这样的例子,如果我们假设边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=100
,h=36.603
和L=30
插入代码中,您会看到获得这些确切结果。
答案 1 :(得分: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