Ravi de vous rencontrer, c'est MatLaser! Ceci est le premier article de Qiita à commémorer, merci! J'utilise habituellement Python pour la recherche, mais récemment, je me suis intéressé à diverses technologies et j'étudie petit à petit. J'ai toujours voulu faire ce post une fois, et GW a le temps, donc je l'ai écrit comme une bonne opportunité. En raison du manque de technologie et de connaissances, je pense qu'il y a un codage inefficace et des malentendus, mais comme il est écrit pour les débutants, j'espère que vous pouvez le voir avec des yeux chaleureux.
Veuillez vous référer au pdf des questions et réponses ici. Dans cet article également, nous allons essentiellement coder en fonction de la façon de résoudre la réponse.
Problème Réponse 1,4,5,6 Réponse 2,3
(1) Vous utilisez simplement le théorème du cosinus.
(2) En définissant correctement les coordonnées des trois points A, B et C, l'existence de la variable $ s $ peut être définie uniquement sur les coordonnées $ y $ du point P, ce qui facilite un peu le calcul.
Voici l'image de la réponse.
Codons.
1.py
#Conditions initiales
ab = 1
ac = 1
bc = 0.5
import numpy as np
# (1)
#Théorème du cosinus
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 = [] #Une liste qui stocke la valeur de la variable s et de la fonction à ce moment-là sous forme de taple
# 0<s<1 à 0.Changer par 01 et rechercher tout
for s in np.arange(0,1,0.01):
value = func(s)
lis.append((s, value))
print(lis)
# min_Trier par valeur et afficher le premier élément
lis_sort = sorted(lis, key=lambda values: values[1])
print(lis_sort[0]) # (s, min_value) = (0.67, 0.9375)
(1) Vous pouvez trouver docilement l'intersection des droites L et M et la remplacer par le cercle C.
(2) Le sujet est satisfait lorsque la distance entre le centre du cercle C et la droite L est inférieure au rayon (a) du cercle C.
(3) Similaire à (2), vous pouvez trouver le nombre de magasins partagés en comparant la distance entre le point et la ligne droite et le rayon du cercle C, puis il suffit de regarder honnêtement. Cela ne change que l'inégalité dans (2), donc je vais l'omettre.
Voici l'image de la réponse.
Codons.
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) #L'intersection des droites L et M(a, a)je comprends
#Dans le cercle C (a,Remplaçant a)
sympy.var('x, y, a')
x = d[x] #Remplacez x par la coordonnée x de l'intersection obtenue ci-dessus
y = d[y] #Substituez la coordonnée y de l'intersection obtenue ci-dessus pour y
sol = sympy.solve (1 * x**2 - 2 * a * x + y**2 - 4 * y + 4, a)
sympy.init_printing()
print(sol) #Obtenez une liste de réponses (seulement 1 cette fois)
# (2)
#La solution de l'inégalité peut être le type de l'intervalle avec Intervalle et l'ensemble de somme doit être pris, mais cette fois, il se termine par trouver la valeur limite à partir de l'équation.
dis = abs(6 - 3 * a)/5
# dis^2 = abs(a)Pour mettre les deux côtés au carré et résoudre
expr3 = 16 * a**2 + 36 * a - 36
d2 = sympy.solve([expr3])
print(d2) # [{a: -3}, {a: 3/4}]Valeur limite où le nombre de magasins partagés change
# (3)
#réduction
(1) En regardant l'énoncé du problème, je pense que les trois solutions suivantes me viennent à l'esprit. ・ Méthode de réduction mathématique ・ Dérivation de l'inégalité par transformation de formule ・ Fonctionnalisation: $ f (n) = 3 ^ n- (2 ^ n + n ^ 2 + 8) $, et $ n ≧ 3 $ indique que $ f (n)> 0 $ La réponse utilise la méthode de régression mathématique, mais du point de vue de la résolution par programmation, je pense que la fonctionnalisation est la plus simple.
(2) Puisque (1) montre que $ n ≧ 3 $ et $ f (n)> 0 $, au moins $ n <3 $ est requis pour $ f (n) ≦ 0 $. Doit être. De plus, puisque $ n $ est un entier positif cette fois, nous pouvons voir que $ n = 1,2 $ est une solution candidate. Une fois que vous savez cela, tout ce que vous avez à faire est de remplacer et de voir si le sujet tient.
(3) Puisque $ a, b, n $ valent tous 0 ou plus, l'équation $ 2 ^ n + n ^ 2 + 8 = 3 ^ n + an + b $ est valable pour $ n = 1 $ ou $ 2 $ Seulement.
Voici l'image de la réponse.
Codons.
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 ou plus
#Et n>3 à func_p2(n) >0 (∵ 3**n >> 2**n)
#Par conséquent n>3 à func_p1(n)Augmente de façon monotone...(1)
#Imprimer également(func_p1(3)) # 18.11 ← 0 ou plus...(2)
# (1),(2)Plus n>3 à func(n)Également en augmentation monotone...(3)
#Impression supplémentaire(func(3)) #2 ← 0 ou plus...(4)
#Donc,(3),(4)Plus n>=3 à func(n) > 0
# Q.E.D
# (2)
print(func(1), func(2)) # -8 -7 Par conséquent f(n) <0, donc n qui satisfait le sujet est 1,2
# (3)
lis = [] #Liste des solutions
for a in range(9): # n,a,b >=De 0, a,b vaut 0~8 suffit
for b in range(9):
# n=Quand 1
jouken1 = a + b # joken1 = 8
# n=2 heures
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)]
Cette fois, je voudrais terminer ici. Je pourrais faire le reste des problèmes si je suis trop libre pour mourir ww J'ai utilisé Python pour la première fois pour résoudre des équations simultanées, ce qui est merveilleux. Vous pouvez vraiment tout faire, Python est incroyable! Si je trouve quelque chose que je veux essayer à nouveau ou quelque chose qui semble intéressant, je le ferai sans le vouloir.
Merci pour votre visite.
Recommended Posts