sage: var('a b c x y z t')
(a, b, c, x, y, z, t)
Sage sadrži sve standardne operacije koje se uče u matematičkoj analizi, poput limesa, nizova, redova i diferencijalnog računa.
Limesi se izvrijednjavaju funkcijom limit():
sage: limit(sin(x)/x, x=0)
1
sage: limit((1+1/x)^x, x=oo)
e
Taylorov razvoj neke funkcije po nekoj varijabli oko neke točke do nekog reda radi funkcija taylor():
sage: taylor(sin(x), x, 0, 5)
1/120*x^5 - 1/6*x^3 + x
Zadatak 1
Odredite Taylorov razvoj funkcije \(f(x) = \arctan(x^2+1)\) oko točke \(x=\infty\) do šestog reda.
Zadatak 2
Kolika je relativna pogreška koju radimo ako za izvrijednjavanje \(f(2)=\arctan(5)\) koristimo red dobiven u gornjem zadatku? Da li bi greška bila manja da smo upotrebljavali razvoj do šestog reda, ali oko \(x=0\)?
Zadatak 3
Za koji \(x\) greška razvoja funkcije \(f(x) = \arctan(x^2+1)\) do šestog reda oko točke \(x=0\) postaje jednaka greški istog razvoja, ali oko točke \(x=\infty\)?
Deriviranje se radi funkcijom diff()
sage: diff(exp(2*x)*cos(3*x), x)
2*cos(3*x)*e^(2*x) - 3*e^(2*x)*sin(3*x)
Višestruko deriviranje:
sage: diff(exp(2*x)*cos(3*x), x, 4)
-119*cos(3*x)*e^(2*x) + 120*e^(2*x)*sin(3*x)
Deriviranje izraza koji uključuje opću simboličku funkciju f(x), korištenjem Leibnitzovog lančanog pravila:
sage: f = function('f') # simboličke funkcije treba deklarirati
sage: diff(x^2*f(x), x)
x^2*D[0](f)(x) + 2*x*f(x)
Simboličko neodređeno integriranje (integriramo izraz koji smo gore dobili deriviranjem):
sage: integral(-3*e^(2*x)*sin(3*x) + 2*e^(2*x)*cos(3*x), x).simplify_full()
-4*cos(x)*e^(2*x)*sin(x)^2 + cos(x)*e^(2*x)
Ovaj je izraz ekvivalentan onom gore, ali to ovdje nije eksplicitno. Ponekad je korisno eksperimentirati i s drugim algoritmima integriranja:
sage: integral(-3*e^(2*x)*sin(3*x) + 2*e^(2*x)*cos(3*x), x,
....: algorithm='sympy')
cos(3*x)*e^(2*x)
Primijetite da se konstanta integracije podrazumijeva bez navođenja.
Simboličko rješavanje određenih integrala:
sage: integral( x*log(x), x, 0, 1)
-1/4
Ukoliko integracija ovisi o nekom parametru, defaultni maxima algoritam za integriranje može tražiti da se izjasnimo o svojstivima tog parametrima o kojima ovisi rezultat integracije. Dodjeljivanje svojstava simboličkim varijablama izvodi se pomoću funkcije assume(). Kako takve pretpostavke ne bi utjecale na kasnije računa treba ih što prije pobrisati s forget().
sage: integral(y*sqrt(x*y), y, 0, 1-x)
Is x-1 positive, negative, or zero?
Traceback (most recent call last):
...
TypeError: Computation failed since Maxima requested additional constraints
(try the command 'assume(x-1>0)' before integral or limit
evaluation, for example):
sage: assume(x-1==0); integral(y*sqrt(x*y), y, 0, 1-x).factor(); forget()
2/5*sqrt(-(x - 1)*x)*(x - 1)^2
U ovom konkretnom slučaju rezultat zapravo ne ovisi o predznaku od \(x\), što maxima izgleda ne zna, ali sympy zna:
sage: integral(y*sqrt(x*y), y, 0, 1-x, algorithm='sympy')
2/5*sqrt(x)*(-x + 1)^(5/2)
Zadatak 4
Izračunajte neodređeni integral
i onda provjerite dobiveni rezultat deriviranjem i algebarskim manipulacijama.
Zadatak 5
Izračunajte (simbolički) dvostruki određeni integral
Zadatak 6
Izračunajte dvostruki neodređeni integral
i provjerite rezultat deriviranjem i algebarskim manipulacijama.
Neki integrali su preteški ili se naprosto ne daju prikazati u zatvorenoj formi pa Sage vraća zadani izraz:
sage: integral(arctan(gamma(x)), x, 0, 1)
integrate(arctan(gamma(x)), x, 0, 1)
Tada nam ostaje numerička integracija pomoću numerical_integral() čiji rezultat je dan kao tupl. Prvi element tupla je rezultat integracije, a drugi procijenjena greška.
sage: numerical_integral(arctan(gamma(x)), 0, 1)
(1.1020657425550975, 1.2235387620352894e-14)
Primijetite da se kod numeričke integracije ne navodi eksplicitno varijabla integracije već se ona određuje automatski. Integrand ionako ne smije ovisiti nego o samo jednoj varijabli da bi se mogao numerički integrirati.
Zadatak 7
Izračunajte integral
simbolički i numerički i usporedite rezultate.