- 该代码已经适用于 L=90°。
- 是的,高度必须是点到点和点之间
A
的底的距离,与该底形成一个直角。推导做出了这个假设,特别是关于它使用的方式和第二个区域公式。如果以不同方式绘制,则该确切公式将不适用。a
B
C
h
a
1/2 h a
h
- 您的第二组输入导致非真实答案的原因是,有时一组数学参数可能彼此不一致并描述了一个不可能的构造,而您的
P
、h
和L
值正是这样做的。具体来说,他们描述了一个不可能的三角形。
给定一个高度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 没有什么特别的(关于这个问题);描述这些三角形的 、 和 输入P
的h
集合是无限的。L
但是,如果您真的想在答案中得出这样的三角形,那么您实际上已经改变了问题;您现在知道三个角度 (30-60-90) 加上和,而不是只知道一个角度L
加和。您现在已经过度指定了三角形,因此可以确定一组随机生成的输入将描述一个不可能的三角形。作为一个人为的示例,如果您指定为 0.0001 并且P
h
P
h
h
P
作为 99999,那么这显然是不可能的,因为一个高度很小且角度相当不极端的三角形(30-60-90 是)不可能达到其高度数倍的周长。
如果您只想从P
或之一开始,那么您可以从已知的或加上 30-60-90 角的知识h
推导出方程来计算三角形的所有参数。P
h
举一个例子,如果我们假设边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
插入代码,您将看到您得到这些确切的结果。