Neljas peatükk käsitleb Mathematica rakendamist mõnede
kõrgemasse matemaatikasse kuuluvate ülesannete lahendamisel.
§1. DIFERENTSIAALVÕRRANDID
Diferentsiaalvõrrandeid saab lahendada analüütiliselt
või numbriliselt. Vastavad käsud on DSolve ja
NDSolve. Esimene leiab otsitava funktsiooni analüütilise
kuju, näiteks y(x) = x2 + 3 sin x.
Numbrilisel lahendamisel saab lahendfunktsiooni tabuleerida ja joonestada
tema graafikut, funktsiooni analüütilist kuju aga ei leita. Täiendavat
materjali diferentsiaalvõrrandite kohta võib leida raamatust
[10].
Peab ütlema, et diferentsiaalvõrrandite lahendamine ei
ole Mathematica kõige tugevam külg. On olemas tohutu
hulk lihtsalt lahenduvaid võrrandeid, mille lahendeid ta ei suuda
leida; nii et vastuse asemel veateate saamist tuleb lugeda pigem tüütuks
reegliks kui harvaesinevaks erandiks.
1.1. Diferentsiaalvõrrandite analüütiline lahendamine
DSolve[ difvõr, y[x],
x]
Lahendab
diferentsiaalvõrrandi analüütiliselt.
y[x]
on otsitav funktsioon ja x sõltumatu muutuja. Võrrandi
kirjapanemisel kasutatakse järgmist süntaksit:
-
Otsitav funktsioon y(x) - y[x] ;
-
tema esimene tuletis y'(x) - y'[x] ;
-
teine tuletis y''(x) - y''[x] ;
-
5. järku tuletis y(5)(x) - Derivative[5][y][x].
Mathematica help-fail väidab, et käsk DSolve lahendab
ka diferentsiaalvõrrandite süsteeme. Tegelikul lahendamisel
võivad tekkida tõrked. Vähemalt paketi versioon 2.2
väljastab võrrandisüsteemide analüütilisel lahendamisel
ainult veateateid.
-
Näide 1. Lahendame diferentsiaalvõrrandi y'
= 2x, kus y = y(x).
-
In[1]:= DSolve[ y'[x]==2x, y[x],
x]
-
Out[1]=
2
-
{{y[x] -> x + C[1]}}
-
C[1] - lahendamisel tekkiv määramata konstant. Võrrandi
lahendiks on seega funktsioon y(x) = x2
+ C1 .
-
Määramata konstandi tähist on võimalik parameetriga
DSolveCostants->const, mille vaikimisi väärtuseks
on C.
-
Toodud lihtsa võrrandi korral ei teki lahendi õigsuses kahtlust,
keerukamate võrrandite lahendeid aga tasub kontrollida, sest leidub
võrrandeid, mida Mathematica lahendab valesti.
-
Kontrolliks lahendfunktsioonist tuletis(t)e leidmisel saab kasutada väljundrida:
-
In[2]:= D[ y[x]/.%1, x]
-
Out[2]= {2 x}
DSolve[{difvõr, algtingimus1,...},
y[x],
x]
Leiab
diferentsiaalvõrrandi lahendi, mis rahuldab antud algtingimusi.
-
Näide 2. Lahendame diferentsiaalvõrrandi y''
+ 2y' + 5y = 0 tingimustel y(0) = 0 ja y'(0)
= 1. Joonestame leitud lahendi graafiku.
-
In[3]:= DSolve[{y''[x] + 2 y'[x] + 5 y[x]
== 0,
-
y[0]==0,
-
y'[0]==1}, y[x],x]
-
-
Out[3]=
Sin[2 x]
-
{{y[x] -> --------}}
-
x
-
2 E
Graafiku joonestame Plot-käsu abil. Leitud lahendfunktsiooni
võib uuesti sisestada, kuid võib kasutada ka väljundreal
olevat tulemust. Selleks tuleb funktsiooni asemel kirjutada Evaluate[y[x]/.%3]
.
-
In[4]:= Plot[ Evaluate[y[x]/.%3],
{x,-3,3}]
-
-
-
1.2. Integraalkõverate parve joonestamine
Lahendades diferentsiaalvõrrandit ilma algtingimusteta, on vahel
kasulik joonestada integraalkõverate parv, s. t. anda määramata
konstandile erinevaid väärtusi ja joonestada saadud funktsioonide
graafikud.
-
Näide 3. Lahendame diferentsiaalvõrrandi y' =
3x2 + 2x - 2 ja joonestame integraalkõverate
parve. Et määramata konstandile saaks anda väärtusi,
tuleb ta tähistada mingi C-st erineva tähega.
-
In[5]:= lah = DSolve[ y'[x]==3x^2+2x-2,
y[x], x,
-
DSolveConstants->K]
-
Out[5]=
2 3
-
{{y[x] -> -2 x + x + x +
K[1]}}
-
Koostame lahendfunktsioonide loendi, andes K[1]-le väärtusi
0-st 5-ni.
-
In[6]:= t = Table[ y[x]/.lah, {K[1],0,5}]
-
Out[6]=
2 3
2 3
-
{{-2 x + x + x }, {1 - 2 x + x + x },
-
2 3
2 3
-
{2 - 2 x + x + x }, {3 - 2 x + x + x },
-
2 3
2 3
-
{4 - 2 x + x + x }, {5 - 2 x + x + x }}
-
-
In[7]:= Plot[ Evaluate[t], {x,-3,3},
-
AspectRatio->Automatic,
PlotRange->{-1,7.2}]
-
-
-
1.3. Diferentsiaalvõrrandite numbriline lahendamine
NDSolve[{difvõr, algting1,...},
y,
{x, xmin,
xmax}]
Lahendab
diferentsiaalvõrrandi numbriliselt piirkonnas [xmin
; xmax]. Algtingimusi peab olema sama palju, kui suur
on kõige kõrgem võrrandis esindatud tuletise järk.
Algtingimused antakse tavaliselt kujul
y(x0)
= a1, y' (x0) = a2
jne.,
kuid võib kasutada ka keerulisemaid avaldisi. Punkt x0
ei pea tingimata kuuluma piirkonda [xmin ; xmax].
NDSolve
ei
esita lahendiks olevat funktsiooni analüütilisel kujul vaid arvuloenditena.
Neid arvuloendeid väljundreal ei esitata, näidatakse vaid piirkond,
kus võrrand on lahendatud. Väljundit kasutades on võimalik
arvutada funktsiooni väärtust piirkonna [xmin
; xmax] suvalises punktis, selles piirkonnas funktsiooni
tabuleerida ja joonestada tema graafikut.
-
Näide 4. Lahendame numbriliselt diferentsiaalvõrrandi
x
cos x + sin x = y', kui y(p
) = 0. Leiame lahendi, kui x Î
[- 20; 20].
-
In[8]:= lah = NDSolve[{x Cos[x] + Sin[x]==y'[x],
y[Pi]==0},
-
y,{x,-20,20}]
-
Out[8]= {{y -> InterpolatingFunction[{-20.,
20.}, <>]}}
-
Leiame lahendfunktsiooni väärtuse kohal x = 3,52 .
-
In[9]:= y[3.52]/.lah
-
Out[9]= {-1.30043}
-
Joonestame funktsiooni y graafiku piirkonnas [- 20; 20].
-
In[10]:= Plot[ Evaluate[y[x]/.lah], {x,-20,20}]
-
NDSolve[{difvõr1, difvõr2,...,
algting1,...},{y,x,...},{t,tmin,tmax}]
Lahendab
numbriliselt diferentsiaalvõrranite süsteemi.
-
Näide 5. Lahendame võrrandisüsteemi
algtingimustel
ja piirkonnas
[ - 2; 1].
-
In[11]:= lah = NDSolve[{ y'[t]==x[t]+y[t],
x'[t]==-3 x[t],
-
x[-1]==10, y[-1]==5,
-
x'[-1]==0.05, y'[-1]==1},
-
{x,y}, {t,-2,1}]
-
-
Out[11]= {{x -> InterpolatingFunction[{-2.,
1.}, <>],
-
y -> InterpolatingFunction[{-2.,
1.}, <>]}}
Esitame lahendfunktsioonid tabelina. Olgu tabeli samm 0,4.
In[12]:= TableForm[
Table[
{t,x[t]/.lah,y[t]/.lah}, {t,-2,1,0.4}],
TableHeadings -> {None,{"t","x[t]","y[t]"}}]
Out[12]= t
x[t] y[t]
-
-2
200.856 -47.4549
-
-1.6
60.4966 -11.0081
-
-1.2
18.2212 1.58518
-
-0.8
5.48813 7.78849
-
-0.4
1.65299 13.2526
-
-16
-
-1.11022 10 0.497874
20.2626
-
0.4
0.149956 30.3765
-
0.8
0.0451659 45.3611
Parameeter TableHeadings->{{ridadepäised},{veergudepäised}}
lisab
tabeli ridadele ja veergudele pealkirjad.
Märkus. Kui see tabel väljastada TableFormi kasutamata,
on näha, et tabelis on liigseid alamloendeid. Kuna need praegu ei
sega, siis me neid ka ei eemalda.
Joonestame leitud funktsioonide x = x(t) ja y
= y(t) graafikud ühes teljestikus. Et graafikuid eristada,
joonestame x(t) graafiku pideva joonega, y(t)
oma aga kriipsjoonega. Selleks anname parameetrile PlotStyle väärtuseks
graafika direktiivi Dashing, vt. p. 3.1.4. Parameetri väärtused
Dashing[{}] (pidev joon) ja Dashing[{0.02}]}] (kriipsjoon)
kehtivad vastavalt esimese ja teise graafiku jaoks.
-
In[13]:= Plot[ Evaluate[{x[t],y[t]}/.lah],
{t,-2,1},
-
PlotStyle -> {Dashing[{}],Dashing[{0.02}]} ]
-
-
-
1.4. Osatuletistega diferentsiaalvõrrandid
Kasutades Mathematica versiooni 2.2, tuleb osatuletistega diferentsiaalvõrrandite
lahendamiseks mällu lugeda package Calculus`PDSolve1`.
Versiooni 3.0 korral ei ole seda teha tarvis.
Osatuletistega diferentsiaalvõrrandeid lahendab harelike dif-võrrandite
juures juba kasutusel olnud korraldus DSolve. Süntaks on
sarnane:
DSolve[osatuldifvõr, u[x,
y],
{x,
y}]
Siin u[x,
y] on otsitav kahe muutuja
funktsioon ning x ja
y on sõltumatud muutujad. Võrrandi
kirjapanekul kasutatakse tähsitusi:
Otsitav funktsioon u = u(x;y) - u[x,y]
;
funktsiooni u 1. tuletis x-i järgi u'x
- D[u[x,y],x] ;
funktsiooni u 1. tuletis y-i järgi u'y
- D[u[x,y],y].
Hoiatus. Mathematica lahendab diferentsiaalvõrrandeid
suhteliselt halvasti, kuid osatuletistega diferentsiaalvõrrandeid
lahendab ta eriti halvasti.
-
Näide 6. Lahendame võrrandi .
-
Esmalt laadime package Calculus`PDSolve1`, kui see on vajalik.
-
In[14]:= <<Calculus`PDSolve1`
-
Sümboli ` jaoks vajuta [Alt] + 096.
-
In[15]:= DSolve[
-
x D[u[x,y],x] + 2y
D[u[x,y],y] == x^2 y + u[x,y],
-
u[x,y],{x,y}]
-
Out[15]=
x y y
-
{{u[x, y] -> x (--- + C[1][--])}}
-
3 2
-
x
-
C[1] tähistab esimest järku osatuletistega diferentsiaalvõrrandi
lahendis esinevat määramata funktsiooni.
-
§2. INTERPOLEERIMINE
2.1. Newtoni interpolatsioonipolünoom
Interpoleerimise kohta võib lisamaterjali leida raamatust [11].
-
InterpolatigPolynomial[andmed, x]
Leiab
arvandmetele täpse interpolatsioonipolünoomi Newtoni kujul, kus
x
on polünoomi muutuja. n interpolatsioonisõlme korral
on tulemuseks (n - 1) astme polünoom. Andmed esitatakse kujul
-
{{ x1 , f(x1)
},{
x2
,
f(x2)
},...,{
xn
,
f(xn)
}}
või kujul
-
{ f(x1) , f(x2)
,...,
f(xn)
},
kui x1 = 1; x2 = 2; ...,
xn
= n.
-
Kui on teada funktsiooni tuletiste väärtused interpolatsioonisõlmedes,
siis võib iga f(xi) asendada loendiga
-
{
f(xi)
,
f'(xi)
,
f''(xi)
,...}
Näide 1. Koostame interpolatsioonipolünoomi tabeliga
1 |
2 |
3 |
4 |
5 |
6 |
10 |
22 |
26 |
12 |
10 |
15 |
antud funktsiooni jaoks.
-
In[1]:= data = {10, 22, 26, 12, 10,
15}
-
Out[1]= {10, 22, 26, 12, 10, 15}
-
-
In[2]:= poly1 = InterpolatingPolynomial[data,
x]
-
Out[2]=
5 5 5 (-5 + x)
-
10 + (12 + (-4 + (-(-) +
(- - ----------) (-4 + x))
-
3 3 8
-
-
(-3 + x)) (-2 + x)) (-1
+ x)
-
-
Interpolatsioonipolünoomi võib esitada ka teistsugusel kujul.
-
In[3]:= Expand[ poly1 ]
-
Out[3]=
2 3
4 5
-
2987 x 4919 x 1715 x 265
x 5 x
-
115 - ------ + ------- -
------- + ------ - ----
-
12 24
24 24
8
-
Näite illustreerimiseks joonestame interpolatsioonipolünoomi
graafiku. Samale joonisele kanname ka andmetabelile vastavad punktid ja
ühendame nad murdjoonega.
-
In[4]:= g1 = Plot[ poly1{x,1,6},
DisplayFunction->Identity];
-
p = ListPlot[ data, PlotStyle->PointSize[0.03],
DisplayFunction->Identity];
-
j = ListPlot[ data, PlotJoined->True,
DisplayFunction->Identity];
-
-
Show[g1, p, j, DisplayFunction->$DisplayFunction]
-
-
-
2.2. Vähimruutude meetod
-
Fit[andmed, funktsioonid,
muutujad]
Leiab
andmetele lähendfunktsiooni vähimruutude meetodil. Leitav lähend
on lineaarkombinatsioon kasutaja poolt ette antud funktsioonidest, mis
üldiselt ei pea olema astmefunktsioonid. Käsku Fit saab
kasutada ka mitme muutuja funktsioonide lähendamiseks. Andmed esitatakse
kujul
-
{{ x1 , y1,
..., f(P1) },{
x2
,
y2,
..., f(P2)
},...,{
xn
,
yn,
...,
f(Pn)
}},
kus Pi = (xi , yi ,
...).
-
Kui tegemist on ühe muutuja x funktsiooniga ja x omandab
väärtusi 1, 2, ... , n, siis võib kasutada kirjutust
-
{ f(x1) , f(x2)
,
..., f(xn) }.
-
Käsu viimases osas tuleb loetleda kõik muutujad. Kui muutujaid
on rohkem kui üks, siis tuleb nad esitada loendina. Muutujate arv
peab olema võrdne koordinaatide x, y, . . . arvuga
andmetabelis.
-
-
Näide 2. Leiame eelmises näites toodud andmetabelile lähendfunktsiooni,
mis oleks lineaarkombinatsioon funktsioonidest 1, x, x2
ja x3.
-
In[5]:= poly2 = Fit[ data, {1, x,
x^2, x^3}, x]
-
Out[5]=
2 3
-
-30. + 55.0913 x - 17.0952 x +
1.52778 x
-
-
Joonestame interpolatsioonipolünoomi graafiku.
-
In[6]:= g2 = Plot[ poly2, {x,1,6}]
-
-
-
-
Kanname ühele joonisele interpoleerimisel saadud polünoomi graafiku,
andmetabeli punktid ning punkte ühendava murdjoone.
-
In[7]:= Show[g2, p, j]
-
-
2.3. Numbriline interpoleerimine
-
Interpolation[andmed] Polünomiaalne
interpoleerimine. Lähendfunktsiooni analüütilist kuju ei
leita, selle asemel koostatakse nn. InterpolatingFunction'i objekti,
mille abil saab arvutada interpolatsioonipolünoomi väärtusi.
Andmed esitatakse kujul
-
{{ x1 , f(x1)
},
{
x2
,
f(x2)
},...,{
xn
,
f(xn)
}}
või kujul
-
{ f(x1) , f(x2)
,
..., f(xn) } , kui x1
= 1, x2 = 2, ... xn = n.
-
Kui on teada funktsiooni tuletiste väärtused punktides xi
, siis võib funktsiooni väärtuse f(xi)
asendada loendiga
-
{ f(xi) , f'(xi)
,
f''(xi)
,
...}
-
Mitme muutuja funktsiooni interpoleerimisel kirjutatakse punkti Pi
= (xi, yi, ...) koordinaadid ja punktile
vastav funktsiooni väärtus f(Pi) ühte
loendisse:
-
{{ x1 , y1 ,...,
f(P1)
},
{
x2
,
y2
,...,
f(P2)
},...,{
xn
,
yn
,...,
f(Pi)
}}
-
Tuletiste kasutamisel asendatakse funktsiooni väärtus f(Pi)
järgmise loendiga:
-
{ f(Pi) , {
,
,...,
,
,
...}}.
-
Lähendpolünoomi astet saab muuta parameetriga InterpolationOrder->aste.
Vaikimisi on aste 3, seega lähendatakse andmeid kuupparabooliga.
Interpolation
annab
lähendfunktsiooni numbriliselt, mitte analüütiliselt. Tulemus
väljastatakse kujul:
-
InterpolatingFunction[{a, b}, <>]
-
Siin {a, b} näitab piirkonda, milles funktsioon on interpoleeritud.
Lähendpolünoomi määravate arvuloendite asemel trükitakse
kolmnurksulud <>. Nii esitatud funktsiooni väärtuse
arvutamiseks kohal x = x0 kasutatakse süntaksit
-
InterpolatingFunction[{a, b}, <>][x0]
-
-
Näide 3. Leiame lähendi esimeses näites toodud andmetabelile.
-
In[8]:= poly3 = Interpolation[{10,22,26,12,10,15}]
-
Out[8]= InterpolatingFunction[{1,
6}, <>]
-
-
Arvutame interpolatsioonipolünoomi väärtuse punktis x
= 2,34:
-
In[9]:= poly3[2.34]
-
Out[9]= 24.7588
-
-
Et võrrelda saadud lähendfunktsiooni tegelike andmetega, joonestame
tema graafiku ja märgime samale joonisele ka andmetabeli punktid.
Seejuures kasutame esimese näite arvutustulemusi.
-
-
In[10]:= g3 = Plot[ poly3[x], {x,1,6},
DisplayFunction->Identity];
-
Show[g3, p, j, DisplayFunction->$DisplayFunction]
-
-
-
§3. ASTMEREAD
3.1. Summad ja korrutised
Sum[ f(i), {i,
imax}]
Arvutab
summa .
Sum[ f(i), {i,
imin,
imax}]
Arvutab
summa .
Sum[ f(i), {i,
imin,
imax,
di}]
Arvatab
summa, muutes summeerimisindeksit sammuga di.
Sum[ f(i, j), {i,
imax},
{j,
jmax}]
Arvutab
kahekordse summa .
Summeerimisindekseid võib olla rohkem kui kaks. Iga indeksi korral
võib määrangu {i, imax}
asemel
kasutada määrangut {i,
imin,
imax}
või {i,
imin,
imax,
di}.
-
Näide 1. Arvutame saja esimese naturaalarvu ruutude summa,
s. o. summa .
-
In[1]:= Sum[i^2, {i,100}]
-
Out[1]= 338350
-
NSum[ f(i), {i,
imax}]
Arvutab
numbriliselt summa .
Indeksi(te) väärtuste määramisel saab kasutada kõiki
käsu Sum jaoks toodud variante. Numbrilise summeerimise korral
võib summeerimisraja väärtuseks olla ka lõpmatus.
-
Näide 2. Leiame rea
summa.
-
In[2]:= NSum[1/(n^2+2n), {n,Infinity}]
-
Out[2]= 0.75
-
Näide 3. Leiame rea
summa.
-
In[3]:= NSum[ n!/(n^2+2^n),
{n,Infinity}]
-
Out[3]= ComplexInfinity
-
Vastus tähendab, et antud rida hajub.
Product[ f(i), {i,
imax}]
Arvutab
korrutise. Indeksi(te)
väärtuste määramisel saab kasutada kõiki käsu
Sum jaoks toodud variante.
-
Näide 4. Arvutame kõigi 20-st väiksemate paaritute
naturaalarvude korrutise.
-
In[4]:= Product[i,{i,1,20,2}]
-
Out[4]= 654729075
-
Antud juhul võiks sama korrutist arvutada ka poolfaktoriaali abil.
-
In[5]:= (20-1)!!
-
Out[5]= 654729075
-
NProduct[ f(i), {i,
imax}]
Arvutab
numbriliselt korrutise.
Indeksi(te) väärtuste määramisel saab kasutada kõiki
käsu Sum jaoks toodud variante.
3.2. Funktsiooni arendamine astmereaks
Astmeridade teooria põhjalik käsitlus on toodud õpikus
[6].
-
Series[f(x), {x,
x0,
n}]
Arendab
funktsiooni
f(x) astmereaks punktis x0.
Reaksarendus leitakse kuni astmeni (x - x0)n.
-
Series[f(x; y), {x,
x0,
xn},{y,
y0,
yn}]
Arendab
kahe muutuja funktsiooni f(x;
y) astmereaks; esmalt
muutuja
y järgi, siis muutuja
x järgi.
-
Astmereaks arendatud funktsioone käsitleb Mathematica kui teatavat
erilist tüüpi objekte, mida nimetatakse SeriesData objektideks.
SeriesData
objekt väljastatakse kujul
-
2 3
n
-
a0 + a1(x-x0) + a2(x-x0) + a3(x-x0) +...+ O[x-x0] ,
-
kus O[x-x0]^n on rea jääkliige. SeriesData objektidega
saab teha aritmeetilisi tehteid, neist saab leida tuletist ja integraali.
Tulemuseks saame seejuures ikka SeriesData objekti. SeriesData
objektist ei saa joonestada graafikut ega arvutada tema väärtust
konkreetse x korral. Et seda teha, tuleb reaksarendus enne teisendada
tavaliseks avaldiseks, nagu näidatakse järgmises punktis.
-
Näide 5. Leiame funktsiooni y = sin x reaksarenduse
punkti x = 1 ümbruses kuni astmeni (x - 1)4.
-
-
In[6]:= Series[Sin[x],{x,1,4}]
-
Out[6]=
2
-
Sin[1] (-1 + x)
-
Sin[1] + Cos[1] (-1 + x)
- ---------------- -
-
2
-
-
3
4
-
Cos[1] (-1 + x)
Sin[1] (-1 + x)
5
-
---------------- + ----------------
+ O[-1 + x]
-
6
24
-
InverseSeries[rida, x]
Leiab
reaksarenduse käsuga Series astmereaks arendatud funktsiooni
pöördfunktsioonile. Korraldus InverseSeries võib
osutuda kasulikuks pöördfunktsiooni leidmisel. On olemas küllalt
palju funktsioone, mille pöördfunktsiooni ei ole võimalik
analüütilisel kujul avaldada; sel juhul on oluline leida vähemalt
pöördfunktsiooni reaksarendus.
-
-
Näide 6. Leiame reaksarenduse funktsioonile f(x)
= ex - 1 punkti x = 0 ümbruses kuni astmeni
x3.
Saadud tulemust kasutades arendame astmereaks funktsiooni
f(x)
pöördfunktsiooni g(x) = ln(x + 1).
-
-
In[7]:= f = Series[E^x-1, {x,0,5}]
-
Out[7]=
2 3 4 5
-
x x x x
6
-
x + -- + -- + -- + --- +
O[x]
-
2 6 24 120
-
-
In[8]:= g = InverseSeries[f, x]
-
Out[8]=
2 3 4 5
-
x x x x
6
-
x - -- + -- - -- + -- +
O[x]
-
2 3 4 5
3.3. Reaksarenduse teisendamine funktsiooniks
Nagu eelmises punktis nimetatud, on SeriesData objektide kasutamisel
mõned piirangud. Neist vabanemiseks tuleb minna üle tavalisele
astmefunktsioonile.
-
Normal[avaldis] Teisendab SeriesData
objekti tavaliseks avaldiseks, jättes ära kõrgemat järku
väikese O[x-x0]^n.
-
-
Näide 7. Teisendame viiendas näites saadud siinuse astmerea
astmefunktsiooniks.
-
In[9]:= Normal[%6]
-
Out[9]=
3
-
(-1 + x) Cos[1]
-
(-1 + x) Cos[1] - ----------------
+ Sin[1] -
-
6
-
-
2
4
-
(-1 + x) Sin[1]
(-1 + x) Sin[1]
-
---------------- + ----------------
-
2
24
-
Kanname ühele joonisele funktsiooni y = sin x graafiku
ja tema reaksarendusele vastava astmefunktsiooni graafiku.
-
In[10]:= Plot[ {%9,Sin[x]}, {x,-2.5,6}]
-
-
-
§4. MAATRIKSARVUTUS
Maatriksite ja determinantide kohta leiab lugeja abimaterjali raamatust
[4].
4.1. Ühikmaatriks ja diagonaalmaatriks
Arvutuste käigus läheb sageli vaja mingit järku ühikmaatrikist
või diagonaalmaatriksit, kui diagonaalil olevad elemendid on teada.
Selliste maatriksite genereerimiseks on olemas spetsiaalsed käsud.
-
IdentityMatrix[n] Trükib n
järku ühikmaatriksi.
-
Näide 1. Kolmerealine ühikmaatriks:
-
In[1]:= TableForm[ IdentityMatrix[3]
]
-
Out[1]//TableForm=
-
1 0 0
-
0 1 0
-
0 0 1
-
-
DiagonalMatrix[{a1, a2,
..., an}] Annab maatriksi, mille
peadiagonaalil on elemendid a1,
a2,
... , an ja kõik muud elemendid on nullid; s.t.
diagonaalmaatriksi.
-
Näide 2. Maatriks, mille peadiagonaalil on arvud 2, 3 ja 1
ning muud elemendid on nullid.
-
In[2]:= TableForm[ DiagonalMatrix[{2,-3,1}]
]
-
Out[2]//TableForm=
-
2 0 0
-
0 -3 0
-
0 0 1
4.2. Determinandid ja miinorid
-
Det[M] Arvutab ruutmaatriksi M
determinandi.
-
-
Näide 3. Leiame maatriksi
determinandi.
-
In[3]:= {{-2,3,4}, {1,-3,2}, {-1,-4,3}}
-
Out[3]= {{-2, 3, 4}, {1, -3, 2},
{-1, -4, 3}}
-
In[4]:= Det[%3]
-
Out[4]= -41
-
-
Minors[M, k] Arvutab
maatriksi M kõik k-ndat järku miinorid. Teiste
sõnadega, leitakse kõigi k × k alammaatriksite
determinandid.
M ei pea olema ruutmaatriks.
-
Näide 4. Arvutame maatriksi M esimest järku miinorid,
kui
-
M = .
-
-
In[5]:= M = {{a,b}, {c,d},
{e,f}, {g,h}};
-
In[6]:= Minors[M,1]
-
Out[6]= {{a, b}, {c, d},
{e, f}, {g, h}}
-
-
Kuna esimest järku miinor on maatriksi üksik element, saime tulemuseks
esialgse maatriksi. Teist järku miinoriteks on teist järku determinandid.
-
In[7]:= Minors[M,2]
-
Out[7]= {{-b c + a
d}, {-b e + a f}, {-b g + a h}, {-d e + c f},
-
{-d g + c h}, {-f
g + e h}}
-
-
Kõrgemat järku miinoreid maatriksil M ei ole.
4.2. Maatriksi teisendusi
-
Transpose[M] Vahetab maatriksi M
read ja veerud, s.t. transponeerib maatriksi.
-
Näide 5. Leiame maatriksi
transponeeritud maatriksi.
-
In[8]:= {{1,-2,3}, {-1,0,1}, {2,-3,2}}
-
Out[8]= {{1, -2, 3}, {-1, 0, 1}, {2, -3,
2}}
-
In[9]:= TableForm[ Transpose[%8] ]
-
Out[9]//TableForm=
-
1 -1 2
-
-2 0 -3
-
3 1 2
-
-
Inverse[M] Leiab ruutmaatriksi M
pöördmaatriksi.
-
-
Näide 6. Leiame eelmise näite maatriksi pöördmaatriksi.
-
In[10]:= TableForm[ Inverse[%8] ]
-
Out[10]//TableForm=
-
3 5 1
-
- -(-) -(-)
-
4 4 2
-
-
1 -1 -1
-
3 1 1
-
- -(-) -(-)
-
4 4 2
-
MatrixPower[M, n] Leiab
ruutmaatriksi
M
n-nda astme, korrutades maatriksit iseendaga
n
korda. Kui
n on negatiivne, leitakse pöördmaatriksi aste.
-
-
Näide 7. Leiame 8. real sisestatud maatriksi kolmanda astme.
-
In[11]:= TableForm[ MatrixPower[%8,3]
]
-
Out[11]//TableForm =
-
34 -39 30
-
0 1 0
-
33 -39 31
-
-
RowReduce[M] Teisendab maatriksi
M
peadiagonaali elemendid ühtedeks ja peadiagonaalist üles ja allapoole
jäävad elemendid nullideks. Sellist operatsiooni nim. mõnikord
ka Gaussi teisenduseks.
-
-
Näide 8. Võtame ühe suvalise maatriksi M ja
teisendame seda..
-
In[12]:= M = {{-26, 5, -9,-158,-144},
-
{ -6, 5, -3, -64, -16},
-
{ 18,-3,-10, -39, 134}};
-
In[13]:= TableForm[RowReduce[M]]
-
Out[13]//TableForm=
-
1 0 0 2 7
-
0 1 0 -5 4
-
0 0 1 9 -2
4.4. Maatriksite (vektorite) korrutamine
-
Dot[A, B]
ehk
A.B
Maatriksite korrutamine. Maatriksid
A ja B peavad olema sobiva
suurusega. Kui tegureid on rohkem kui kaks, siis kirjutatakse A.B.C....
või
Dot[A,B,C,...].
-
Näide 9. Leiame maatriksite korrutise .
-
In[14]:= {{-2,0},{0,1},{2,2}};
-
-
In[15]:= {{1,2,3},{4,5,6}};
-
-
In[16]:= TableForm[ %14.%15 ]
-
Out[16]//TableForm=
-
-2 -4 -6
-
4 5 6
-
10 14 18
-
Dot[{a1, a2,
a3},
{b1,
b2,
b3}]
ehk
{a1,
a2,
a3}.{b1,
b2,
b3}
Leiab
vektorite = (a1;
a2;
a3)
ja = (b1;
b2;
b3)
skalaarkorrutise.
-
Cross[{a1, a2,
a3},
{b1,
b2,
b3}]
Arvutab
vektorite = (a1;
a2;
a3)
ja = (b1;
b2;
b3)
vektorkorrutise. NB! Mathematica versioonis 3.0 kuulub see käsk
tuuma funktsioonide hulka ja teda saab kasutada ilma pikema eeltööta.
Versiooni 2.2 (ja teiste madalamate versioonide) korral tuleb aga enne
mällu lugeda
package LinearAlgebra`CrossProduct`.
-
Näide 10. Arvutame ×,
kui = (2; -3; 7) ja
= ( -7; 6; 2). Kui on tarvis, loeme mällu package'i.
-
In[17]:= <<LinearAlgebra`CrossProduct`
-
Sümboli ` saab klahvikombinatsiooniga [Alt] + 096. Ja nüüd
sisestame vektorid ja arvutame nende vektorkorrutise.
-
In[18]:= a = {2,-3,7};
-
b = {-7,6,2};
-
In[19]:= Cross[a,b]
-
Out[19]= {-48, -53, -9}
4.5. Maatriksvõrrandid
-
LinearSolve[A, B] Leiab
maatriksi
X, mis on maatriksvõrrandi AX = B
lahendiks.
-
Näide 11. Lahendame maatriksvõrrandi AX = B,
kui A =
ja B = .
-
In[20]:= A = {{1,-2,4}, {0,1,3}};
-
B = {{2,1}, {-4,1}};
-
In[21]:= TableForm[ LinearSolve[A,B]
]
-
Out[21]//TableForm=
-
-6 3
-
-4 1
-
0 0
Eelmine
peatükk
Järgmine
peatükk
Sisukord