标题：海伦公式
原理简介
中国宋代的数学家秦九韶也提出了“三斜求积术”，它与海伦公式基本一样。
假设在平面内，有一个三角形，边长分别为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）个三角形，所以海伦公式可以用作求多边形面积的公式。比如说测量土地的面积的时候，不用测三角形的高，只需测两点间的距离，就可以方便地导出答案。
证明过程
证明⑴与海伦在他的著作"Metrica"(《度量论》）中的原始证明不同，在此我们用三角公式和公式变形来证明。设三角形的三边a、b、c的对角分别为A、B、C，则余弦定理为 [1]
cosC = (a^2+b^2-c^2）/2ab 
S=1/2*ab*sinC
=1/2*ab*√（1-cos^2 C)
=1/2*ab*√[1-(a^2+b^2-c^2）^2/4a^2*b^2]
=1/4*√[4a^2*b^2-(a^2+b^2-c^2）^2]
=1/4*√[（2ab+a^2+b^2-c^2）（2ab-a^2-b^2+c^2）]
=1/4*√[(a+b)^2-c^2][c^2-(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{a^2*c^2-[(a^2+c^2-b^2）/2 ]^2} 
当P=1时，△ 2=q,
△=√1/4{a^2*c^2-[(a^2+c^2-b^2）/2 ]^2} 
因式分解得 
△ ^2=1/4[4a^2c^2-(a^2+c^2-b^2）^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{a^2*c^2-[(a^2+c^2-b^2）/2 ]^2} .其中c>b>a. 
根据海伦公式，我们可以将其继续推广至四边形的面积运算。如下题：
已知四边形ABCD为圆的内接四边形，且AB=BC=4,CD=2,DA=6，求四边形ABCD的面积
这里用海伦公式的推广
S圆内接四边形= 根号下（p-a)(p-b)(p-c)(p-d) （其中p为周长一半，a,b,c,d，为4边）
代入解得s=8√ 3证明⑶在△ABC中∠A、∠B、∠C对应边a、b、c
O为其内切圆圆心，r为其内切圆半径，p为其半周长
有tanA/2tanB/2+tanB/2tanC/2+tanC/2tanA/2=1
r(tanA/2tanB/2+tanB/2tanC/2+tanC/2tanA/2）=r
∵r=(p-a)tanA/2=(p-b)tanB/2=(p-c)tanC/2
∴ r(tanA/2tanB/2+tanB/2tanC/2+tanC/2tanA/2）
=[(p-a)+(p-b)+(p-c)]tanA/2tanB/2tanC/2
=ptanA/2tanB/2tanC/2
=r
∴p^2r^2tanA/2tanB/2tanC/2=pr^3
∴S^2=p^2r^2=(pr^3）/(tanA/2tanB/2tanC/2）
=p(p-a)(p-b)(p-c)
∴S=√p(p-a)(p-b)(p-c)证明⑷通过使用正弦定理和余弦定理的结合证明 （具体可以参考证明方法1）
推广
关于三角形的面积计算公式在解题中主要应用的有：
设△ABC中，a、b、c分别为角A、B、C的对边，ha为a边上的高，R、r分别为△ABC外接圆、内切圆的半径，p = (a+b+c)/2，则 
S△ABC 
=1/2 aha
=1/2 ab×sinC
= r p 
= 2R^2sinAsinBsinC 
= √[p(p-a)(p-b)(p-c)] 
其中，S△ABC =√[p(p-a)(p-b)(p-c)] 就是著名的海伦公式，在希腊数学家海伦的著作《测地术》中有记载。关于三角形的面积计算公式在解题中主要应用的有：
设△abc中，a、b、c分别为角a、b、c的对边，ha为a边上的高，r、r分别为△abc外接圆、内切圆的半径，p = (a+b+c），则
s△abc = aha= ab×sinc = r p
= 2r2sinasinbsinc = 
= 
其中，s△abc = 就是著名的海伦公式，在希腊数学家海伦的著作《测地术》中有记载。
海伦公式在解题中有十分重要的应用。
一、 海伦公式的变形
s= 
= ①
= ②
= ③
= ④
= ⑤
二、 海伦公式的证明
证一 勾股定理
分析：先从三角形最基本的计算公式s△abc = aha入手，运用勾股定理推导出海伦公式。
证明：如图ha⊥bc，根据勾股定理，得：
x = y = 
ha = = = 
∴ s△abc = aha= a× = 
此时s△abc为变形④，故得证。
证二：斯氏定理
分析：在证一的基础上运用斯氏定理直接求出ha。
斯氏定理：△abc边bc上任取一点d，
若bd=u，dc=v,ad=t.则
t 2 = 
证明：由证一可知，u = v = 
∴ ha 2 = t 2 = － 
∴ s△abc = aha = a × 
= 
此时为s△abc的变形⑤，故得证。
证三：余弦定理
分析：由变形② s = 可知，运用余弦定理 c2 = a2 + b2 －2abcosc 对其进行证明。
证明：要证明s = 
则要证s = 
= 
= ab×sinc
此时s = ab×sinc为三角形计算公式，故得证。
证四：恒等式
分析：考虑运用s△abc =r p，因为有三角形内接圆半径出现，可考虑应用三角函数的恒等式。
恒等式：若∠a+∠b+∠c =180○那么
tg · tg + tg · tg + tg · tg = 1
证明：如图，tg = ①
tg = ②
tg = ③
根据恒等式，得：
+ + = 
①②③代入，得：
∴r2(x+y+z) = xyz ④ 
如图可知：a+b－c = (x+z)+(x+y）－（z+y) = 2x
∴x = 同理：y = z = 
代入 ④，得：r 2 · = 
两边同乘以 ，得：
r 2 · = 
两边开方，得：r · = 
左边r · = r·p= s△abc 右边为海伦公式变形①，故得证。
证五：半角定理
半角定理：tg = 
tg = 
tg = 
证明：根据tg = = ∴r = × y ①
同理r = × z ② r = × x ③
①×②×③，得：r3 = ×xyz
应用
海伦公式的证明证一：勾股定理 
如右图  勾股定理证明海伦公式。
证二：斯氏定理 
如右图。
证三：余弦定理  斯氏定理证明海伦公式分析：由变形② S = 可知，运用余弦定理 c^2 = a^2 + b^2 －2abcosC 对其进行证明。
证明：要证明S = 
则要证S = ab×sinC 
此时S = (ab×sinC)/2为三角形计算公式，故得证。
证四：恒等式 
  恒等式证明⑴  恒等式证明⑵证五：半角定理 
∵由证一，x = = －c = p－c 
y = = －a = p－a 
z = = －b = p－b 
∴ r3 = ∴ r = 
∴S△ABC = r·p = 故得证。海伦公式的推广由于在实际应用中，往往需计算四边形的面积，所以需要对海伦公式进行推广。由于三角形内接于圆，所以猜想海伦公式的推广为：在任意内接与圆的四边形ABCD中，设p=，则S四边形= 
现根据猜想进行证明。
证明：如图，延长DA，CB交于点E。
设EA = e EB = f 
∵∠1+∠2 =180° ∠2+∠3 =180°
∴∠1 =∠3 ∴△EAB≌△ECD 
∴ = = = 
解得：e = ① f = ② 
由于S四边形ABCD = S△EAB 
将①，②跟b = 代入公式变形④，得到：
∴S四边形ABCD = 
所以，海伦公式的推广得证。
例题
C语言版：
如图四边形ABCD内接于圆O中，SABCD =,AD = 1,AB = 1,CD = 2. 
求：四边形可能为等腰梯形。
解：设BC = x 
由海伦公式的推广，得：
（4－x）（2+x)2 =27 
x4－12x2－16x+27 = 0 
x2(x2—1）－11x(x－1）－27(x－1） = 0 
（x－1）（x3+x2－11x－27） = 0 
x = 1或x3+x2－11x－27 = 0 
当x = 1时，AD = BC = 1 
∴ 四边形可能为等腰梯形。
在程序中实现（VBS):
dim a,b,c,p,q,s
a=inputbox("请输入三角形第一边的长度")
b=inputbox("请输入三角形第二边的长度")
c=inputbox("请输入三角形第三边的长度")
a=1*a
b=1*b
c=1*c
p=(a+b+c)*(a+b-c)*(a-b+c)*(-a+b+c)
q=sqr(p)
s=（1/4）*q
msgbox("三角形面积为"&s),,"三角形面积"
在VC中实现
#include<stdio.h>
#include<math.h>
main()
int a,b,c,s;
printf("输入第一边\n");
scanf("%d",&a);
printf("输入第二边\n");
scanf("%d",&b);
printf("输入第三边\n");
scanf("%d",&c);
s=(a+b+c)/2;
printf("面积为：%f\n",sqrt(s*(s-a)*(s-b)*(s-c)));
C#版：
using System;
using System.Collections.Generic;
using System.Text;
namespace CST09078
class Program
static void Main(string[] args)
double a,b,c,p,s;
Console.WriteLine("输入第一条边的长度：\n");
a = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("输入第二条边的长度：\n");
b = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("输入第三条边的长度：\n");
c = Convert.ToDouble(Console.ReadLine());
p =(a+b+c)/2;
s = Math.Sqrt(p*(p - a)*(p - b)*(p - c));
Console.WriteLine("我算出来的面积是{0}",s);
Console.Read(); SB
  海伦公式
pascal版：
program x;
var
a,b,c:real;
function xb(x,y,z:real):real;
var
p,s:real;
begin
p:=(x+y+z)/2;
s:=sqrt(p*(p-x)*(p-y)*(p-z));
xb:=s;
end;
begin
readln(a,b,c);
writeln(xb(a,b,c):0:2）；
end.