首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >三角形边的TI-BASIC (TI-84)求解

三角形边的TI-BASIC (TI-84)求解
EN

Stack Overflow用户
提问于 2015-03-08 13:47:59
回答 2查看 404关注 0票数 1

有人能告诉我我的编码是否正确吗?这是我用来求解给定周长、高度和角度的三角形边的代码(有关代数,请参阅http://www.analyzemath.com/Geometry/challenge/triangle_per_alt_angle.html)

代码语言:javascript
运行
复制
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之间的高度有关系吗(再次参考网站)?提前感谢

EN

回答 2

Stack Overflow用户

发布于 2015-03-08 16:18:01

  1. 代码已经可以使用L=90°。
  2. 是,高度必须是点A到基点a之间的距离BC,与该基点形成直角。推导做出了这一假设,特别是关于它在第二个面积公式1/2 h a中使用ha的方式。如果h被绘制出来,那么这个精确的公式就不适用了,因为你的第二组输入导致了一个非真实的答案,因为有时一组数学参数可能彼此不一致,并且描述了一个不可能的构造,而你的PhL值就是这样做的。具体地说,他们描述了一个不可能的三角形。

给定高度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/之间缺少的右括号,那么您的代码就可以完美地工作。

我写的代码和你的略有不同,下面是我所做的:

代码语言:javascript
运行
复制
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没有什么特别的(关于这个问题);有无限多组PhL输入来描述这样的三角形。然而,如果你真的想在答案中得到这样的三角形,你实际上已经改变了问题;不再只知道一个角度L加上Ph,你现在知道三个角度(30-60-90)加上Ph。您现在已经过度指定了三角形,因此可以非常确定的是,随机生成的一组输入将描述一个不可能的三角形。作为一个人为的示例,如果将h指定为0.0001,将P指定为99999,那么这显然是不可能的,因为一个高度很小且角度相当不极端( 30-60-90 )的三角形不可能达到其高度的许多倍。

如果只想从Ph中的一个开始,那么可以从已知的Ph加上30-60-90角度的知识导出公式来计算三角形的所有参数。

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

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
c = 100/(cos60 + sin60 + 1) = 42.265
b = h = 36.603
a = 21.132

如果在代码中插入P=100h=36.603L=30,就会得到这些确切的结果。

票数 2
EN

Stack Overflow用户

发布于 2015-03-09 00:34:51

总是先优化速度,然后优化大小。

进一步优化bgoldst的代码:

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28923520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档