# RÓWNANIA
RÓŻNICZKOWE

kil(all)$reset()$

## Równania różniczkowe. Rząd równania.
Całka ogólna i całka szczególna 

Równaniem różniczkowym nazywamy równość zawierającą pochodne albo
różniczki niewiadomej funkcji.
Jeżeli niewiadoma funkcja zależy tylko od jednego argumentu, to równanie różniczkowe nazywa się zwyczajnym. 
Gdy natomiast funkcja ta zależy od kilku argumentów (jest funkcją wielu zmiennych), a równanie różniczkowe zawiera jej pochodne cząstkowe względem tych argumentów, to nazywamy je równaniem o pochodnych cząstkowych albo krócej równaniem różniczkowym cząstkowym.

Rzędem równania różniczkowego nazywamy rząd najwyższej pochodnej
występującej w tym równaniu. Na przykład:

Równanie rzędu II

eq:'diff(y,x,2)+3*x*'diff(y,x)-x^3*y^2=0;

Równanie rzędu III

'diff(s,t,3)+t*'diff(s,t)=5;

Całką albo rozwiązaniem równania różniczkowego nazywamy każdą
funkcję, która po podstawieniu do równania spełnia to równanie tożsamościowo. 
Na przykład 
 funkcja 
             y = 2x 
jest całką równania 
            
             x^2y''-2xy'+2y = 0, 
bowiem pochodne tej funkcji: 
             y' = 2, y" = 0 
podstawione do danego równania dają:
 
-4x+4x = 0.

Całką ogólną równania różniczkowego nazywamy takie jego rozwiązanie,
które zależy od tylu wzajemnie niezależnych stałych dowolnych, ile wynosi
rząd równania, natomiast funkcje otrzymane z całki ogólnej dla różnych
konkretnych wartości liczbowych tych stałych dowolnych noszą nazwę całek szczególnych równania. 
Tak więc funkcja:

y(x):=C_1/x+C_2;

spełniająca równanie drugiego rzędu:

eq:x*'diff(y,x,2)+2*'diff(y,x)=0;

(o czym można przekonać się wprost przez podstawienie)
i zawierająca dwie stałe dowolne C_1 i C_2, jest całką ogólną tego równania, natomiast funkcje:

y(x):=1/x$
y():=-3/x+5$
y(x):=1$

powstałe z całki ogólnej dla różnych wartości C_1 i C_2, są jego całkami szczególnymi. 

Zagadnienie, polegające na poszukiwaniu całki równania różniczkowego
k-tego rzędu (n = 1,2,3,...), spełniającej n warunków początkowych
o postaci:
y(x0)=y0;  y'(x0)=y'0,    y''(x0)=y''0,...,  dla dowolnej pochdnej
nazywa się zagadnieniem Cauchy'ego

W powyższych n warunkach Cauchy'ego dane są wartości funkcji y i jej
pochodnych y', y",...,itd  dla pewnej z góry określonej wartości argu- .
mentu x = x0. 
Tych n warunków początkowych określa wartości n stałych
dowolnych C_1, C_2, ..., C_n wchodzących do wyrażenia na całkę ogólną
równania n-tego rzędu. 

Sprawdzić, że dane funkcje są całkami (rozwiązaniami) podanych
obok równań różniczkowych:

kill(all)$ reset()$
depends(y,x)$

Przykład 1

eq1:2*y*diff(y,x)=1;

fun:y=sqrt(x);

eq1,fun,diff;

inny sposób

y:sqrt(x);

yp:diff(y,x);

2*y*yp=1;

Przykład 2  funkcja y(x)  jest uwikłana

kill(y,yp);

eq2:y*log(y)+x*log(x)*'diff(y,x)=0;

fun:log(x)*log(y)=c;

y:solve(fun,y)$
y:rhs(y[1]);

eq2,fun,diff;

Przykład 3

eq3:'diff(s,t,2)+tan(t)*'diff(s,t)=sin(2*t);

fun:s=-t-(1/2)*sin(2*t);

sol:eq3,fun,diff;

trigrat(%);

Zadania do wykonania
Sprawdzić, że dana funkcja jest całką podanego obok równania:

zadania do samodzielnego wykonania

przykład 1

kill(y);

eq4:'diff(y,x)+2*y=0;

fun:y=C*exp(-2*x);

sol:eq4,fun,diff;

## Równania różniczkowe o zmiennych rozdzielonych

Równanie różniczkowe pierwszego rzędu nazywa się równaniem o zmiennych rozdzielonych, jeżeli funkcje P i Q można rozłożyć na czynniki, z których każdy zależy od jednej tylko zmiennej 

