Largest trapezoid that can be inscribed in a semicircle

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++
// 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
// Java Program to find the biggest trapezoid// which can be inscribed within the semicircleimport 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
# 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 trapezoid def 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#
// 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 // 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?> |
Javascript
<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 codevar 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)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!




