Schön dich kennenzulernen, das ist MatLaser! Dies ist Qiitas erster Gedenkbeitrag, danke! Normalerweise benutze ich Python für Forschungszwecke, aber seit kurzem interessiere ich mich für verschiedene Technologien und lerne nach und nach. Ich wollte diesen Beitrag schon immer einmal machen, und GW hat Zeit, also habe ich ihn als gute Gelegenheit geschrieben. Ich denke, dass es aufgrund mangelnder Fähigkeiten und Kenntnisse ineffiziente Codierungen und Missverständnisse gibt, aber da es für Anfänger geschrieben wurde, um es auszugeben, hoffe ich, dass Sie es mit warmen Augen sehen können.
Bitte lesen Sie das PDF der Fragen und Antworten hier. Auch in diesem Artikel werden wir grundsätzlich nach der Lösung der Antwort codieren.
Problem Antwort 1,4,5,6 Antwort 2,3
(1) Sie verwenden einfach den Kosinussatz.
(2) Durch richtiges Einstellen der Koordinaten der drei Punkte A, B und C kann die Existenz der Variablen $ s $ nur auf die $ y $ -Koordinaten des Punktes P eingestellt werden, was die Berechnung etwas erleichtert.
Unten ist das Antwortbild.
Lassen Sie uns codieren.
1.py
#Anfangsbedingungen
ab = 1
ac = 1
bc = 0.5
import numpy as np
# (1)
#Kosinussatz
cos_theta = (ab**2 + ac**2 - bc**2) / (2 * ab * ac)
sin_theta = np.sqrt(1 - cos_theta**2)
print(cos_theta, sin_theta) # 0.875 0.484 = 7/8 (√15)/8
# (2)
# func = AP^2 + BP^2 + CP^2
def func(s):
return 25/32 + 15/64 * ((3 * (s - 2/3)**2) + 2/3)
lis = [] #Eine Liste, in der der Wert der Variablen s und der Funktion zu diesem Zeitpunkt als Taple gespeichert ist
# 0<s<1 bis 0.Ändern Sie bis 01 und suchen Sie alle
for s in np.arange(0,1,0.01):
value = func(s)
lis.append((s, value))
print(lis)
# min_Nach Wert sortieren und das erste Element ausgeben
lis_sort = sorted(lis, key=lambda values: values[1])
print(lis_sort[0]) # (s, min_value) = (0.67, 0.9375)
(1) Sie können gehorsam den Schnittpunkt der Geraden L und M finden und den Kreis C ersetzen.
(2) Das Thema ist erfüllt, wenn der Abstand zwischen dem Mittelpunkt des Kreises C und der Geraden L kleiner als der Radius (a) des Kreises C ist.
(3) Ähnlich wie in (2) können Sie die Anzahl der gemeinsam genutzten Speicher ermitteln, indem Sie den Abstand zwischen dem Punkt und der geraden Linie und den Radius des Kreises C vergleichen und dann ehrlich nachschlagen. Dies ändert nur die Ungleichung in (2), daher werde ich sie weglassen.
Unten ist das Antwortbild.
Lassen Sie uns codieren.
2.py
import sympy
x = sympy.Symbol('x')
y = sympy.Symbol('y')
a = sympy.Symbol('a')
# (1)
expr1 = -4 * x + 3 * y + a
expr2 = 3 * x + 4 * y - 7 * a
d = sympy.solve([expr1, expr2], [x,y])
# print(d) #Der Schnittpunkt der Geraden L und M.(a, a)ich verstehe
#Im Kreis C (a,Ersatz a)
sympy.var('x, y, a')
x = d[x] #Ersetzen Sie x durch die x-Koordinate des oben erhaltenen Schnittpunkts
y = d[y] #Ersetzen Sie y durch die y-Koordinate des oben erhaltenen Schnittpunkts
sol = sympy.solve (1 * x**2 - 2 * a * x + y**2 - 4 * y + 4, a)
sympy.init_printing()
print(sol) #Erhalten Sie eine Liste mit Antworten (diesmal nur 1)
# (2)
#Die Lösung der Ungleichung kann der Typ des Intervalls mit Intervall sein und die Summe sollte genommen werden, diesmal endet sie jedoch mit dem Finden des Grenzwerts aus der Gleichung.
dis = abs(6 - 3 * a)/5
# dis^2 = abs(a)Beide Seiten quadrieren und lösen
expr3 = 16 * a**2 + 36 * a - 36
d2 = sympy.solve([expr3])
print(d2) # [{a: -3}, {a: 3/4}]Grenzwert, bei dem sich die Anzahl der freigegebenen Speicher ändert
# (3)
#Kürzung
(1) Wenn ich mir die Problemstellung anschaue, denke ich, dass mir die folgenden drei Lösungen in den Sinn kommen. ・ Mathematische Reduktionsmethode ・ Herleitung der Ungleichung durch Formeltransformation ・ Funktionalisierung: $ f (n) = 3 ^ n- (2 ^ n + n ^ 2 + 8) $, und $ n ≧ 3 $ gibt an, dass $ f (n)> 0 $ ist Die Antwort verwendet die mathematische Regressionsmethode, aber aus der Perspektive der Lösung durch Programmierung denke ich, dass die Funktionalisierung am einfachsten ist.
(2) Da (1) zeigt, dass $ n ≧ 3 $ und $ f (n)> 0 $ sind, ist für $ f (n) ≦ 0 $ mindestens $ n <3 $ erforderlich. Muss sein. Da $ n $ diesmal eine positive ganze Zahl ist, können wir auch sehen, dass $ n = 1,2 $ eine Kandidatenlösung ist. Sobald Sie dies wissen, müssen Sie nur noch ersetzen und prüfen, ob das Thema zutrifft.
(3) Da $ a, b, n $ alle 0 oder mehr sind, gilt die Gleichung $ 2 ^ n + n ^ 2 + 8 = 3 ^ n + an + b $ für $ n = 1 $ oder $ 2 $ Nur.
Unten ist das Antwortbild.
Lassen Sie uns codieren.
3.py
# (1)
import math
# f(n)
def func(n):
return 3**n - (2**n + n**2 + 8)
# f'(n)
def func_p1(n):
return 3**n * math.log(3) - (2**n * math.log(2) + 2 * n)
# f''(n)
def func_p2(n):
return 3**n * math.log(3)**2 - 2**n * math.log(2)**2
# print(func_p2(3)) # 28.74 ← 0 oder mehr
#Und n>3 bei func_p2(n) >0 (∵ 3**n >> 2**n)
#Daher n>3 bei func_p1(n)Steigt monoton an...(1)
#Auch drucken(func_p1(3)) # 18.11 ← 0 oder mehr...(2)
# (1),(2)Mehr n>3 bei func(n)Auch monoton ansteigend...(3)
#Weiterer Druck(func(3)) #2 ← 0 oder mehr...(4)
#Deshalb,(3),(4)Mehr n>=3 bei func(n) > 0
# Q.E.D
# (2)
print(func(1), func(2)) # -8 -7 Deshalb f(n) <0, daher ist n, das das Subjekt erfüllt, 1,2
# (3)
lis = [] #Lösungsliste
for a in range(9): # n,a,b >=Von 0 a,b ist 0~8 ist genug
for b in range(9):
# n=Wenn 1
jouken1 = a + b # joken1 = 8
# n=2 Uhr
jouken2 = 2 * a + b # joken2 = 7
if jouken1 == 8:
lis.append((a,b,1))
elif jouken2 == 7:
lis.append((a,b,2))
else:
continue
print(lis)
#[(0, 7, 2), (0, 8, 1), (1, 5, 2), (1, 7, 1), (2, 3, 2), (2, 6, 1), (3, 1, 2), (3, 5, 1), (4, 4, 1), (5, 3, 1), (6, 2, 1), (7, 1, 1), (8, 0, 1)]
Dieses Mal möchte ich hier enden. Ich könnte den Rest der Probleme machen, wenn ich zu frei bin, um ww zu sterben Ich habe Python zum ersten Mal verwendet, um simultane Gleichungen zu lösen, was wunderbar ist. Sie können wirklich alles tun, Python ist unglaublich! Wenn mir etwas einfällt, das ich noch einmal versuchen möchte, oder etwas, das interessant aussieht, werde ich es locker machen.
Danke für Ihren Besuch.
Recommended Posts