[Python] Herons Formelfunktionalisierung und Berechnung der maximalen Fläche

Definieren Sie die drei Seiten des Dreiecks als x, y, z und lassen Sie x + y + z = L (konstant). Beantworten Sie das Dreieck, das die Fläche des Dreiecks maximiert, wenn L konstant ist.

Wurde von der Schule ausgestellt.
Normalerweise wäre es notwendig, dies mathematisch zu lösen, aber in dem Moment, als ich dieses Problem sah.
"Ist es nicht offensichtlicher und leichter zu verstehen, wenn es durch ein Programm bewiesen wird?"
Ich dachte auch.
Dieses Mal dachte ich darüber nach, Herons offizielle Funktion in Python zu erstellen und sie mit einer while-Schleife zu beweisen.

Reihers Beamter

Bereich= 
\sqrt{s(s-x)(s-y)(s-z)}\\
s=
\frac{x+y+z}{2}

Lassen Sie uns zuerst Herons Formel zu einer Funktion machen.

Herons offizielle Funktionalisierung

def heron(a, b, c):
    x, y, z = float(a), float(b), float(c)
    s = (x + y + z) / 2

    if x+y>z and y+z>x and z+x>y:
        return (s * (s - x) * (s - y) * (s - z)) ** 0.5 #Reihers Beamter
    else:
        return 0

if __name__ == '__main__':
    x = input('Wert von x: ')
    y = input('Wert von y: ')
    z = input('Wert von z: ')
    print(heron(x, y, z))

Jetzt haben wir eine Funktion der Heron-Formel.
In der if-Anweisung tritt eine bedingte Verzweigung auf, abhängig davon, ob das Dreieck gilt oder nicht.
Wenn es gilt, wird das Ergebnis der Heron-Formel zurückgegeben, und wenn es nicht gilt, wird 0 zurückgegeben.
Sie können die Eingabeanweisung in die Funktion einfügen, aber ich habe sie nicht eingefügt, weil ich der Meinung war, dass es besser wäre, sie als Argument für multi zuzuweisen.

Berechnung der maximalen Fläche

~~ Wie ist die Form des Dreiecks, das die Fläche maximiert, wenn das Gesamt-L der Längen der drei Seiten konstant ist?
Wenn Menschen darüber nachdenken, denken sie zuerst an Round-Robin </ b>.
Es ist für den Menschen jedoch nicht unmöglich, diese enorme Menge an Berechnungen durchzuführen, aber es ist äußerst schwierig.
Was würdest du dann tun? Lassen Sie es einfach den Computer tun. Es führt zur Idee. ~~

Quellcode

import random

def heron(a, b, c): #Reihers Beamter
    x, y, z = float(a), float(b), float(c)
    s = (x + y + z) / 2

    if x+y>z and y+z>x and z+x>y:
        return (s * (s - x) * (s - y) * (s - z)) ** 0.5
    else:
        return 0

if __name__ == '__main__':
    s = 0
    i = 0
    while i < 20000000:
        x = random.randint(1, 120) #Kann gewechselt werden
        y = random.randint(1, 120) #Kann gewechselt werden
        z = random.randint(1, 120) #Kann gewechselt werden

        if (x+y+z) == 120.0: #Die Gesamtzahl der Seiten beträgt 120
            if heron(x, y, z) > s:
                s = heron(x, y, z)
                print('x={}, y={}, z={}In Gebieten={}'.format(x, y, z, s))
            else:
                continue
            i += 1
        else:
            i += 1

Um Zufallszahlen zu verwenden, importieren wir hier die Bibliotheksfunktion zufällig.
Diesmal ist die Gesamtlänge der drei Seiten auf 120 eingestellt. Ich werde später erklären, warum es 120 ist.
___ randint(a, b) randint () gibt eine zufällige Anzahl von ganzen Zahlen zurück, die größer oder gleich a und kleiner als oder gleich b sind.

Wenn Sie echte Zufallszahlen verwenden möchten, verwenden Sie Uniform (a, b) </ b>.


Da es 3 Arten von Zufallszahlen von ganzen Zahlen ~~ 1 ~ 120 zurückgibt, ist es notwendig, durch einfache Berechnung 1728000-mal 120 Würfel zu schleifen.
Nur für den Fall, diesmal wird es 2 Millionen Mal wiederholt.
Sie wird jedes Mal ausgegeben, wenn der Maximalwert aktualisiert wird, und die letzte Ausgabe ist der Maximalwert der Fläche dieses Dreiecks. ~~

Ergebnis

Zunächst hat das reguläre Dreieck </ b> den Maximalwert.
Der Grund, warum die Gesamtlänge der drei Seiten 120 beträgt, ist, dass ich das Ergebnis von x = 40, y = 40, z = 40 </ b> erwartet habe.
Sie sollten das gleiche Ergebnis erhalten, wenn Sie den Quellcode tatsächlich ausführen.
Selbst wenn Sie den Wert ändern und "(Gesamtlänge von 3 Seiten) / 3" gilt, sollte x = y = z erfüllt sein.

Recommended Posts