Polynomy a racionální funkce
1 Polynomy
(%i16) | p1:-3*x+7*x^2-3*x^3+7*x^4; |
(%i17) | polynomialp(p1,[x]); |
(%i18) | coeff(p1,x,4); |
(%i19) | coeff(p1,x); |
(%i20) | load(powers)$ |
(%i21) | powers(p1,x); |
1.1 Sčítání a násobení polynomů
(%i22) | p2:5*x^5+3*x^3+x^2-2*x+1; |
(%i23) | 2*p1-3*p2+3; |
(%i24) | expand(%); |
(%i25) | 2*p1-3*p2+3, expand; |
(%i26) | p1*p2; |
(%i27) | expand(%); |
Maxima neprovádí roznásobení automaticky.
(%i28) | (3*x+5)^10; |
(%i29) | expand(%); |
(%i30) | expr:(x+1)^2*(y+1)^3; |
(%i31) | expand(expr); |
(%i32) | expand(expr,2); |
(%i33) | expr:(x+1)^-2*(y+1)^3; |
expand(expr,p,n) provede roznásobení jen u členů, jejichž mocniny jsou od -n do p.
(%i34) | expand(expr,2,2); |
Členy polynomu jsou automaticky setříděny sestupně vzhledem ke stupni.
1.2 Dělení se zbytkem, největší společný dělitel
(%i35) | q : quotient(p2,p1); |
(%i36) | r : remainder(p2,p1); |
(%i37) | is (p2=expand(q*p1+r)); |
(%i38) | divide(p2,p1); |
(%i39) | gcd(p2,p1); |
(%i40) | pol:expand(p2*p1); |
(%i41) | factor(pol); |
gfactor pracuje s oborem komplexních čísel
(%i42) | gfactor(pol); |
(%i43) | p:x^2+1; |
(%i44) | factor(p); |
(%i45) | gfactor(p); |
(%i46) | pol:8*x^3-12*x; |
(%i47) | factor(pol); |
(%i48) | grind; |
1.3 Polynomy více proměnných
(%i49) |
pol:6*x*y^5+12*y^4+14*y^3*x^3 -15*x^2*y^3 + 9*x^3*y^2 - 30*x*y^2 - 35*x^4*y + 18*y*x^2 +21*x^5; |
(%i50) | ordergreat(x,y); |
(%i51) |
6*x*y^5+12*y^4+14*y^3*x^3 -15*x^2*y^3 + 9*x^3*y^2 - 30*x*y^2 - 35*x^4*y + 18*y*x^2 +21*x^5; |
(%i52) | unorder(); |
(%i53) | factor(pol); |
(%i54) | collectterms(pol, x); |
(%i55) | collectterms(pol,y); |
2 Racionální funkce
(%i56) | r:(x^2+3*x+2)/ (x^2+5*x+6); |
Maxima neprovádí zjednodušení automaticky.
(%i57) | num(r);denom(r); |
(%i59) | rat(r); |
(%i60) | (x^(100)-1)/(x-1); |
(%i61) | rat(%); |
(%i62) | f:161*y^3+333*x*y^2+184*y^2+162*x^2*y+144*x*y+77*y+99*x+88$ |
(%i63) | g:49*y^2+28*x^2*y+63*x*y+147*y+36*x^3+32*x^2+117*x+104$ |
(%i64) | racfce:f/g; |
(%i65) | rat(racfce); |
Rozklad na parciální zlomky.
(%i66) | q:(x^3+x^2-x+1)/p1; |
(%i67) | partfrac(q, x); |
(%i68) | 1/(x^4-5*x^2+6); |
(%i69) | partfrac(%, x); |
2.1 Příklady na manipulaci s racionálními funkcemi
(%i70) | power:(x+1)^(-2); |
(%i71) | expand(power); |
Narozdíl od Maplu se expandují í záporné mocniny.
(%i72) | r1:(x+1)^2/((x^2+x)*x); |
(%i73) | expand(r1); |
(%i74) | r2:expand(num(r1))/expand(denom(r1)); |
(%i75) | factor(r2); |
(%i76) | (x-1)*(x+2)/((x+1)*x)+(x-1)/(1+x)^2; |
(%i77) | rat(%); |
Expand použité na racionální funkci ji převede na součet zlomků.
(%i78) | expand((x^2+2*x+2)/(x^2-2*x+2)); |
(%i79) | ratsimp(%); |
3 Zjednodušování výrazů
Příkazy rat, ratsimp a radcan slouží ke zjednodušování výrazů.
(%i80) | x+y/(x+2)+ z/(x^2+4); |
Příkaz ratsimp aplikovaný na součet zlomků provede převod na společného
jmenovatele.
(%i81) | ratsimp(%); |
Při aplikaci na polynom upraví polynom do tzv. "collected form".
(%i82) | ratsimp(x*(x+2)+(x-3)*(x+4)); |
Pro úpravy výrazů s obecnými exponenty, logaritmy a odmocninami používámé příkaz radcan.
(%i83) | expr : (exp(x)-1)/(exp(x/2)+1); |
(%i84) | %, ratsimp; |
(%i85) | %, radcan; |
(%i86) | logexpr : log((x+2)*(x-2)) + log(x); |
(%i87) | logexpr, ratsimp; |
(%i88) | logexpr, radcan; |
(%i89) | %, logcontract; |
(%i90) | logexpr, logcontract; |
(%i91) | (log(x+x^2)-log(x))^n/(log(1+x)^(n/2)); |
(%i92) | radcan(%); |
Úpravy výrazů s odmocninami
(%i93) | sqrt(2)*sqrt(3), expand; |
(%i94) | sqrt(2)*sqrt(3), radcan; |
(%i95) | sqrt(2)*sqrt(3), rootscontract; |
(%i96) | sqrt(6)*sqrt(3); |
(%i97) | sqrt(6)*sqrt(3), radcan; |
(%i98) | sqrt(6)/sqrt(3); |
(%i99) | sqrt(6)/sqrt(3), radcan; |
Systémová proměnná radexpand může být nastavena na hodnotu true (implicitní nastavení),
all nebo false. Nastavení určuje způsob automatického zjednodušování výrazů s odmocninami.
V implictním případě se sqrt(x^2) zjednoduší na abs(x). Maxima implicitně pracuje
se všemi symboly jako s reálnými čísly. To můžeme změnit nastavením proměnné domain
na hodnotu complex.
(%i100) | sqrt(x^2); |
(%i101) | domain : complex$ |
(%i102) | sqrt(x^2); |
(%i103) | domain : real$ |
(%i104) | radexpand; |
(%i105) | sqrt(16*x^2); |
(%i106) | radexpand: all$ |
(%i107) | sqrt(16*x^2); |
(%i108) | radexpand : false; |
(%i109) | sqrt(16*x^2); |
(%i110) | (x+2*sqrt(x)+1)/(1+sqrt(x)); |
(%i111) | radcan(%); |
3.1 Úpravy výrazů s goniometrickými funkcemi
(%i112) | trigsimp(tan(x)); |
(%i113) | sin(x+y), trigexpand; |
(%i114) | x + 3*cos(x)^2 - sin(x)^2, trigreduce; |
(%i115) | trigrat(sin(3*a)/sin(a+%pi/3)); |
(%i116) | rtt(e):= radcan (trigrat (trigsimp (e))); |
Manuál programu Maxima doporučuje při zjednodušování výrazů s goniometrickými
funkcemi postupně aplikovat příkazy trigreduce, ratsimp a radcan.
(%i117) | e : sin(x+y), trigexpand; |
(%i118) | rtt(e); |
(%i119) | e : tan(x+y), trigexpand; |
(%i120) | rtt(e); |
(%i121) | tan(%pi/8); |
(%i122) | load(spangl); |
(%i123) | tan(%pi/8); |