Largest rectangle that can be inscribed in a semicircle
Given a semicircle of radius r, we have to find the largest rectangle that can be inscribed in the semicircle, with base lying on the diameter.
Examples:
Input : r = 4 Output : 16 Input : r = 5 Output :25
Let r be the radius of the semicircle, x one half of the base of the rectangle, and y the height of the rectangle. We want to maximize the area, A = 2xy.
So from the diagram we have,
y = ?(r^2 – x^2)
So, A = 2*x*(?(r^2 – x^2)), or dA/dx = 2*?(r^2 – x^2) -2*x^2/?(r^2 – x^2)
Setting this derivative equal to 0 and solving for x,
dA/dx = 0
or, 2*?(r^2 – x^2) – 2*x^2/?(r^2 – x^2) = 0
2r^2 – 4x^2 = 0
x = r/?2
This is the maximum of the area as,
dA/dx > 0 when x > r/?2
and, dA/dx < 0 when x > r/?2
Since y =?(r^2 – x^2) we then have
y = r/?2
Thus, the base of the rectangle has length = r/?2 and its height has length ?2*r/2.
So, Area, A=r^2
C++
// C++ Program to find the // the biggest rectangle // which can be inscribed // within the semicircle #include <bits/stdc++.h> using namespace std; // Function to find the area // of the biggest rectangle float rectanglearea( float r) { // the radius cannot be negative if (r < 0) return -1; // area of the rectangle float a = r * r; return a; } // Driver code int main() { float r = 5; cout << rectanglearea(r) << endl; return 0; } |
Java
// Java Program to find the // the biggest rectangle // which can be inscribed // within the semicircle class GFG { // Function to find the area // of the biggest rectangle static float rectanglearea( float r) { // the radius cannot be negative if (r < 0 ) return - 1 ; // area of the rectangle float a = r * r; return a; } // Driver code public static void main(String[] args) { float r = 5 ; System.out.println(( int )rectanglearea(r)); } } // This code is contributed // by ChitraNayal |
Python 3
# Python 3 Program to find the # the biggest rectangle # which can be inscribed # within the semicircle # Function to find the area # of the biggest rectangle def rectanglearea(r) : # the radius cannot # be negative if r < 0 : return - 1 # area of the rectangle a = r * r return a # Driver Code if __name__ = = "__main__" : r = 5 # function calling print (rectanglearea(r)) # This code is contributed # by ANKITRAI1 |
C#
// C# Program to find the // the biggest rectangle // which can be inscribed // within the semicircle using System; class GFG { // Function to find the area // of the biggest rectangle static float rectanglearea( float r) { // the radius cannot be negative if (r < 0) return -1; // area of the rectangle float a = r * r; return a; } // Driver code public static void Main() { float r = 5; Console.Write(( int )rectanglearea(r)); } } // This code is contributed // by ChitraNayal |
PHP
<?php // PHP Program to find the // the biggest rectangle // which can be inscribed // within the semicircle // Function to find the area // of the biggest rectangle function rectanglearea( $r ) { // the radius cannot // be negative if ( $r < 0) return -1; // area of the rectangle $a = $r * $r ; return $a ; } // Driver code $r = 5; echo rectanglearea( $r ). "\n" ; // This code is contributed // by ChitraNayal ?> |
Javascript
<script> // javascript Program to find the // the biggest rectangle // which can be inscribed // within the semicircle // Function to find the area // of the biggest rectangle function rectanglearea(r) { // the radius cannot be negative if (r < 0) return -1; // area of the rectangle var a = r * r; return a; } // Driver code var r = 5; document.write(parseInt(rectanglearea(r))); // This code is contributed by Amit Katiyar </script> |
OUTPUT :
25
Time Complexity: O(1)
Auxiliary Space: O(1)
Contact Us