Ce que j'apprends maintenant est tellement intéressant lorsque j'essaie diverses choses avec python et que j'ai oublié d'écrire un article. Vous n'avez pas à écrire python dans le code pour l'affectation, la factorisation, la différenciation, etc. La bibliothèque est trop pratique. J'étudie actuellement la théorie du chaos élémentaire, l'analyse de régression multiple de l'analyse multivariée et la distribution normale multivariée dans le cadre de cours au choix à l'université. Je vais le visualiser car je ne comprends rien même si je regarde les symboles que je ne comprends pas bien en classe. Je ne comprends pas du tout la théorie, mais si vous la regardez, cela peut être une chance de mieux comprendre. La théorie du chaos utilisant l'analyse multivariée et les équations différentielles est trop difficile, donc je trébuche depuis le début, donc cette fois j'ai cherché diversement sur le net du début à l'analyse, ce qui est idéal J'ai cherché le code. Pour dire les mots difficiles, je ne comprends rien ... Je n'ai pas écrit cet article moi-même ... Difficile ..... Un jour, je veux comprendre la théorie de l'analyse multivariée et appliquer du code. Non, pourquoi êtes-vous si motivé alors que vous ne comprenez rien?
J'ai importé la fonction avec sympy en python. Bibliothèque C'est tellement pratique que la différenciation est affichée si intuitivement ... Comme vous pouvez le voir dans le code, la fonction qui utilise la différenciation est diff ().
import sympy as sym
from sympy import * #Imoprt toutes les fonctionnalités de la bibliothèque sympy
sym.init_printing() #Format de sortie
x=Symbol('x') #lettre'x'Est défini comme la variable x
y=Symbol('y') #lettre'y'Est défini comme la variable y
#différentiel
a=diff(sin(x),x) #sin(x)Différenciation de
b=diff(exp(x),x) # e^Différenciation de x
#Différentiel plus élevé
c=diff(x**4+x**3,x,2) # x^4+x^Différentiel d'ordre 2 de 3
#Différenciation partielle
d=diff(x**2+x*y+2*y**2,x) # x^2+xy+2y^Différenciation partielle de 2 par x
e=sym.integrate(x+2*y,(x,0,2),(y,2,3))
print('a: {0}'.format(a))
print('b: {0}'.format(b))
print('c: {0}'.format(c))
print('d: {0}'.format(d))
print('e: {0}'.format(e))
Du haut jusqu'en bas
cos(x)\\
e^x\\
6x(2x + 1)\\
2x+y\\
24
{3x^2+6xy+3y^2+x^3+y^3}
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
def func1(x, y):
return 3*x**2+6*x*y+3*y**2+x**3+y**3
x = np.arange(-10.0, 5.0, 0.1)
y = np.arange(-10.0, 5.0, 0.1)
X, Y = np.meshgrid(x, y)
Z = func1(X, Y)
fig = plt.figure()
ax = Axes3D(fig)
ax.set_xlabel("x")
ax.set_ylabel("y")
ax.set_zlabel("f(x, y)")
ax.plot_wireframe(X, Y, Z)
plt.show()
Si vous prenez la peine de trouver le point d'arrêt et le point maximum à la main, il semble que le point de valeur maximum soit à (-4, -4). C'est difficile à comprendre. Je me demande si ça correspond
from sympy import *
x = Symbol('x')
y = Symbol('y')
f =3*x**2+6*x*y+3*y**2+x**3+y**3
f_x = Derivative(f,x).doit() #Différenciation partielle du premier ordre avec x
f_y = Derivative(f,y).doit() #Différenciation partielle du premier ordre avec y
stationary_points = solve([f_x,f_y],[x,y]) #Point d'arrêt de la fonction
stationary_points = list(map(lambda x:simplify(x),stationary_points)) #Simplification
f_xx = Derivative(f, x, 2).doit() #Différenciation partielle du second ordre avec x
f_yy = Derivative(f, y, 2).doit() #Différenciation partielle du second ordre avec y
f_xy = Derivative(f_x,y).doit() #Partiellement différencié par x puis partiellement différencié par y
f_yx = Derivative(f_y,x).doit() #Partiellement différencié par y puis partiellement différencié par x
#Procession de Hesse
hesse = Matrix([
[f_xx,f_xy],
[f_yx,f_yy]
])
#Formule matricielle de la matrice de Hesse
det_hessian = hesse.det()
#Sortie pour le moment
print('f_x: {0}'.format(f_x))
print('f_y: {0}'.format(f_y))
print('f_xx: {0}'.format(f_xx))
print('f_yy: {0}'.format(f_yy))
print('f_xy: {0}'.format(f_xy))
print('f_yx: {0}'.format(f_yx))
print('Tous les arrêts{0}'.format(stationary_points))
#Jugement
for i in range(len(stationary_points)):
sign_det_hessian = det_hessian.subs([(x,stationary_points[i][0]),(y,stationary_points[i][1])]).evalf()
if sign_det_hessian > 0:
sign_f_xx = f_xx.subs([(x,stationary_points[i][0]),(y,stationary_points[i][1])]).evalf()
if sign_f_xx > 0:
print('Point d'arrêt:{0}Est f(x,y)Point minimal'.format([stationary_points[i][0],stationary_points[i][1]]))
elif sign_f_xx < 0:
print('Point d'arrêt:{0}Est f(x,y)Point maximum de'.format([stationary_points[i][0],stationary_points[i][1]]))
else:
print('Ne peut pas être déterminé par cette méthode')
elif sign_det_hessian < 0:
print('Point d'arrêt:{0}Est f(x,y)Point de selle'.format([stationary_points[i][0],stationary_points[i][1]]))
Il y en a eu, mais je ne comprends pas. Vous ne pouvez même pas le voir de vos propres yeux. Seule l'image d'un mouchoir volant dans les airs me vient à l'esprit ...
J'ai vérifié si c'était la limite. Nous avons utilisé x = rcosθ y = 2rsinθ en utilisant les coordonnées polaires Changez la valeur des coordonnées polaires en fonction de la valeur du dénominateur et de la situation, faites une formule de la fonction triangulaire, etc. et essayez environ la minute. À propos, la valeur de convergence est de 2.
\lim_{(x,y)\to (0,0)}\frac{x^3-8y^3+2x^2+8y^2}{x^2+4y^2}
import sympy as sym
import math
sym.init_printing()
Pi = sym.S.Pi #Pi
E = sym.S.Exp1 #Bas du logarithme naturel
I = sym.S.ImaginaryUnit #Unité imaginaire
oo = sym.oo #Infini
#Définition des variables à utiliser(Toute une lettre minuscule est un symbole)
(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) = sym.symbols('a b c d e f g h i j k l m n o p q r s t u v w x y z')
import numpy as np
import matplotlib.pyplot as plt
c=(x**3-8*y**3+2*x**2+8*y**2)/(x**2+4*y**2)
d=sym.limit(c,x,0)
print('{0}'.format(d))
dd=sym.limit(d,y,0)
e=sym.limit(c,y,0)
ee=sym.limit(e,x,0)
print('{0}'.format(e))
if dd == ee :
print('Des limites de fonction existent')
f=c.subs([(x,X),(y,1/2*Y)]).trigsimp() #Besoin de simplification(Tu devrais le faire ligne par ligne)
g=np.abs(sym.limit(f-ee,r,0))
print('{0}'.format(g))
else :
print('Il n'y a pas de limite de fonction')
Ce résultat d'exécution montre que la limite de la fonction existe en toute sécurité, mais lorsque la limite n'existe pas, nous n'avons pas vérifié comment elle est exécutée. Je ferai de mon mieux.
(x^2+xy+y^2)\log(x^2+y^2)
J'ai essayé de différencier partiellement chacun de x et y.
from sympy import *
import sympy as sym
import math
from IPython.display import display, Latex
x=Symbol('x') #lettre'x'Est défini comme la variable x
y=Symbol('y') #lettre'y'Est défini comme la variable y
f = (x ** 2 + x * y + y ** 2) * sym.log(x ** 2 + y ** 2)
display(f)
dx = sym.diff(f, x).subs({y: 0})
dy = sym.diff(f, y).subs({x: 0})
display(dx)
sym.plot(dx, (x, -5, 5))
display(dy)
sym.plot(dy, (y, -5, 5))
Lorsque j'ai accepté la question chez teratail, j'ai pu obtenir la réponse. Merci beaucoup. Lorsque x et y sont partiellement différenciés, tous deux passent par l'origine, il est donc possible de se différencier partiellement à l'origine. Facile à comprendre.
C'était juste très pratique pour python. Comparé à d'autres langues, il a beaucoup de bibliothèques et est vraiment incroyable. Ensuite, je voudrais ajouter une théorie. Cette fois aussi, ce n'était qu'une introduction. Je veux faire quelque chose de plus appliqué. Souhaitez-vous utiliser ce code pour des calculs et des contrôles difficiles?
https://qiita.com/tibigame/items/aebbac176d9bbdaf3d15 https://qiita.com/hiroyuki_mrp/items/d373b951e216f62c4957 https://qiita.com/PlanetMeron/items/63ac58898541cbe81ada https://short4010.hatenablog.com/entry/2019/05/12/142731 C'est mon compte https://teratail.com/questions/283867
Recommended Posts