Selbst wenn Sie eine Formel in einem Papier oder Lehrbuch finden, dauert es einige Zeit, sie zu verwenden. Darüber hinaus dauert es länger, bis es im Dokument abgelegt ist. Aus diesem Grund haben wir einen Workflow erstellt, der für die Programmierung und anschließende Dokumentation unter Verwendung mathematischer Bilder als Eingabe verwendet werden kann.
Latex mit einem Dienst namens Mathpix. Eine Registrierung ist erforderlich, aber das Bild wird schön latexiert.
Es ist so
Wir werden die AsciiMath-Zeichenfolge verarbeiten und in eine Form konvertieren, die in Python verwendet werden kann.
--Kopieren Sie Ascii Math auf der Registerkarte "Daten" von Mathpix Basierend auf dieser Zeichenfolge werden wir sie im Programm verfügbar machen.
Verarbeiten Sie die Zeichenfolge vor
--a: Fügen Sie die Ascii Math-Zeichenfolge ein --shoki_dict: Das Wörterbuch, das zuerst ersetzt werden soll * Von Zeit zu Zeit aktualisiert
translate_1.py
import re
# a = "sigma=(E alpha DeltaT)/(1-nu)*(1)/(1.5+3.25//beta-0.5 exp(-16//beta))"
# a = "M_(max)=(w*l^(2))/(8)"
a= "delta_(max)=(5*w*l^(4))/(384 E*I)"
# a ="K=(1.7 xx10^(5))/((delta_(1)+delta_(0))/(lambda_(1))+(delta_(2)+delta_(0))/(lambda_(2)))xx(0.6P)/(H)+(10^(6)lambda_(f))/(delta_(1)+delta_(2))"
shoki_tikan_dict = {" ":"*",
"xx":"*",
"^":"**",
"//":"/"}
for i in shoki_tikan_dict:
a = a.replace(i,shoki_tikan_dict[i])
temp = re.sub("_\((.*?)\)","0",a)#Damit Sie die Variable erhalten, die den Index ignoriert_()Auf 0
hensu = re.findall("[A-Za-z]+",temp)#Variablen extrahieren
li_moji = list(set(hensu))#Entfernen Sie doppelte Variablen
print(a)
print(li_moji)
Wenn das oben Gesagte ausgeführt wird, wird Folgendes ausgegeben. Wenn hier etwas mit der Formel nicht stimmt, korrigieren Sie sie. Stellen Sie außerdem sicher, dass die Variablen ordnungsgemäß extrahiert werden. (Ignorieren Sie die zusätzlichen. Ignorieren Sie im Beispiel "exp".) sigma=(EalphaDeltaT)/(1-nu)(1)/(1.5+3.25/beta-0.5exp(-16/beta)) ['nu', 'sigma', 'DeltaT', 'beta', 'alpha', 'exp', 'E']
Konvertieren Sie griechische Buchstaben und Indizes in Formeln
--moji_dict: Liste, die beim Extrahieren von Parametern verwendet wird (griechische Zeichen) * Von Zeit zu Zeit aktualisiert
translate_2.py
moji_dict = {'lambda':"λ",
'delta':"δ",
'sigma':"σ",
'alpha':"α",
'DeltaT':"ΔT",
'nu':'ν',
'beta':'β',
'epsi':"ε",
'pi':'π',
'mu':'μ'}
def tikan(moji_retsu,taisho,moji_dict):
# print(taisho)
taisho_temp = taisho+"_"
seiki_1 = taisho_temp + "\(.*?\)"
seiki_2 = taisho_temp + "\((.*?)\)"
b = re.findall(seiki_1,moji_retsu)
if len(b) != 0:
if taisho in moji_dict:
tikan_moji = moji_dict[taisho]
else:
tikan_moji = taisho
# print(tikan_moji)
newList = [re.sub(seiki_2,tikan_moji+"\\1",item) for item in b]
moji_retsu = re.sub(seiki_2,tikan_moji+"\\1",moji_retsu)
elif taisho in moji_dict:
tikan_moji = moji_dict[taisho]
newList = [tikan_moji]
moji_retsu = moji_retsu.replace(taisho,tikan_moji)
else:
tikan_moji = taisho
newList = [taisho]
return moji_retsu,newList
li=[]
for i in li_moji:
a,p = tikan(a,i,moji_dict)
li.extend(p)
li=list(set(li))
li.sort()
a = re.sub("\(([0-9])\)","\\1",a)
print(a)
print(li)
Wenn Sie das oben Gesagte ausführen, wird Folgendes ausgegeben σ=(EαΔT)/(1-ν)1/(1.5+3.25/β-0.5exp(-16/β)) ['E', 'exp', 'ΔT', 'α', 'β', 'ν', 'σ']
Fügen Sie als Nächstes Indizes hinzu, um die Formel zu bilden. Dies ist das Ende dessen, was automatisch erledigt werden kann, und der Rest wird manuell in einen Ausdruck umgewandelt, der in Python verwendet werden kann.
result_Eq.py
import math
σ=(E*α*ΔT)/(1-ν)*1/(1.5+3.25/β-0.5*math.exp(-16/β))
Nachdem die Formel vollständig ist, ist es Zeit, die Parameter zu extrahieren.
paramater_print.py
print("paramater_dict= {")
for i in li:
print(" " + "'" + i +"':['',''],")
print(" }")
Wenn Sie das oben Gesagte ausführen, wird Folgendes ausgegeben.
out.py
paramater_dict= {
'E':['',''],
'exp':['',''],
'ΔT':['',''],
'α':['',''],
'β':['',''],
'ν':['',''],
'σ':['',''],
}
Dies ist das Ende des automatischen Betriebs, und die folgenden Aktionen werden manuell für die Parameter ausgeführt.
result.py
paramater_dict= {
'E':['Elastizitätsmodul','MPa'],
'ΔT':['Temperaturunterschied zwischen Innen und Außen','K'],
'α':['Linearer Ausdehnungskoeffizient','/K'],
'β':['Bio-Nummer',''],
'ν':['QUERKONTRAKTIONSZAHL',''],
'σ':['Thermische Belastung','MPa'],
}
run.py
import math
E = 200
ΔT = 10
α = 0.00005
β = 2
ν = 0.3
σ=(E*α*ΔT)/(1-ν)*1/(1.5+3.25/β-0.5*math.exp(-16/β))
print(σ)
Wenn Sie das oben genannte tun, erhalten Sie die Antwort. 0.045716739515498046
An dieser Stelle können Sie mithilfe von Sympy problemlos dokumentieren, indem Sie den folgenden Artikel anwenden. Erstellen eines mechanischen Konstruktionsberechnungsblattmaterials mit Python + Sympy
Erstellen Sie die entsprechenden Formeln und teilen Sie sie unten mit (gegebenenfalls aktualisiert). Formeln und Funktionen (entsprechend aktualisiert)
Ich dachte darüber nach, eine Bibliothek wie latex2sympy zu verwenden, aber es war ziemlich schwierig. Ich habe etwas über reguläre Ausdrücke gelernt, in denen ich nicht gut bin! Mathpix kann aus Sicherheitsgründen nicht verwendet werden. .. .. Es tut mir Leid
Recommended Posts