Largest trapezoid that can be inscribed in a semicircle
Last Updated :
29 Jun, 2022
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++
#include <bits/stdc++.h>
using namespace std;
float trapezoidarea( float r)
{
if (r < 0)
return -1;
float a = (3 * sqrt (3) * pow (r, 2)) / 4;
return a;
}
int main()
{
float r = 5;
cout << trapezoidarea(r) << endl;
return 0;
}
|
Java
import java.util.*;
import java.lang.*;
import java.io.*;
class GFG{
static float trapezoidarea( float r)
{
if (r < 0 )
return - 1 ;
float a = ( 3 * ( float )Math.sqrt( 3 )
* ( float )Math.pow(r, 2 )) / 4 ;
return a;
}
public static void main(String args[])
{
float r = 5 ;
System.out.printf( "%.3f" ,trapezoidarea(r));
}
}
|
Python 3
from math import *
def trapezoidarea(r) :
if r < 0 :
return - 1
a = ( 3 * sqrt( 3 ) * pow (r, 2 )) / 4
return a
if __name__ = = "__main__" :
r = 5
print ( round (trapezoidarea(r), 3 ))
|
C#
using System;
class GFG
{
static float trapezoidarea( float r)
{
if (r < 0)
return -1;
float a = (3 * ( float )Math.Sqrt(3) *
( float )Math.Pow(r, 2)) / 4;
return a;
}
public static void Main()
{
float r = 5;
Console.WriteLine( "" + trapezoidarea(r));
}
}
|
PHP
<?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)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...