# Area of Largest rectangle that can be inscribed in an Ellipse

Given an ellipse, with major axis length **2a** & **2b**. The task is to find the area of the largest rectangle that can be inscribed in it.**Examples**:

Input: a = 4, b = 3 Output: 24 Input: a = 10, b = 8 Output: 160

**Approach**:

Let the upper right corner of the rectangle has co-ordinates **(x, y)**,

Then the area of rectangle, **A = 4*x*y**.

Now,

Equation of ellipse,

(x^{2}/a^{2}) + (y^{2}/b^{2}) = 1

Thinking of the area as a function ofx, we havedA/dx = 4xdy/dx + 4y

Differentiating equation of ellipse with respect to x, we have2x/a,^{2}+ (2y/b^{2})dy/dx = 0

so,dy/dx = -b,^{2}x/a^{2}y

anddAdx = 4y – (4b^{2}x^{2}/a^{2}y)

Setting this to 0 and simplifying, we havey.^{2}= b^{2}x^{2}/a^{2}

From equation of ellipse we know that,y^{2}=b^{2}– b^{2}x^{2}/a2

Thus,y,^{2}=b^{2}– y^{2}2y, and^{2}=b^{2}y.^{2}b^{2}= 1/2

Clearly, then,xas well, and the area is maximized when^{2}a^{2}= 1/2x= a/âˆš2andy=b/âˆš2

So the maximum area,A_{max}= 2ab

Below is the implementation of the above approach:

## C++

`// C++ Program to find the biggest rectangle` `// which can be inscribed within the ellipse` `#include <bits/stdc++.h>` `using` `namespace` `std;` `// Function to find the area` `// of the rectangle` `float` `rectanglearea(` `float` `a, ` `float` `b)` `{` ` ` `// a and b cannot be negative` ` ` `if` `(a < 0 || b < 0)` ` ` `return` `-1;` ` ` `// area of the rectangle` ` ` `return` `2 * a * b;` `}` `// Driver code` `int` `main()` `{` ` ` `float` `a = 10, b = 8;` ` ` `cout << rectanglearea(a, b) << endl;` ` ` `return` `0;` `}` |

## Java

`// Java Program to find the biggest rectangle` `// which can be inscribed within the ellipse` `import` `java.util.*;` `import` `java.lang.*;` `import` `java.io.*;` `class` `GFG{` `// Function to find the area` `// of the rectangle` `static` `float` `rectanglearea(` `float` `a, ` `float` `b)` `{` ` ` ` ` `// a and b cannot be negative` ` ` `if` `(a < ` `0` `|| b < ` `0` `)` ` ` `return` `-` `1` `;` ` ` ` ` `// area of the rectangle` ` ` `return` `2` `* a * b;` `}` ` ` `// Driver code` `public` `static` `void` `main(String args[])` `{` ` ` `float` `a = ` `10` `, b = ` `8` `;` ` ` `System.out.println(rectanglearea(a, b));` `}` `}` |

## Python 3

`# Python 3 Program to find the biggest rectangle` `# which can be inscribed within the ellipse` `# Function to find the area` `# of the rectangle` `def` `rectanglearea(a, b) :` ` ` `# a and b cannot be negative` ` ` `if` `a < ` `0` `or` `b < ` `0` `:` ` ` `return` `-` `1` ` ` `# area of the rectangle` ` ` `return` `2` `*` `a ` `*` `b` ` ` `# Driver code ` `if` `__name__ ` `=` `=` `"__main__"` `:` ` ` `a, b ` `=` `10` `, ` `8` ` ` `print` `(rectanglearea(a, b))` `# This code is contributed by ANKITRAI1` |

## C#

`// C# Program to find the` `// biggest rectangle which` `// can be inscribed within` `// the ellipse` `using` `System;` `class` `GFG` `{` `// Function to find the area` `// of the rectangle` `static` `float` `rectanglearea(` `float` `a,` ` ` `float` `b)` `{` ` ` `// a and b cannot be negative` ` ` `if` `(a < 0 || b < 0)` ` ` `return` `-1;` ` ` `// area of the rectangle` ` ` `return` `2 * a * b;` `}` `// Driver code` `public` `static` `void` `Main()` `{` ` ` `float` `a = 10, b = 8;` ` ` `Console.WriteLine(rectanglearea(a, b));` `}` `}` `// This code is contributed` `// by inder_verma` |

## PHP

`<?php` `// PHP Program to find the biggest` `// rectangle which can be inscribed` `// within the ellipse` `// Function to find the area` `// of the rectangle` `function` `rectanglearea(` `$a` `, ` `$b` `)` `{` ` ` `// a and b cannot be negative` ` ` `if` `(` `$a` `< 0 ` `or` `$b` `< 0)` ` ` `return` `-1;` ` ` `// area of the rectangle` ` ` `return` `2 * ` `$a` `* ` `$b` `;` `}` `// Driver code` `$a` `= 10; ` `$b` `= 8;` `echo` `rectanglearea(` `$a` `, ` `$b` `);` `// This code is contributed` `// by inder_verma` `?>` |

## Javascript

`<script>` `// javascript Program to find the biggest rectangle` `// which can be inscribed within the ellipse` `// Function to find the area` `// of the rectangle` `function` `rectanglearea(a , b)` `{` ` ` ` ` `// a and b cannot be negative` ` ` `if` `(a < 0 || b < 0)` ` ` `return` `-1;` ` ` ` ` `// area of the rectangle` ` ` `return` `2 * a * b;` `}` ` ` `// Driver code` `var` `a = 10, b = 8;` `document.write(rectanglearea(a, b));` `// This code contributed by Princi Singh` `</script>` |

**Output**

160

**Time Complexity: **O(1)**Auxiliary Space:** O(1)