Given a semicircle of radius r, the task is to find the largest trapezoid that can be inscribed in the semicircle, with base lying on the diameter. Examples:
Input: r = 5
Output: 32.476
Input: r = 8
Output: 83.1384

Approach: Let r be the radius of the semicircle, x be the lower edge of the trapezoid, and y the upper edge, & h be the height of the trapezoid. Now from the figure,
r^2 = h^2 + (y/2)^2 or, 4r^2 = 4h^2 + y^2 y^2 = 4r^2 – 4h^2 y = 2?(r^2 – h^2) We know, Area of Trapezoid, A = (x + y)*h/2 So, A = hr + h?(r^2 – h^2) taking the derivative of this area function with respect to h, (noting that r is a constant since we are given the semicircle of radius r to start with) dA/dh = r + ?(r^2 – h^2) – h^2/?(r^2 – h^2) To find the critical points we set the derivative equal to zero and solve for h, we get h = ?3/2 * r So, x = 2 * r & y = r So, A = (3 * ?3 * r^2)/4
Below is the implementation of above approach:
C++
<?php
function trapezoidarea( $r )
{
if ( $r < 0)
return -1;
$a = (3 * sqrt(3) * pow( $r , 2)) / 4;
return $a ;
}
$r = 5;
echo trapezoidarea( $r ). "\n" ;
?>
|
Javascript
<script>
function trapezoidarea(r)
{
if (r < 0)
return -1;
var a = (3 * Math.sqrt(3)
* Math.pow(r, 2)) / 4;
return a;
}
var r = 5;
document.write(trapezoidarea(r).toFixed(3));
</script>
|
Time complexity: O(1)
Auxiliary space: O(1)
|