# Przykłady rozwiązań równania różniczkowego
rzędu I 

Jeśli danego równania nie da się rozwiązać w sposób analityczny (1)
należy skorzystać metody Runge Kutty (3)
metoda (2) nie jest obowiazkowa ale jej wykorzystanie 
podniesie ocenę

Najwyższą ocenę otrzyma się jeśli wykorzysta się wszystkie trzy podejścia

u'(t)-u(t)-exp(t)=0
dla warunku początkowego
dla t=2  u(2)=-0.1

## Rozwiązanie analityczne

1. Równanie różniczkowe rzędu I

Definiacja równania 

de : 'diff(u,t)- u - exp(-t);

rozwiązanie równania

gsoln : ode2(de,u,t);

określenie warunku początkowego

psoln : ic1(gsoln,t = 2, u = -0.1),ratprint:false;

podstawienie do uzyskanego rozwiązania t=2

rhs(psoln),t=2,ratsimp;

sprawdzenie poprawności rozwiązania

de,psoln,diff,ratsimp;

przypisanie prawej strony uzyskanego rozwiązania do zmiennej us

us : rhs(psoln);

kreślenie rozwiązania dla okresu czasu od 0 do 7

wxplot2d(us,[t,0,7],
           [style,[lines,5]],[ylabel," "],
           [xlabel,"t0 = 2, u0 = -0.1, du/dt = exp(-t) + u"])$

## Rozwiązanie z użyciem polecenia desolve

2. rozwiązanie z użyciem polecenia desolve

równanie różniczkowe  rzędu pierwszego

eqn : 'diff(u(t),t) - exp(-t) - u(t) = 0;

rozwiązanie równania różniczkowego I rzędu

gsoln : desolve(eqn,u(t));

sprawdzenie poprawności rozwiązania

eqn,gsoln,diff,ratsimp;

dla chwili czasu t=2 podstwiono do rozwiązania -0.1  
celem wuyznaczenia  w nastepnej kolejności stałej u(0)

bc : subst ( t=2, rhs(gsoln)) = - 0.1;

wyznacznie ostatecznej postaci rozwiązania 

solve ( eliminate ( [gsoln, bc],[u(0)]), u(t) ),ratprint:false;

przypisanie zmiennej us prawej strony uzyskanego rozwiązania

us : rhs(%[1]);

us, t=2, ratsimp;

kreślenie uzyskananej funkcji

wxplot2d(us,[t,0,7],
          [style,[lines,5]],[ylabel," "],
           [xlabel,"t0 = 2, u0 = -0.1, du/dt = exp(-t) + u"])$

us : subst( u(0) = -1,rhs(gsoln) ),ratsimp;

us,t=0,ratsimp;

## Numeryczne rozwiązanie metodą Runge Kutty

3 . Numeryczne rozwiązanie metodą Runge Kutty

ustawienie precyzji obliczeń

fpprintprec:8$

rozwiązanie równania : 'diff(u,t)= u + exp(-t);

 points : rk (exp(-t) + u, u, -0.1, [ t, 2, 7, 0.01 ] )$

%, fll$

wxplot2d( [ discrete, points ], [ t, 0, 7],
           [style,[lines,5]],[ylabel," "],
           [xlabel,"t0 = 2, u0 = -0.1, du/dt = exp(-t) + u"])$