Se ha denunciado esta presentación.
Se está descargando tu SlideShare. ×

Rešavanje diferencijalnih jednačina_dsolve.ppsx

Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Próximo SlideShare
MISS Ponavljanje B 2022.pdf
MISS Ponavljanje B 2022.pdf
Cargando en…3
×

Eche un vistazo a continuación

1 de 30 Anuncio

Más Contenido Relacionado

Más reciente (20)

Anuncio

Rešavanje diferencijalnih jednačina_dsolve.ppsx

  1. 1. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 1/27 Vrlo mali broj diferencijalnih jednačina se može rešiti analitički. Pomoću numeričkih metoda može se naći rešenje gotovo svake diferencijalne jednačine. MATLAB ima obimnu biblioteku funkcija za rešavanje diferencijalnih jednačina. Obična diferencijalna jednačina (ODJ, eng. ordinary differential equation, ODE) sadrži nezavisnu promenljivu, zavisnu promenljivu i izvode zavisne promenljive. 𝑑𝑦 𝑑𝑥 = 𝑓(𝑥, 𝑦) gde je 𝑥 nezavisna promenljiva, a 𝑦 je zavisna promenljiva.
  2. 2. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 2/27 𝑑𝑦 𝑑𝑥 = 𝑓(𝑥, 𝑦) Rešenje je funkcija 𝑦 = 𝑓(𝑥), koja ispunjava uslove jednačine. Pošto više funkcija može ispunjavati uslove date ODJ, za rešavanje zadatka potrebni su dodatni podaci. Dodatni podaci su vrednost funkcije (zavisne promenljive) za određenu vrednost nezavisne promenljive.
  3. 3. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 3/27 Metode za rešavanje ODJ: dsolve ode45 , pogodna za jednostavne zadatke. Zasniva se na metodi Runge-Kuta ode23 , pogodna za jednostavne zadatke. Često brža ali manje tačna od ode45 ode113 , pogodna za jednostavne zadatke. Radi u više koraka. ode15s , pogodna za teže zadatke. Koristi se kada ode45 ne uspeva. ode23s , pogodna za teže zadatke. Koristi se kada ode15s ne uspeva. ode23t , pogodna za umereno teške zadatke. ode23tb , pogodna za teže zadatke. Često je efikasnija od ode15s.
  4. 4. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 4/27 dsolve(dif_jednačina) , dsolve(dif_jednačina,c1) dsolve(dif_jednačina1, dif_jednačina2, c1, c2) Funkcija dsolve
  5. 5. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 5/27 Funkcija dsolve Primer Rešiti diferencijalnu jednačinu 𝑦′ 𝑡 − 𝑦 𝑡 = sin(𝑡) A) Bez početnog uslova B) Početni uslov: 𝑥 = 0, 𝑦 = 1; 𝑦 0 = 1
  6. 6. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 6/27 Funkcija dsolve Primer Rešiti diferencijalnu jednačinu 𝑦′ 𝑡 − 𝑦 𝑡 = sin(𝑡) A) Bez početnog uslova 𝑦′ 𝑡 se transformiše u 𝑦 𝑡 se transformiše u
  7. 7. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 7/27 Funkcija dsolve Primer Rešiti diferencijalnu jednačinu 𝑦′ 𝑡 − 𝑦 𝑡 = sin(𝑡) B) Početni uslov: 𝑥 = 0, 𝑦 = 1; 𝑦 0 = 1
  8. 8. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 8/27 Funkcija dsolve Primer Rešiti sistem diferencijalnih jednačina: 𝑓′ 𝑡 − 𝑓 𝑡 − g 𝑡 = 0; 𝑔′ 𝑡 − 𝑓 𝑡 − g 𝑡 = 0; Uz date početne uslove: 𝑡 = 0, 𝑓 = 1; 𝑓 0 = 1 𝑖 𝑡 = 0, 𝑔 = 2; 𝑔 0 = 2
  9. 9. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 9/27 Funkcija dsolve Primer Rešiti sistem diferencijalnih jednačina: 𝑓′ 𝑡 − 𝑓 𝑡 − g 𝑡 = 0; 𝑔′ 𝑡 − 𝑓 𝑡 − g 𝑡 = 0;
  10. 10. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 10/27 Funkcija dsolve Primer Rešiti sistem diferencijalnih jednačina: 𝑓′ 𝑡 − 𝑓 𝑡 − g 𝑡 = 0; 𝑔′ 𝑡 − 𝑓 𝑡 − g 𝑡 = 0;
  11. 11. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 11/27 Funkcija odenn Postupak pri rešavanju diferencijalnih jednačina funkcijama klase odenn 1. korak Napiše se funkcijska datoteka (skripta pod nazivom ODJ1.m) koja izračunava 𝑑𝑦 𝑑𝑥 , za date vrednosti 𝑥 i 𝑦. Primer: 𝑑𝑦 𝑑𝑥 = 𝑥3 − 2 ∙ 𝑦 𝑥 , 1 ≤ 𝑥 ≤ 3; 𝑧𝑎 𝑥 = 1, 𝑦 = 4.2 function dydx=ODJ1(x,y) dydx=(x^3-2*y)/x;
  12. 12. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 12/27 Funkcija odenn Postupak pri rešavanju diferencijalnih jednačina funkcijama klase odenn 2. Korak. Rešava se zadatak: [x,y] = imefunkcije('imedat',xopseg,y0) Gde su imefunkcije – ime numeričke metode koja se koristi (npr. ode45, ode23, itd.) imedat – ime funkcijske datoteke koja izračunava 𝑑𝑦 𝑑𝑥 za date vrednosti x i y xopseg – vektor koji zadaje interval rešenja. y0 – početna vrednost y (vrednost y u početnoj tački intervala). [x,y] – Rešenje ODJ. x i y su vektori. Broj tačaka i razmak između početne i završne tačke zavise od ulaznog vektora xopseg.
  13. 13. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 13/27 Funkcija odenn Postupak pri rešavanju diferencijalnih jednačina funkcijama klase odenn 𝑑𝑦 𝑑𝑥 = 𝑥3 − 2 ∙ 𝑦 𝑥 , 1 ≤ 𝑥 ≤ 3; 𝑧𝑎 𝑥 = 1, 𝑦 = 4.2 function dydx=ODJ1(x,y) – ovo je napisana skripta ODJ1.m dydx=(x^3-2*y)/x; [x,y] = imefunkcije('imedat',xopseg,y0) [x,y]=ode45('ODJ1',[1:0.2:3],4.2)
  14. 14. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 14/27 Funkcija odenn Postupak pri rešavanju diferencijalnih jednačina funkcijama klase odenn 𝑑𝑦 𝑑𝑥 = 𝑥3 − 2 ∙ 𝑦 𝑥 , 1 ≤ 𝑥 ≤ 3; 𝑧𝑎 𝑥 = 1, 𝑦 = 4.2 function dydx=ODJpr1(x,y) dydx=(x^3-2*y)/x; [x,y] = imefunkcije('imedat',xopseg,y0) [x,y]=ode45('ODJpr1',[1:0.2:3],4.2)
  15. 15. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 15/27 Funkcija odenn Sada se može nacrtati i grafik rešenja pomoću komande plot. plot(x,y),xlabel('x'),ylabel('y'),grid on
  16. 16. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 16/27 Funkcija dsolve 1. ZADATAK Napisati skriptu za rešavanje diferencijalne jednačine: 1 + 𝑥2 𝑦′ = 𝑥(2 ∙ 𝑦 + 1) Da bi se formirala skripta potrebno je transformisati: 𝑦′ 𝐷𝑦 Diferencijalna jednačina sada postaje 1 + 𝑥2 𝐷𝑦 = 𝑥(2 ∙ 𝑦 + 1) Uvode se simboličke promenljive: 𝑦 𝑥 𝑥
  17. 17. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 17/27 Funkcija dsolve 1. ZADATAK Transformisati diferencijalnu jednačinu: 1 + 𝑥2 𝐷𝑦 = 𝑥(2 ∙ 𝑦 + 1) 𝐷𝑦 = 𝑥 ∙ (2 ∙ 𝑦 + 1)/ 1 + 𝑥2 Sada se formira jednačina 𝑗𝑒𝑑𝑛𝑎𝑐𝑖𝑛𝑎 = 𝑑𝑖𝑓𝑓 𝑦 == 𝑥 ∙ (2 ∙ 𝑦 + 1)/ 1 + 𝑥2 Piše se kod za rešavanje diferencijalne jednačine: 𝑅𝑒𝑠 = 𝑑𝑠𝑜𝑙𝑣𝑒(𝑗𝑒𝑑𝑛𝑎𝑐𝑖𝑛𝑎) Dobije se rešenje: Res = (C1*(x^2 + 1))/2 - 1/2 Odnosno: 𝑦 = 𝐶1∙ 𝑥2+1 2 − 1 2 , gde je C1 konstanta
  18. 18. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 18/27 Funkcija dsolve 1. ZADATAK Napisati skriptu za rešavanje diferencijalne jednačine: 𝑥 ∙ 𝑦 ′ − 𝑦 𝑥 + 1 = 𝑥, ako je 𝑦 1 = −1 Da bi se formirala skripta potrebno je transformisati: 𝑦′  𝐷𝑦 Diferencijalna jednačina sada postaje 𝑥 ∙ 𝑦 ′ − 𝑦 𝑥 + 1 = 𝑥 Uvode se simboličke promenljive: 𝑦 𝑥 𝑥 Nacrtati grafik rešenja na intervalu [-1 15]
  19. 19. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 19/27 Funkcija dsolve 1. ZADATAK Transformisati diferencijalnu jednačinu: 𝑥 ∙ 𝐷𝑦 − 𝑦 𝑥+1 = 𝑥 𝐷𝑦 = 1 + 𝑦 𝑥 ∙ 𝑥 + 1 Sada se formira jednačina 𝑗𝑒𝑑𝑛𝑎𝑐𝑖𝑛𝑎 = 𝑑𝑖𝑓𝑓 𝑦 == 1 + 𝑦 𝑥 ∗ 𝑥 + 1 Sada se postavlja početni uslov dat zadatkom: 𝑦 1 = −1: 𝑢𝑠𝑙𝑜𝑣 = [𝑦 1 == −1] Piše se kod za rešavanje diferencijalne jednačine: 𝑅𝑒𝑠 = 𝑑𝑠𝑜𝑙𝑣𝑒(𝑗𝑒𝑑𝑛𝑎𝑐𝑖𝑛𝑎, 𝑢𝑠𝑙𝑜𝑣)
  20. 20. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 20/27 Funkcija dsolve 1. ZADATAK Skripta 1.clc; clear; 2.syms x y(x) 3.jednacina=diff(y)==1+y/(x*(x+1)); 4.uslov=[y(1)==-1]; 5.Res=dsolve(jednacina,uslov) Postavljanje diferencijalne jednačine Postavljanje početnog uslova Rešavanje diferencijalne jednačine Res = (x*(x + log(x)))/(x + 1) - (3*x)/(x + 1)
  21. 21. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 21/27 Funkcija dsolve 1. ZADATAK Skripta 6.f = matlabFunction(Res) 7.pretty(Res) 8.fplot(Res,[-1 15],'b*-') 9.hold on 10.ylim([-2 12]) Konvertovanje rešenja diferencijalne jednačine u simboličku funkciju Dobije se: @(x)(x.*-3.0)./(x+1.0)+(x.*(x+log(x)))./(x+1.0) Za prilagodjeni prikaz: x (x + log(x)) 3 x -------------- - ----- x + 1 x + 1 Formiranje grafika rešenja diferencijalne jednačine na intervalu x1 = -1 do x2 = 15
  22. 22. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 22/27 Funkcija dsolve 1. ZADATAK Skripta 11.xlim([-1 15]) 12.plot([0 0], ylim, 'Color','r','LineWidth',1) 13.plot(xlim,[0 0], 'Color','r','LineWidth',1) 14.grid on 15.xlabel('x')
  23. 23. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 23/27 Funkcija dsolve 1. ZADATAK Skripta 16.ylabel('y') 17.title(func2str(f)) 18.hold off Pretvaranje funkcije u string
  24. 24. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 24/27 Funkcija dsolve 2. ZADATAK Napisati skriptu za rešavanje diferencijalne jednačine: 2 ∙ 𝑥2 ∙ 𝑑2𝑦 𝑑𝑥2 + 3 ∙ 𝑥 ∙ 𝑑𝑦 𝑑𝑥 ; , ako je 𝑦 1 = −1 Da bi se formirala skripta potrebno je transformisati: 𝑑2𝑦 𝑑𝑥2  𝑑𝑖𝑓𝑓(𝑦, 𝑥, 2) 𝑑𝑦 𝑑𝑥  𝑑𝑖𝑓𝑓(𝑦, 𝑥) Uvode se simboličke promenljive: 𝑦 𝑥 𝑥 Nacrtati grafik rešenja na intervalu [-5 5]
  25. 25. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 25/27 Funkcija dsolve 2. ZADATAK Data diferencijalna jednačina sada postaje: jednacina=diff(y)==1+y/(x*(x+1));
  26. 26. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 26/27 Funkcija dsolve 2. ZADATAK Napisana skripta: 1. clc; clear; 2. syms x y(x) 3. jednacina=2*x^2*diff(y,x,2)+3*x*diff(y,x)-y == 0; 4. uslov=[y(1)==0 y(2)==2]; 5. Res=dsolve(jednacina,uslov) 6. f = matlabFunction(Res) 7. pretty(Res) 8. fplot(Res,[-15 15],'b*-') 9. hold on 10.ylim([-5 15]) 11.xlim([-1 15]) 12.plot([0 0], ylim, 'Color','r','LineWidth',1) 13.plot(xlim,[0 0], 'Color','r','LineWidth',1) 14.grid on 15.xlabel('x') 16.ylabel('y') 17.title(func2str(f)) 18.hold off
  27. 27. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 27/27 Funkcija dsolve 2. ZADATAK Grafik koji se dobija
  28. 28. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 28/27 Funkcija dsolve 3. ZADATAK Rešiti sistem diferencijalnih jednačina: 𝑥′ = 3 ∙ 𝑥2 + 4 𝑦 𝑦′ = −4 ∙ 𝑥 + 3 ∙ 𝑦2 𝑥′ = 3 ∙ 𝑥2 + 4 𝑦  jed1=diff(x)==3*x+4*y; 𝑦′ = −4 ∙ 𝑥 + 3 ∙ 𝑦2  jed2=diff(y)==-4*x+3*y; Uvode se simboličke promenljive: 𝑥 𝑡 𝑦(𝑡)
  29. 29. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 29/27 Funkcija dsolve 3. ZADATAK Napisana skripta: 1. clc; clear; 2. syms x(t) y(t) 3. jed1=diff(x)==3*x+4*y; 4. jed2=diff(y)==-4*x+3*y; 5. u1=x(0)==0; 6. u2=y(0)==1; 7. uslov=[u1; u2]; 8. jednacine=[jed1; jed2] 9. Res=dsolve(jednacine,uslov) 10.xRes=Res.x; 11.yRes=Res.y; 12.fplot(xRes,'bo-') 13.hold on 14.fplot(yRes,'r*-') 15.grid on 16.legend('X','Y','Location','best')
  30. 30. INŽENJERSKO PROGRAMIRANJE. Rešavanje diferencijalnih jednačina 30/27 Funkcija dsolve 3. ZADATAK Grafik koji se dobija

×