El trapezoide más grande que se puede inscribir en un semicírculo

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>
Producción: 

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *