Ich habe Jacobian und teilweise Differenzierung mit Python versucht

Ich steckte in einer Formel in Python fest

Was ich jetzt lerne, ist so interessant, wenn ich verschiedene Dinge mit Python ausprobiere und vergessen habe, einen Artikel zu schreiben. Sie müssen für die Zuweisung, Faktorisierung, Differenzierung usw. kein Python in Code schreiben. Die Bibliothek ist zu bequem. Ich studiere derzeit elementare Chaostheorie, multiple Regressionsanalyse der multivariaten Analyse und multivariate Normalverteilung als Wahlfächer an der Universität. Ich werde es mir vorstellen, weil ich nichts verstehen kann, selbst wenn ich mir die Symbole ansehe, die ich im Klassenzimmer nicht gut verstehe. Ich verstehe die Theorie überhaupt nicht, aber wenn Sie sie betrachten, kann es eine Chance sein, etwas Verständnis zu erlangen. Die Chaostheorie mit multivariater Analyse und Differentialgleichungen ist zu schwierig, deshalb stolpere ich von Anfang an, also habe ich diesmal von Anfang an bis zur Analyse im Internet unterschiedlich gesucht, was ideal ist Ich habe nach dem Code gesucht. Um die schwierigen Worte zu sagen, ich verstehe nichts ... Ich habe diesen Artikel nicht selbst geschrieben ... Schwierig ... Eines Tages möchte ich die Theorie der multivariaten Analyse verstehen und Code anwenden. Nein, warum bist du so motiviert geworden, als du nichts verstanden hast?

Programmcode-Basisbibliothek

Ich habe die Funktion mit Sympy in Python importiert. Bibliothek Es ist so bequem, dass die Differenzierung so intuitiv angezeigt wird ... Wie Sie dem Code entnehmen können, ist die Funktion, die die Differenzierung verwendet, diff ().

import sympy as sym
from sympy import *      #Imoprt alle Funktionen aus der Sympy-Bibliothek
sym.init_printing()      #Ausgabe formatieren

x=Symbol('x')                  #Brief'x'Ist als die Variable x definiert
y=Symbol('y')                 #Brief'y'Ist als die Variable y definiert


#Differential
a=diff(sin(x),x)  #sin(x)Differenzierung von
b=diff(exp(x),x)   # e^Differenzierung von x

#Höheres Differential
c=diff(x**4+x**3,x,2)  # x^4+x^Differenz 2. Ordnung von 3


#Teilweise Differenzierung
d=diff(x**2+x*y+2*y**2,x)  # x^2+xy+2y^Partielle Differenzierung von 2 durch 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))

Von oben nach unten

cos(x)\\
e^x\\
6x(2x + 1)\\
2x+y\\
24


Diagrammanzeige von Funktionen mit zwei Variablen


