Largest trapezoid that can be inscribed in a semicircle

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)^2or, 4r^2 = 4h^2 + y^2y^2 = 4r^2 – 4h^2y = 2√(r^2 – h^2)We know, Area of Trapezoid, A = (x + y)*h/2So, 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 geth = √3/2 * rSo, x = 2 * r & y = r So, A = (3 * √3 * r^2)/4  
Below is the implementation of above approach:  
C++
Java
Python 3
C#
PHP
Javascript
// C++ Program to find the biggest trapezoid// which can be inscribed within the semicircle#include <bits/stdc++.h>using namespace std; // Function to find the area// of the biggest trapezoidfloat trapezoidarea(float r){     // the radius cannot be negative    if (r < 0)        return -1;     // area of the trapezoid    float a = (3 * sqrt(3) * pow(r, 2)) / 4;     return a;} // Driver codeint main(){    float r = 5;    cout << trapezoidarea(r) << endl;    return 0;}
// Java Program to find the biggest trapezoid// which can be inscribed within the semicircle import java.util.*;import java.lang.*;import java.io.*; class GFG{// Function to find the area// of the biggest trapezoidstatic float trapezoidarea(float r){     // the radius cannot be negative    if (r < 0)        return -1;     // area of the trapezoid    float a = (3 * (float)Math.sqrt(3)            * (float)Math.pow(r, 2)) / 4;     return a;} // Driver codepublic static void main(String args[]){    float r = 5;    System.out.printf("%.3f",trapezoidarea(r));}}
# Python 3 Program to find the biggest trapezoid# which can be inscribed within the semicircle # from math import everythingfrom math import * # Function to find the area# of the biggest trapezoiddef trapezoidarea(r) :     # the radius cannot be negative    if r < 0 :        return -1     # area of the trapezoid    a = (3 * sqrt(3) * pow(r,2)) / 4     return a  # Driver code    if __name__ == "__main__" :     r = 5     print(round(trapezoidarea(r),3))  # This code is contributed by ANKITRAI1
// C# Program to find the biggest// trapezoid which can be inscribed// within the semicircleusing System; class GFG{// Function to find the area// of the biggest trapezoidstatic float trapezoidarea(float r){     // the radius cannot be negative    if (r < 0)        return -1;     // area of the trapezoid    float a = (3 * (float)Math.Sqrt(3) *                   (float)Math.Pow(r, 2)) / 4;     return a;} // Driver codepublic static void Main(){    float r = 5;    Console.WriteLine("" + trapezoidarea(r));}} // This code is contributed// by inder_verma
<?php// PHP Program to find the biggest// trapezoid which can be inscribed// within the semicircle // Function to find the area// of the biggest trapezoidfunction trapezoidarea($r){     // the radius cannot be negative    if ($r < 0)        return -1;     // area of the trapezoid    $a = (3 * sqrt(3) * pow($r, 2)) / 4;     return $a;} // Driver code$r = 5;echo trapezoidarea($r)."\n"; // This code is contributed// by ChitraNayal?>
<script> // javascript Program to find the biggest trapezoid// which can be inscribed within the semicircle // Function to find the area// of the biggest trapezoidfunction trapezoidarea(r){     // the radius cannot be negative    if (r < 0)        return -1;     // area of the trapezoid    var a = (3 * Math.sqrt(3)            * Math.pow(r, 2)) / 4;     return a;} // Driver code var r = 5;document.write(trapezoidarea(r).toFixed(3)); // This code contributed by Princi Singh </script>
32.476
 
Time complexity: O(1)
Auxiliary space: O(1)
tufan_gupta2000
ankthon
inderDuMCA
ukasp
princi singh
krishnav4
circle
school-programming
Geometric
Mathematical
Mathematical
Geometric
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.