Dado un semicírculo de radio r , la tarea es encontrar el trapezoide más grande que se puede inscribir en el semicírculo, con la base apoyada en el diámetro.
Ejemplos:
Input: r = 5 Output: 32.476 Input: r = 8 Output: 83.1384
Aproximación : Sea r el radio del semicírculo, x el borde inferior del trapezoide, y el borde superior, & h la altura del trapezoide.
Ahora de la figura,
r^2 = h^2 + (y/2)^2
o, 4r^2 = 4h^2 + y^2
y^2 = 4r^2 – 4h^2
y = 2√(r^2 – h^ 2)
Sabemos, Área del trapezoide, A = (x + y)*h/2
Entonces, A = hr + h√(r^2 – h^2)
tomando la derivada de esta función de área con respecto a h, ( teniendo en cuenta que r es una constante ya que tenemos el semicírculo de radio r para empezar)
dA/dh = r + √(r^2 – h^2) – h^2/√(r^2 – h^2)
Para encontrar los puntos críticos igualamos la derivada a cero y resolvemos para h, obtenemos
h = √3/2 * r
Entonces, x = 2 * r & y = r
Entonces, A = (3 * √3 * r^ 2)/4
A continuación se muestra la implementación del enfoque anterior :
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 trapezoid float 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 code int main() { float r = 5; cout << trapezoidarea(r) << endl; return 0; }
Java
// 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 trapezoid static 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 code public 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 everything from 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 semicircle using System; class GFG { // Function to find the area // of the biggest trapezoid static 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 code public 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 trapezoid function 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 trapezoid function 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
Complejidad del tiempo: O(1)
Espacio auxiliar: O(1)
Publicación traducida automáticamente
Artículo escrito por IshwarGupta y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA