海伦公式(附一种证明方法)

目录

前言

一、证明(勾股定理)

二、C 语言代码实现



前言

海伦公式又译为希伦公式,它是利用三角形的三条边的边长直接求三角形面积的公式。公式为:S = \sqrt{p(p-a)(p-b)(p-c)},其中 a、b、c 为三角形三条边的边长,p 为半周长,即 p = (a + b + c) / 2。

一、证明(勾股定理)

 如上图所示,则有:

 c^2 - x^2 = b^2 - (a-x)^2

解得:

x = \frac{a^2 - b^2 + c^2}{2a}

那么:

h = \sqrt{c^2 - x^2} = \sqrt{c^2 - (\frac{a^2 - b^2 + c^2}{2a})^2}

S = \frac{ah}{2} = \sqrt{\frac{a^2}{4}(c + \frac{a^2 - b^2 + c^2}{2a})(c - \frac{a^2 - b^2 + c^2}{2a})}

= \sqrt{\frac{a^2}{4}(\frac{2ac+a^2-b^2+c^2}{2a})(\frac{2ac-a^2+b^2-c^2}{2a})}

= \sqrt{\frac{a^2}{4}[\frac{(a+c)^2-b^2}{2a}][\frac{b^2-(a-c)^2}{2a}]} 

= \sqrt{\frac{(a+b+c)(a-b+c)(a+b-c)(b+c-a)}{16}} 

= \sqrt{(\frac{a+b+c}{2})[\frac{(a+b+c)-2a}{2}][\frac{(a+b+c)-2b}{2}][\frac{(a+b+c)-2c}{2}}] 

=\sqrt{p(p-a)(p-b)(p-c)}

二、C 语言代码实现

#include <stdio.h>
#include <math.h>

int main()
{
	double a = 0.0;
	double b = 0.0;
	double c = 0.0;
	scanf("%lf %lf %lf", &a, &b, &c);
	if (a + b > c && a + c > b && b + c > a)  // 三角形任意两边之和大于第三边
	{
		double p = (a + b + c) / 2;
		double area = sqrt(p * (p - a) * (p - b) * (p - c));
		printf("%lf\n", area);
	}
	else
	{
		printf("输入有误,无法构成三角形\n");
	}
	return 0;
}
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值