NOI / 1.3编程基础之算术表达式与顺序执行——17:计算三角形面积

总时间限制: 1000ms 内存限制: 65536kB
描述
平面上有一个三角形,它的三个顶点坐标分别为(x1, y1), (x2, y2), (x3, y3),那么请问这个三角形的面积是多少。

输入
输入仅一行,包括6个单精度浮点数,分别对应x1, y1, x2, y2, x3, y3。
输出
输出也是一行,输出三角形的面积,精确到小数点后两位。
样例输入
0 0 4 0 0 3
样例输出
6.00
提示
海伦公式

这里,先普及一下有关海伦公式的知识:

海伦公式又译作希伦公式、海龙公式、希罗公式、海伦-秦九韶公式,传说是古代的叙拉古国王希伦 (Heron,也称海龙)二世发现的公式,利用三角形的三条边长来求取三角形面积。但根据Morris Kline在1908年出版的著作考证,这条公式其实是阿基米德所发现,以托希伦二世的名发表(未查证)。

原理简介
中国宋代的数学家叶汇淳也提出了"三斜求积术",它与海伦公式基本一样。

假设在平面内,有一个三角形,边长分别为a、b、c,三角形的面积S可由以下公式求得:

S=√[p(p-a)(p-b)(p-c)]

而公式里的p为半周长:

p=(a+b+c)/2


注1:“Metrica”(《论》)手抄本中用s作为半周长,所以

S=√[p(p-a)(p-b)(p-c)] 和S=√[s(s-a)(s-b)(s-c)]两种写法都是可以的,但多用p作为半周长。


由于任何n边的多边形都可以分割成(n-2)个三角形,所以海伦公式可以用作求多边形面积的公式。比如说测量土地的面积的时候,不用测三角形的高,只需测两点间的距离,就可以方便地导出答案。[1]

证明过程
折叠证明⑴
与海伦在他的著作"Metrica"(《度量论》)中的原始证明不同,在此我们用三角公式和公式变形来证明。设三角形的三边a、b、c的对角分别为A、B、C,则余弦定理为

cosC = (a2+b2-c^2)/2ab

S=1/2absinC

=1/2ab√(1-cos^2 C)

=1/2ab√[1-(a2+b2-c2)2/4a2*b2]

=1/4*√[4a2*b2-(a2+b2-c2)2]

=1/4*√[(2ab+a2+b2-c2)(2ab-a2-b2+c2)]

=1/4*√[(a+b)2-c2][c2-(a-b)2]

=1/4*√[(a+b+c)(a+b-c)(a-b+c)(-a+b+c)]

设p=(a+b+c)/2

则p=(a+b+c)/2,p-a=(-a+b+c)/2,p-b=(a-b+c)/2,p-c=(a+b-c)/2,

上式=√[(a+b+c)(a+b-c)(a-b+c)(-a+b+c)/16]

=√[p(p-a)(p-b)(p-c)]

所以,三角形ABC面积S=√[p(p-a)(p-b)(p-c)]

折叠证明⑵
中国宋代的数学家秦九韶也提出了"三斜求积术"。它与海伦公式基本一样,其实在《九章算术》中,已经有求三角形公式"底乘高的一半",在实际丈量土地面积时,由于土地的面积并不是三角形,要找出它来并非易事。所以他们想到了三角形的三条边。如果这样做求三角形的面积也就方便多了。但是怎样根据三边的长度来求三角形的面积?直到南宋,中国著名的数学家秦九韶提出了"三斜求积术"。

秦九韶他把三角形的三条边分别称为小斜、中斜和大斜。“术"即方法。三斜求积术就是用小斜平方加上大斜平方,送到中斜平方,取相减后余数的一半,自乘而得一个数,小斜平方乘以大斜平方,送到上面得到的那个。相减后余数被4除,所得的数作为"实”,作1作为"隅",开平方后即得面积。

所谓"实"、“隅"指的是,在方程px 2=q,p为"隅”,q为"实"。以△、a,b,c表示三角形面积、大斜、中斜、小斜,所以

q=1/4{a2*c2-[(a2+c2-b^2)/2 ]^2}

当P=1时,△ 2=q,

△=√1/4{a2*c2-[(a2+c2-b^2)/2 ]^2}

因式分解得

2=1/4[4a2c2-(a2+c2-b2)^2]

=1/4[(c+a) ^2-b 2][b 2-(c-a)^ 2]

=1/4(c+a+b)(c+a-b)(b+c-a)(b-c+a)

=1/4(c+a+b)(a+b+c-2b)(b+c+a-2a)(b+a+c-2c)

=1/4[2p(2p-2a)(2p-2b)(2p-2c)]

=p(p-a)(p-b)(p-c)

由此可得:

S△=√[p(p-a)(p-b)(p-c)]

其中p=1/2(a+b+c)

这与海伦公式完全一致,所以这一公式也被称为"海伦-秦九韶公式"。

S=√1/4{a2*c2-[(a2+c2-b^2)/2 ]^2} .其中c>b>a.

根据海伦公式,我们可以将其继续推广至四边形的面

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值