Documente Academic
Documente Profesional
Documente Cultură
FACULTATEA TRANSPORTURI
Temă laborator
Prelucrarea digitală a
semnalelor
București
2023
UNIVERSITATEA „POLITEHNICA” DIN BUCUREȘTI
FACULTATEA TRANSPORTURI
Rezolvarea ecuațiilor cu
Python
București
2023
Cuprins
BIBLIOGRAFIE .................................................................................................................... 10
Capitolul 1. Introducere
1.1 Descriere Sympy
SymPy sau symbolic math este o bibliotecă din Python utilizată pentru a realiza
reprezentarea simbolică a expresiilor matematice dar și pentru rezolvarea acestora. Un exemplu
de expresie matematică simbolică este:
𝑥2 + 𝑦2 = 𝑧 (1)
(𝑎 + 𝑏)2 + 𝑦 2 = 𝑧
(3)
𝑎2 + 2𝑎𝑏 + 𝑏 2 + 𝑦 2 = 𝑧
𝑦 = √𝑧 − 𝑎2 − 2𝑎𝑏 − 𝑏 2 (4)
1
1.3 Definirea variabilelor
Înainte de a putea construi expresii matematice simbolice sau ecuații matematice
simbolice cu ajutorul bibliotecii SymPy trebuie să creăm variabile matematice simbolice. [3]
Pentru a defini variabile matematice simbolice mai întâi trebuie să importăm funcția
symbols() din modulul SymPy utilizând instrucțiunea:
x = symbols(’x’)
y = symbols(’y’)
De asemenea, se pot defini mai multe simboluri cu o singură linie de cod astfel:
x, y = symbols(’x y’)
2.1 Expresiile
O expresie matematică simbolică este o combinație de variabile matematice simbolice
cu numere și operatori matematici. Aceleași reguli standard de calcul folosite în Python se
aplică și pentru expresiile simbolice.
După ce au fost definite variabilele x și y ca simboluri, se poate crea o expresie
matematică utilizând aceste simboluri folosind următoarele instrucțiuni în Python. [4]
2.2 Substituții
Pentru a realiza înlocuirea unei simbol matematic cu o valoare numerică se utilizează
funcția .subs(simbol_matematic, valoare_numerică). Primul argument este simbolul
matematic, iar al doilea este valoarea numerică. [4]
2
Pentru a înlocui în expresia precedentă valoarea lui x cu 2 se va folosi instrucțiunea în
felul următor:
expr.subs(x, 2)
3
expr2 = expr.subs(n0, 3.48e-6).subs(Qv,12700).subs(R, 8031).subs(T, 1000+273)
3.48∙10−6
Această instrucțiune înlocuiește numeric în expresie și rezultă forma: 12700 .
𝑒 10223463
Pentru a efectua calculul numeric se utilizează funcția .evalf(număr_cifre).
4
eq2 = Eq(2*y – x – 5, 0)
eq3 = eq2.subs(x ,z)
eq3
Out: 2𝑦−𝑧−5=0
Out:6
Out: [2, 3]
5
4.2 Rezolvarea unui sistem de ecuații pentru două necunoscute
x + 2y = 3
Un exemplu de sistem este { . Pentru rezolvarea sistemului folosim
2x − y = 4
funcția solve().[8]
În acest exemplu, importăm mai întâi modulele necesare din SymPy. Definim apoi
variabilele x și y ca simboluri, astfel încât să le putem folosi în ecuațiile noastre. Apoi, creăm
două ecuații, eq1 și eq2, care reprezintă cele două ecuații din sistemul nostru: 𝑥 + 2𝑦 = 3 și
2𝑥 − 𝑦 = 4. În cele din urmă, folosim funcția solve() pentru a găsi soluțiile sistemului de
ecuații definit de eq1 și eq2, în raport cu variabilele x și y. Soluțiile sunt returnate într-un
dicționar, unde cheile sunt variabilele, iar valorile sunt soluțiile. Ieșirea codului de mai sus va
fi:
Out: {x: 11/5, y: 2/5}
Soluția este afișată sub forma unui dicționar Python. Putem accesa soluția din
dicționarul de soluții folosind indexarea obișnuită a dicționarului.[8]
6
4.3 Rezolvarea ecuațiilor diferențiale în Python
În matematică, o ecuație diferențială ordinară este o ecuație diferențială care descrie o
relație prestabilită între o funcție necunoscută, argumentele acesteia și derivatele ordinare ale
sale. În practică, se presupune de obicei că "funcția necunoscută" există, deși stabilirea
riguroasă a acestui fapt poate cere noțiuni de topologie. Ordinul unei ecuații diferențiale este
dat de derivata de cel mai mare ordin a funcției necunoscute. [9]
Pentru a rezolva ecuații diferențiale în Python se folosește funcția dsolve(). Se dă ca
exemplu ecuația diferențială ordinară 𝑥𝑓 ′′ (𝑥) + 𝑓 ′ (𝑥) = 𝑥 3 . În continuare, aceasta va fi
rezolvată cu și fără condiții inițiale. [10]
𝑑2 𝑓(𝑥) 𝑑𝑓(𝑥)
𝑥 + = 𝑥3
𝑑𝑥 2 𝑑𝑥
𝑥4 (5)
⇒ 𝑓(𝑥) = 𝐶1 + 𝐶2 log(𝑥) +
16
𝑥4
Pentru C1 = 0 și C2 = 1 ⇒ 𝑓(𝑥) = log(𝑥) + 16
import sympy as sp
x = sp.Symbol('x')
f = sp.Function('f')(x)
# crearea ecuatiei diferentiale
diff_eq = sp.Eq(x*f.diff(x,x)+f.diff(x), x**3)
sol = sp.dsolve(diff_eq, f)
# preluarea membrului drept al ecuatie
exp = sol.rhs
# inlocuirea constantelor C1 = 0 si C2 = 1
C1 = tuple(exp.free_symbols)[2]
C2 = tuple(exp.free_symbols)[1]
exp.subs(C1, 0).subs(C2, 1)
7
4.3.2 Rezolvarea ecuațiilor diferențiale cu condiții inițiale date
În continuare se va rezolva aceeași ecuație diferențială doar că se impun condițiile
𝑓(1) = 0 și 𝑓 ′ (2) = 1. Rezolvarea matematică este următoarea:
𝑑2 𝑓(𝑥) 𝑑𝑓(𝑥)
𝑥 + = 𝑥3
𝑑𝑥 2 𝑑𝑥
𝑥4 (6)
⇒ 𝑓(𝑥) = 𝐶1 + 𝐶2 log(𝑥) +
16
𝑥4 1
Pentru condițiile impuse 𝑓(1) = 0 și 𝑓 ′ (2) = 1 ⇒𝑓(𝑥) = 16 − 2log(𝑥) − 16
import sympy as sp
x = sp.Symbol('x')
f = sp.Function('f')(x)
# definirea conditiilor initiale
ics = {f.subs(x,1):0, f.diff().subs(x,2):1}
# crearea ecuatiei diferentiale
diff_eq = sp.Eq(x*f.diff(x,x)+f.diff(x), x**3)
# rezolvarea ecuatiei diferentiale si preluarea membrului drept
ivp = sp.dsolve(diff_eq, ics=ics).rhs
# verificare conditii initiale
ivp.subs(x,1)
ivp.diff().subs(x,2)
# verificarea daca solutia satisface ecuatia diferentiala
(x*ivp.diff(x,x)+ivp.diff()).simplify()
8
Reprezentarea grafică a ecuației de gradul II
import sympy as sp
from sympy.plotting import plot
x = sp.Symbol('x')
f = sp.Function('f')(x)
# definirea conditiilor initiale
ics = {f.subs(x,1):0, f.diff().subs(x,2):1}
# crearea ecuatiei diferentiale
diff_eq = sp.Eq(x*f.diff(x,x)+f.diff(x), x**3)
# rezolvarea ecuatiei diferentiale si preluarea membrului drept
ivp = sp.dsolve(diff_eq, ics=ics).rhs
sol = (x*ivp.diff(x,x)+ivp.diff())
# afisarea grafica a ecuatiei
plot(sol)
9
Bibliografie
[1] https://problemsolvingwithpython.com/10-Symbolic-Math/10.01-SymPy/
[2] https://problemsolvingwithpython.com/10-Symbolic-Math/10.02-Installing-SymPy/
[3] https://problemsolvingwithpython.com/10-Symbolic-Math/10.03-Defining-
Variables/
[4] https://problemsolvingwithpython.com/10-Symbolic-Math/10.04-Expressions-and-
Substitutions/
[5] https://ro.wikipedia.org/wiki/Ecua%C8%9Bie
[6] https://problemsolvingwithpython.com/10-Symbolic-Math/10.05-Equations/
[7] https://problemsolvingwithpython.com/10-Symbolic-Math/10.06-Solving-Equations/
[8] https://problemsolvingwithpython.com/10-Symbolic-Math/10.07-Solving-Two-
Equations-for-Two-Unknowns/
[9] https://ro.wikipedia.org/wiki/Ecua%C8%9Bie_diferen%C8%9Bial%C4%83_ordinar
%C4%83
[10] https://www.youtube.com/watch?v=Z2havWsxa-E
[11] https://docs.sympy.org/latest/modules/plotting.html
10