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.
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.
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.
~~ 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. ~~
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
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. ~~
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