{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()

yakobian.png yakobi2.png

Wenn Sie sich die Mühe machen, den Stopppunkt und den Maximalpunkt von Hand zu finden, scheint der Maximalwertpunkt bei (-4, -4) zu liegen. Es ist schwer zu verstehen. Ich frage mich, ob es passt

Finden Sie den Minimalwert und den Maximalwert

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() #Partielle Differenzierung erster Ordnung mit x

f_y = Derivative(f,y).doit() #Partielle Differenzierung erster Ordnung mit y



stationary_points = solve([f_x,f_y],[x,y]) #Funktionsstopppunkt

stationary_points = list(map(lambda x:simplify(x),stationary_points)) #Vereinfachung



f_xx = Derivative(f, x, 2).doit() #Partielle Differenzierung zweiter Ordnung mit x

f_yy = Derivative(f, y, 2).doit() #Partielle Differenzierung zweiter Ordnung mit y

f_xy = Derivative(f_x,y).doit() #Teilweise differenziert durch x und teilweise differenziert durch y

f_yx = Derivative(f_y,x).doit() #Teilweise differenziert durch y und dann teilweise differenziert durch x



#Hessen Prozession

hesse = Matrix([

[f_xx,f_xy],

[f_yx,f_yy]

])



#Hessen Matrix Matrix Formel

det_hessian = hesse.det()



#Ausgabe vorerst

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('Alles stoppt{0}'.format(stationary_points))



#Beurteilung

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('Haltepunkt:{0}Ist f(x,y)Minimaler Punkt'.format([stationary_points[i][0],stationary_points[i][1]]))

        elif sign_f_xx < 0:

            print('Haltepunkt:{0}Ist f(x,y)Maximaler Punkt von'.format([stationary_points[i][0],stationary_points[i][1]]))

        else:

            print('Kann mit dieser Methode nicht ermittelt werden')

    elif sign_det_hessian < 0:

        print('Haltepunkt:{0}Ist f(x,y)Sattelpunkt'.format([stationary_points[i][0],stationary_points[i][1]]))

kyokudai.png Es gab, aber ich verstehe nicht. Sie können es nicht einmal mit Ihren eigenen Augen sehen. Nur das Bild eines in der Luft fliegenden Taschentuchs fällt mir ein ...

Stellen Sie sicher, dass Sie am Limit sind

Ich habe geprüft, ob es das Limit ist. Wir haben x = rcosθ y = 2rsinθ unter Verwendung von Polarkoordinaten verwendet Ändern Sie den Wert der Polarkoordinaten entsprechend dem Wert des Nenners und der Situation, erstellen Sie eine Formel für die Dreiecksfunktion usw. und versuchen Sie es mit der Minute. Der Konvergenzwert beträgt übrigens 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 #Boden des natürlichen Logarithmus
I = sym.S.ImaginaryUnit #Imaginäre Einheit
oo = sym.oo #Unendlichkeit

#Definition der zu verwendenden Variablen(Alle ein unterer Buchstabe ist ein Symbol)
(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('Funktionsgrenzen existieren')
    f=c.subs([(x,X),(y,1/2*Y)]).trigsimp() #Brauchen Vereinfachung(Sie sollten es Zeile für Zeile tun)
    g=np.abs(sym.limit(f-ee,r,0))
    print('{0}'.format(g))
else :
    print('Es gibt keine Funktionsbeschränkung')

Dieses Ausführungsergebnis zeigt, dass das Limit der Funktion sicher existiert, aber wenn das Limit nicht existiert, haben wir nicht überprüft, wie es ausgeführt wird. Ich werde mein Bestes geben.

Anzeige des Ausführungsergebnisses, ob eine teilweise Differenzierung möglich ist


(x^2+xy+y^2)\log(x^2+y^2)


Ich habe versucht, x und y teilweise zu unterscheiden.

from sympy import *
import sympy as sym
import math
from IPython.display import display, Latex
x=Symbol('x')                  #Brief'x'Ist als die Variable x definiert
y=Symbol('y')                 #Brief'y'Ist als die Variable y definiert

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))

Als ich die Frage bei teratail akzeptierte, konnte ich die Antwort bekommen. Vielen Dank. Wenn x und y teilweise differenziert sind, durchlaufen beide den Ursprung, so dass es möglich ist, am Ursprung teilweise zu differenzieren. Einfach zu verstehen. image.png

Impressionen

Es war einfach sehr praktisch für Python. Im Vergleich zu anderen Sprachen hat es viele Bibliotheken und ist wirklich erstaunlich. Als nächstes möchte ich eine Theorie hinzufügen. Auch diesmal war es nur eine Einführung. Ich möchte etwas mehr angewendet tun. Möchten Sie diesen Code für mühsame Berechnungen und Überprüfungen verwenden?

Referenzseiten und Fragen

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 Es ist mein Konto https://teratail.com/questions/283867

Recommended Posts