# Sposoby  rozwiązywania równań różniczkowych 

## Podejście symboliczne

### Definiowanie równan rózniczkowych

### Liniowe równania rózniczkowe pierwszego i drugiego rzedu

### Liniowe równania różniczkowe pierwszego

### Przykład 1

kill(all)$ reset()$

depends(y,x);

eq2:diff(y,x)=tan(x);

sol12:ode2(eq2,y,x);

### Warunki poczatkowe 

### Przykład 1 (kontynuacja)

sol22:ic1(sol12,x=a,y=0);

ver:eq2,sol12,diff,ratsimp;

### Liniowe równania rózniczkowe  drugiego rzedu

eq5:'diff(y,x)-y*cot(x)=sin(x);

### Warunki  brzegowe

### Przykłady równań

### Układy równan rózniczkowych

## Podejście numeryczne

kill(all)$reset()$

depends(y,x);assume(a<0);

eq2:diff(y,x)=tan(x)/x;

sol12:ode2(eq2,y,x);

sol22:ic1(sol12,x=a,y=0);

ver:eq2,sol12,diff,ratsimp;

### Przykłady

### wahadło 1   

kill(all)$ reset()$

plotdf([psidot,-g*sin(psi)/l ], [psi,psidot],
[xcenter,0],[ycenter,0],[xradius,1],[yradius,2],
[parameters,"g=9.8,l=0.5"],[trajectory_at,1.05,-9],
[tstep,0.01],[psi,-3.5,3.5], [psidot,-10,10],[direction,forward],
[nsteps,300], [sliders,"l=0.1:1"], [versus_t,1])$

### wahadło 2

kill(all)$ reset()$

g:9.81$ l:1$
rownanie:[u2,-(g/l)*sin(u1)]$
zmienne:[u1,u2]$
wart_pocz:[%pi-0.0001,0]$
zakres_parametr:[t,0,15,0.01]$
sol:rk(rownanie,zmienne,wart_pocz,zakres_parametr)$
sol_faza:makelist([second(sol[i]),third(sol[i])],i,1,length(sol))$
sol_psi:makelist([first(sol[i]),second(sol[i])],i,1,length(sol))$ 
sol_psidot:makelist([first(sol[i]),third(sol[i])],i,1,length(sol))$
 wxplot2d([discrete,sol_faza]);
 wxplot2d([[discrete,sol_psi],[discrete,sol_psidot]]);

### Układy równań 

### Kod

Wahadło sprężynowe z tłumieniem

kill(all)$ reset();

c1:2$ c2:3$ k:100$l:0.5$ m:1$ g:9.81$

eq1:(-2*m*v*z-m*g*sin(%psi)-c1*(l+%lambda)*v)/(m*(l+%lambda))$

eq2:(-k*%lambda-c2*z+m*g*cos(%psi)+m*v^2*(l+%lambda))/m$

rownania:[v,z,eq1,eq2]$

zmienne:[%psi,%lambda,v,z]$

wart_pocz:[%pi/4,0.1,0,0]$

t_zakres:[t,0,10,0.01]$

sol: rk(rownania,zmienne,wart_pocz,t_zakres)$

sol_psi_t:makelist([first(sol[i]),second(sol[i])],i,1,
length(sol))$

sol_lambda_t:makelist([first(sol[i]),third(sol[i])],i,1,
length(sol))$

wxdraw2d(color=green,title="psi vs t", point_size=0,points_joined=true, points(sol_psi_t))$

wxdraw2d(color=blue,title="lambda vs t",point_size=0,
points_joined=true, points(sol_lambda_t))$

sol_psi:makelist(second(sol[i]),i,1,length(sol))$
sol_z:makelist(fourth(sol[i]),i,1,length(sol))$
sol_lambda:makelist(third(sol[i]),i,1,length(sol))$
sol_v:makelist(fifth(sol[i]),i,1,length(sol))$

wxplot2d ([discrete, sol_psi, sol_z],[legend, "v=v(psi)"],
[xlabel, "kat psi"],[ylabel, "predkosc katowa"])$

wxplot2d ([discrete, sol_lambda, sol_v],[legend, "z=z(lambda)"],
[xlabel, "wydłuzenie lambda"],
[ylabel, "predkosc wydłuzenia"])$

x:(l+sol_lambda)*sin(sol_psi)$
y:-(l+sol_lambda)*cos(sol_psi)$

load(draw)$

wxdraw2d(color=red, point_type=filled_circle,point_size=0.2,
points(x,y));