Largest rectangle that can be inscribed in a semicircle
Last Updated :
09 Jun, 2022
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++
#include <bits/stdc++.h>
using namespace std;
float rectanglearea( float r)
{
if (r < 0)
return -1;
float a = r * r;
return a;
}
int main()
{
float r = 5;
cout << rectanglearea(r) << endl;
return 0;
}
|
Java
class GFG
{
static float rectanglearea( float r)
{
if (r < 0 )
return - 1 ;
float a = r * r;
return a;
}
public static void main(String[] args)
{
float r = 5 ;
System.out.println(( int )rectanglearea(r));
}
}
|
Python 3
def rectanglearea(r) :
if r < 0 :
return - 1
a = r * r
return a
if __name__ = = "__main__" :
r = 5
print (rectanglearea(r))
|
C#
using System;
class GFG
{
static float rectanglearea( float r)
{
if (r < 0)
return -1;
float a = r * r;
return a;
}
public static void Main()
{
float r = 5;
Console.Write(( int )rectanglearea(r));
}
}
|
PHP
<?php
function rectanglearea( $r )
{
if ( $r < 0)
return -1;
$a = $r * $r ;
return $a ;
}
$r = 5;
echo rectanglearea( $r ). "\n" ;
?>
|
Javascript
<script>
function rectanglearea(r)
{
if (r < 0)
return -1;
var a = r * r;
return a;
}
var r = 5;
document.write(parseInt(rectanglearea(r)));
</script>
|
OUTPUT :
25
Time Complexity: O(1)
Auxiliary Space: O(1)
Share your thoughts in the comments
Please Login to comment...