Ich habe Jacobian und teilweise Differenzierung mit Python versucht
Ich habe Funktionssynthese und Curry mit Python versucht
Ich habe fp-Wachstum mit Python versucht
Ich habe versucht, mit Python zu kratzen
Ich habe gRPC mit Python ausprobiert
Ich habe versucht, mit Python zu kratzen
Ich habe versucht, WebScraping mit Python.
Ich habe mit PyQt5 und Python3 gespielt
Ich habe versucht, Prolog mit Python 3.8.2 auszuführen.
Ich habe die SMTP-Kommunikation mit Python versucht
Ich habe versucht, Follow Management mit Twitter API und Python (einfach)
Ich habe versucht, die Benutzeroberfläche neben Python und Tkinter dreiäugig zu gestalten
Ich habe versucht, mit Python + opencv nicht realistisch zu rendern
Ich habe eine funktionale Sprache mit Python ausprobiert
Ich habe versucht, mit Python ② (Fibonacci-Zahlenfolge) aufzuklären.
Ich habe Numba mit Python3.5 installiert und verwendet
# Ich habe so etwas wie Vlookup mit Python # 2 ausprobiert
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich habe versucht, Gesichtsmarkierungen mit Python und Dlib leicht zu erkennen
Ich habe versucht, das Bild mit Python + OpenCV zu "glätten"
Ich habe versucht, Web-Scraping mit Python und Selen
Ich habe versucht, das Bild mit Python + OpenCV zu "differenzieren"
Ich habe versucht, Objekte mit Python und OpenCV zu erkennen
Ich habe Python> autopep8 ausprobiert
Ich habe L-Chika mit Razpai 4 (Python Edition) ausprobiert.
Ich habe versucht, mit PartiQL und MongoDB verbunden zu spielen
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
Ich habe versucht, Mecab mit Python2.7, Ruby2.3, PHP7 zu verwenden
Ich habe versucht, LLVM IR mit Python auszugeben
Ich habe versucht, das Bild mit Python + OpenCV zu "binarisieren"
Ich habe versucht, mit Python Faiss zu laufen, Go, Rust
Ich habe versucht, die Herstellung von Sushi mit Python zu automatisieren
Ich habe versucht, Deep Floor Plan mit Python 3.6.10 auszuführen.
Ich habe versucht, eine E-Mail mit SendGrid + Python zu senden
Ich habe Python> Decorator ausprobiert
Ich habe versucht, den Google-Kalender mit CSV-Terminen mithilfe von Python und Google API zu aktualisieren
Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen
Ich habe versucht, Python-Code zu beschleunigen, einschließlich der if-Anweisung mit Numba und Cython
Ich habe versucht, mit VOICEROID2 2 automatisch zu lesen und zu speichern
Ich habe pipenv und asdf für die Python-Versionskontrolle ausprobiert
Ich habe versucht, DCGAN mit PyTorch zu implementieren und zu lernen
Ich möchte die Optimierung mit Python und CPlex behandeln
Ich habe versucht, Mine Sweeper auf dem Terminal mit Python zu implementieren
Ich habe versucht, mit Blenders Python script_Part 01 zu beginnen
Ich habe versucht, eine CSV-Datei mit Python zu berühren
[OpenCV / Python] Ich habe versucht, Bilder mit OpenCV zu analysieren
Ich habe versucht, Soma Cube mit Python zu lösen
Laden Sie mp4 einfach teilweise mit Python und youtube-dl herunter!
Lösen Sie simultane normale Differentialgleichungen mit Python und SymPy.
Ich habe versucht, mit VOICEROID2 automatisch zu lesen und zu speichern
Ich habe versucht, mit Blenders Python script_Part 02 zu beginnen
Ich habe versucht, künstliches Perzeptron mit Python zu implementieren
Ich habe versucht, LINE BOT mit Python und Heroku zu machen
Mayungos Python-Lernfolge 1: Ich habe versucht, mit Druck zu drucken