Predavanje 18: Primene, Glava 1 (nastavak)

FlipView[{Text[Style[" Branko Urošević, imqfbrankourosevic@gmail.com ",20,"Text",Italic]],Text[Style[" Faculty of Economics, University of Belgrade, NBS and CESIfo Munich",20,"Text", Italic]]}]

7. Neodređeni integral

Pojam neodređenog integrala

Neodređeni integral neke funkcije jeste funkcija čiji je prvi izvod jednaka funkciji koju integralimo. To je noćna mora za mnoge domaće ekonomiste. Ali više ne mora da bude, pošto WL to sve sam ume da radi. Recimo, nađimo integral funkcije 2 x (po x)

Pomoću WL, neodređeni integral se računa ovako:

Integrate[f[x],x]

Na primer, ukoliko je f[x]= 2 x, njen neodređeni integral je:

Integrate[2 x,x]

Tome se uvek u mislima mora dodati proizvoljna konstanta (to program ne radi). Da proverimo:

D[(x^2)+c,x]

Drugi rečima, neodređeni integral nije jednoznačno određen!

Neka važna svojstva neodređenih integrala

Hajde da izračunamo neodređeni integral od nekih elementarnih funkcija:

Clear[a]

Integrate[#,x]&/@{(x^n),Log[x],Exp[x],Sin[x],Cos[x],(a^x)}

Neodređeni integrali su linearni. Drugim rečima, integral linearne kombinacije dve funkcije je linearna kombinacija odgovarajućim integrala:

Integrate[(a f[x]+b g[x]),x]

je jednak

a Integrate[f[x],x]+b Integrate[g[x],x]

Možemo to da proverimo. Pretpostavimo da želimo da izračunamo neodređeni integral funkcije 3 (x^7)+ 4 Log[x]. Ako integral izračunamo odmah, dobijamo

Integrate[3 (x^7)+4 Log[x],x]

Ako to rastavimo na sabirke:

{Integrate[(x^7),x],Integrate[Log[x],x]}

gornji integral se može predstaviti i kao suma dva sabirka:

3Integrate[(x^7),x]+4 Integrate[Log[x],x]

Neodređeni integrali od komplikovanijih funkcija

U standardnom kursu analize, uči se kako da se peške računaju integrali. Neoređeni integrali se tipično računaju kombinujući smene promenljivih i parcijalno integraljenje. Predlažem da svako ko to želi pogleda kako se neki konkretni integrali računaju korak po korak, koristeći Wolfram Alpha.

Na primer,pretpostavimo da želimo da integralimo funkciju (x^3) Log[ 2 ((x])^2). Taj integral je:

Integrate[x^3 ((Log[2 x])^2),x]

Nije teško proveriti da je dobijeni izraz zaista neodređeni integral gornje funkcije. Naime, ukoliko nađemo njegov prvi izvod dobijamo:

D[%,x]

Evo kako možemo da vidimo korake potrebne da se to uradi sa papirom i olovkom:

Kada Alpha izbaci rezultat, kliknimo na Show All Results i izaberimo Step-by-Step Solution. Na taj način možemo da postepeno savladamo i korak-po-korak metod, mada nam on sada zapravo više nije baš neophodan.

Odrediti ukupni trošak na osnovu marginalnog troška

Pretpostavimo da marginalni trošak zavisi samo od promenljive q i da je dat izrazom:

3 (q^3)+17 q

Naći ukupni trošak ako se zna da je fiksni trošak (njega dodamo na kraju) jednak 59.

ukupniTrosak=Integrate[3 (q^3)+17 q,q]+59

Provera

D[ukupniTrosak,q]

Pošto je neodređeni integral definisan do na konstantnu, ukupni trošak je definisan na ovaj način do na trošak koji ne zavisi od nivoa proizvodnje. Takav trošak je fiksni trošak. Znači, ono što kompjuter izbaci je varijabilni deo ukupnog troška.

8. Određeni integral (površina ispod krive funkcije)

Uvod u određeni integral

Računamo površinu ograničenu krivom funkcije f[x], linijama x=a, x=b, gde je a < b i, sa donje strane, x osom. Površina ispod krive je pozitivna ukoliko je funkicija koju integralimo poziitivna, i negativna ukoliko je funkcija koju integralimo negativna. Površina ispod krive određuje se pomoću određenog integrala:

Integrate[f[x],{x,a,b}]

Integrale možemo računati u WL na puno načina. Integral funkcije 2 x u intervalu x od 0 do 5, možemo da kažemo ovo:

Integrate[2 x,x]

(x^2)/.{x->5}

Integrate[2 x,{x,0,5}]

Ovaj konkretan integral možemo da nađemo i grafički, kao površinu osenčenog trougla:

Plot[2 x,{x,0,5},Filling->Axis]

Takođe, u Palettes, možemo da izaberemo Basic Math Assistance i tamo nađemo šablom za integral:

(∫_0^5)2 x\[DifferentialD]x

(∫_0^5)2 x\[DifferentialD]x

A možemo i da koristimo Wolfram Alpha, pogotovu ako nas zanima da nađemo rešenje korak po korak:

Primeri određenih integrala

Razmotrimo sada integral

Integrate[(x^2),{x,2,5}]

((x^3)/3)/.{x->5}

((x^3)/3)/.{x->2}

(125/3)-(8/3)

To je površina osenčena u žuto:

Plot[(x^2),{x,0,8},Mesh->{{0}},MeshShading->{Directive@{Thick,Blue}},Filling->Axis,ColorFunction->(If[2≤ #<5,Yellow,White]&),ColorFunctionScaling->False]

Pogledajmo korak po korak kako bi se izračunao ovakav integral

Možemo da izračunamo integrale čiji su jedan ili oba kraja beskonačna. Na primer:

Integrate[((Exp[-((x^2)/2)])/(Sqrt[2 π])),{x,-∞,∞}]

Površina ispod gausove krive je jednaka 1.

Plot[((Exp[-((x^2)/2)])/(Sqrt[2 π])),{x,-5,5},Mesh->{{0}},MeshShading->{Directive@{Thick,Blue}},Filling->Axis,ColorFunction->(If[-4≤ #<4,Yellow,White]&),ColorFunctionScaling->False]

Očekivana vrednost i varijansa standardne normalne promenljive: primer određenih integrala

Funkciju ((Exp[-((x^2)/2)])/(Sqrt[2 π]))ćemo sresti kasnije kao gustinu verovatnoće standardne normalne promenljive. Ona ima očekivanu vrednost 0 i standardnu devijaciju jednaku 1. Hajde da to proverimo. Prvo definišimo:

f[x_]:=((Exp[-((x^2)/2)])/(Sqrt[2 π]))

Površina ispod krive f[x] normalizovana je na 1. Očekivana vrednost je integral funkcije x f[x] u opsegu definisanosti gustine verovatnoće (to jest od -∞ do ∞). Vidimo da su žuto osenčene površine jednake ali suprotnih znakova, pa ukupno daju 0.

Plot[x f[x],{x,-5,5},Mesh->{{0}},MeshShading->{Directive@{Thick,Blue}},Filling->Axis,ColorFunction->(If[-4≤ #<4,Yellow,White]&),ColorFunctionScaling->False]

ocekivanavrednost=Integrate[x f[x],{x,-∞,∞}]

Varijansa je očekivana vrednost kvadrata odstupanja od srednje vrednosti:

Integrate[(((x-ocekivanavrednost))^2) f[x],{x,0,∞}]

varijansa=Integrate[(((x-ocekivanavrednost))^2) f[x],{x,-∞,∞}]

Plot[(((x-ocekivanavrednost))^2) f[x],{x,-5,5},Mesh->{{0}},MeshShading->{Directive@{Thick,Blue}},Filling->Axis,ColorFunction->(If[-4≤ #<4,Yellow,White]&),ColorFunctionScaling->False]

Varijansa je pozitivan broj (jednak 1). Obe osenčene površine su pozitivne.

Integrali zadati na geometrijskim oblastima

Pretpostavimo da hoćemo da izračunamo površinu osenčenu na slici

RegionPlot[1/4≤x^2+(2y)^2≤1∧y>x,{x,-1,1},{y,-1,1}]

Taj region je definisan ovako: Boole[1/4≤x^2+(2y)^2≤1∧y>x] tako da integralimo ili 0 ili jedan u zavisnosti od toga da li tačka unutar ili izvan regiona.

NIntegrate[Boole[1/4≤x^2+(2y)^2≤1∧y>x],{x,-1,1},{y,-1,1}]

Možemo da napravimo od gomile tačaka (u ovom slučaju tačaka koje sve imaju koordinate od 0 do 1 i leže u 3D prostoru)) konveksnu ljusku, odnosno najmanji konveksni skup koji sadrži te tačke:

Graphics3D[Point[RandomReal[1,{50,3}]]]

ℛ=ConvexHullMesh[RandomReal[1,{50,3}]]

Nađimo integral neke funkcije koja zavisi od promenljivih x, y, z tako da tačka {x,y,z} leži u konveksnoj ljusci ℛ. Ako hoćemo da nađemo samo zapreminu konveksne ljudske stavimo da je funkcija koju integralimo jednaka 1.

Integrate[1,{x,y,z}∈ℛ]

Još primera iz geometrije

Ali, možemo da integralimo i neku drugu funkciju, na primer x + y +(z^2). Integral te funkcije ukoliko tačke leže u ℛ je:

Clear[x,y,z]

NIntegrate[x+y+(z^2),{x,y,z}∈ℛ]

Možete da koristite i pojmove iz geometrije direktno u integralu. Ovo je površina jediničnog diska.

Integrate[1,{x,y}∈Disk[]]

Možemo da računamo i integrale od komplikovanijih funkcija definisanih na disku:

NIntegrate[Abs[Sqrt[x]],{x,y}∈Disk[]]

Evo kako izgleda integrand:

Plot3D[{Abs[Sqrt[x]],0},{x,y}∈Disk[]]

Integral je, u ovom slučaju, zapremina ograničena tim figurama.

9. Linearna algebra

Sabiranje vektora i množenje na skalar

Već smo ranije videli da su u WL vektori proste liste. Ako treba da ih sabiramo, moraju imati iste dimenzije.

x={2,3}; y={-1,1};

Vektori se sabiraju pokomponentno:

x+y

Crvenim predstavimo vektor x, plavim vektor y a zelelim njihovu sumu. Pošto ćemo često prikazivati vektore, evo jednostavne funkcije koja to radi. Prvi argument je lista boja, drugi je lista vektora, a treći je ceo broj koji kontroliše veličinu grafiku u ImageSize. Uslov koji zadajemo jeste da dužina vektora boja mora biti ista kao i dužina liste vektora.

Svaki vektor crtamo pomoću grafičke funkcije Arrow. Početna tačka će uvek biti koordinatni početak {0,0} a kranja tačka se zadaje vektorom koji želimo da grafički predstavimo. Pri tome, prva boja u listi boja daje direktivu za prvi vektor u listi, itd.

vektorGraf[boje_List,vektori_List,velicina_Integer]/;Length[boje]==Length[vektori]:=Graphics[MapThread[{#1,Thick,Arrow[{{0,0},#2}]}&,{boje,vektori}],ImageSize->velicina,Axes->True,GridLines->Automatic]

vektorGraf[{Red,Blue},{{3,-1},{2,2}},200]

vektorGraf[{Red,Blue,Green},{x,y,x+y},200]

Linearna kombinacija vektora i linearna nezavisnost

Množenje vektora na skalar α ga rasteže (ukoliko je apsolutna vrednost α veća od 1) ili smanjuje po dužini (ukoliko je apsolutna vrednost α manja od 1). Ukoliko je α>0, novi vektor zadržava pravac. Ukoliko je α<0, vektor menja pravac na suprotni. Predstavimo vektor x (crna boja), njegov proizvod sa 1.5 (plava boja) i sa -0.7 (zelena boja).

{x,1.5 x, -0.7 x}

vektorGraf[{Black,Blue,Green},{x,1.5 x,-0.7 x},300]

Linearna kombinacija dva vektora je vektor:

α x + β y

Vektori su linearno nezavisni ukoliko je jedini način da se dobije linearna kombinacija koja je jednaka nultom vektoru {0, 0} takva da su α = 0, β = 0. Proverimo da su x i y linearno nezavisni

Solve[α x + β y=={0,0},{α,β}]

Grafički, dva dvodimenziona vektora su linearno nezavisna ukoliko ne leže na istoj pravoj.

vektorGraf[{Red,Blue},{x,y},300]

Sa druge strane, ovaj par vektora je linearno zavisan:

w={2,-1};v={-4,2};

vektorGraf[{Red,Blue},{w,v},300]

Linearna kombinacija vektora i njihova linearna nezavisnost

Isti zaključak dobijamo i na osnovu ranga matrice koje formiramo iz skupa vektora za koji proveravamo linearnu nezavisnost. Ukoliko je rang matrice isti kao broj vektora, skup je nezavisan, a ako je manji onda je skup vektora linearno zavisan.

mat1= {x,y}

mat1= {x,y};MatrixRank[mat1]

mat2 = {w,v};MatrixRank[mat2]

Pretpostavimo da nas zanima linearna nezavisnost sledeća 3 vektora:

x={3,-1,2};y={4,1,-3};z={0,2,1};

Proverimo da su linearno nezavisni koristeći sva tri metoda:

Solve[{α x+β y+γ z==0},{α,β,γ}]

MatrixRank[{x,y,z}]

Najzad, grupa od 3 vektora u 3D je linearno nezavisna ukoliko ne leže sva tri u istoj ravni:

Graphics3D[{{Red,Thick,Arrow[{{0,0,0},x}]},{Blue,Thick,Arrow[{{0,0,0},y}]},{Green,Thick,Arrow[{{0,0,0},z}]}},ImageSize-> 200,Axes->True]

Primetimo da se ovo može preglednije napisati i ovako:

Graphics3D[MapThread[{#1,Thick,Arrow[{{0,0,0},#2}]}&,{{Red,Blue,Green},{x,y,z}}],ImageSize-> 200,Axes->True]

Skalarni proizvod, norma (dužina) i ugao među vektorima

Ako imamo dva vektora istih dimenzija, možemo da napravimo njihov skalarni proizvod koristeći funkciju Dot (ili .)

Clear[x,y]

x={x1, x2}; y={y1, y2};

x.y

U punoj formi, to se piše ovako:

Dot[x,y]

Ukoliko su dva vektora:

x={1,2};y={1,1};

skalarni proizvod je po veličini jednak površini osenčenog paralelograma:

Dot[x,y]

Graphics[{{Red,Thick,Arrow[{{0,0},x}]},{Blue,Thick,Arrow[{{0,0},y}]},{LightBlue,Parallelogram[{0,0},{x,y}]}},ImageSize-> 200,Axes->True,GridLines->Automatic]

Nastavak o skalarnom proizvodu i normi vektora

Dužine ova dva vektora su:

(Sqrt[Dot[{a,b},{a,b}]])

(Sqrt[(a^2)+(b^2)])/.{a-> 1,b-> 2}

Norm[x]

{Norm[x],Norm[y]}

Skalarni proizvod dva vektora se može predstaviti kao proizvod njihovih dužina sa kosinusom ugla među njima. Stoga je kosinus ugla:

((Dot[x,y])/(Norm[x]Norm[y]))==Cos[α]

Iz ove jednačine nalazimo traženi ugao koristeći funkciju za približno rešavanje sistema jednačina FindRoot:

FindRoot[((Dot[x,y])/(Norm[x]Norm[y]))==Cos[α],{α,0.2}]

Svaki vektor možemo normalizovati tako što ga podelimo sa njegovom dužinom. U tom slučaju vektor će imati normu 1. To može da se uradi koristeći funkciju Normalize:

Normalize[#]&/@{x,y}

Da proverimo: norma normalizovanih vektora je:

Norm[Normalize[#]]&/@{{(1/(Sqrt[5])),(2/(Sqrt[5]))},{(1/(Sqrt[2])),(1/(Sqrt[2]))}}

Norm[{2,-1,5}]

{2,-1,5}/Norm[{2,-1,5}]

Normalize[{2,-1,5}]

Dot[{2,-1,5},{5,1,3}]

Dot[{2,-1,5},{5,1,3}]/(Norm[{2,-1,5}]Norm[{5,1,3}])==Cos[α]

FindRoot[((4 (Sqrt[(6/7)]))/5)==Cos[α],{α,0.5}]

Definicija i neka standardna svojstva matrica

Matrice su složene liste sa dva nivoa (levels). Ali, to nije dovoljno da nešto bude matrica. Naime, potrebno je da svaka podlista u matrici ima iste dimenzije. Da li je neka lista matrica? Odgovor na to pitanje daje funkcija MatrixQ.

mat={{a,b},{c,d}};

MatrixQ[mat]

Mada je u običnoj matematici vektor {a,b} takođe matrica, u WL to nije slučaj. Naime, u pitanju je vektor:

MatrixQ[{a,b}]

VectorQ[{a,b}]

Ovo takođe nije matrica zato što je prva podlista dimenzije 2, a druga dimenzije 3

MatrixQ[{{a,b},{c,d,g}}]

Matrica je kvadratna ukoiko je u njoj broj kolona jednak broju redova. Funkcija SquareMatrixQ proverava da li je matrica kvadratna ili ne.

SquareMatrixQ[mat]

SquareMatrixQ[{{a,b,q},{c,d,g}}]

Ukoliko je matrica kvadratna, za nju se može izračunati determinanta

Det[mat]

Transponovanje i simetričnost matrice

Već smo ranije videli kako se transponuju matrice. Transponovanje dovodi do zamene mestima redova i kolona. Pretpostavimo da imamo matricu A:

A={{a,b,c},{e,g,h}};

U matričnoj formi ona izgleda ovako:

MatrixForm[A]

Transponovana od ove matrice je:

Transpose[A]

U matričnoj formi (ovde koristimo skraćenu formu Aᵀ za transponovanu matricu):

MatrixForm[A\[Transpose]]

Matrica je simetrična ukoliko je njena transponovana matrica jednaka njoj samoj. Samo kvadratna matrica može biti simetrična. Ali, nisu sve kvadratne matrice simetrične.

A={{a,b},{b,c}};

A==A\[Transpose]

SymmetricMatrixQ[A]

Kako generisati slučajne simetrične matrice proizvoljnih dimenzija

Nije teško konstruisati proizvoljne slučajne matrice određenih dimenzija. Na primer, slučajna matrica dimenzija 3x5 sa elementima slučajno odabranim među celim brojevima između -10 i 10 može da se dobije ovako:

RandomInteger[{-10,10},{3,5}]

Ukoliko želimo da generišemo slučajne kvadratne matrice, sve što treba da uradimo jeste da obe dimenzije budu iste. Ovako generišemo kvadratnu matricu dimenzija 5x5:

slucajnaKvadratnaMatrica=RandomInteger[{-10,10},{5,5}]

Takva matrica uglavnom neće biti simetrična. U ovom slučaju:

SymmetricMatrixQ[slucajnaKvadratnaMatrica]

Kako da generišemo simetričnu matricu sa slučajnim elementima? Pošto matrica mora biti simetrična, slučajno se može birati jedna ali ne i obe polovine.matrice (ili ispod ili iznad glavne dijagonale). Konstruišimo donju polovinu slučajnim putem:

donjaPolovina=Table[RandomInteger[{-10,10}],{i,1,5},{j,1,i}]

Da bi smo mogli da je transponujemo, napravimo Padded verziju koja će sa nulama dopuniti ovu matricu do kvadratne.

donjaPadded=PadRight[#,5]&/@donjaPolovina

donjaPadded//Grid

Nastavak

Gornju polovinu matrice dobijamo transponovanjem donjaPadded uz zamenu dijagonalnih elemenata sa nulom.

gornjaPadded=ReplacePart[donjaPadded\[Transpose],{isto_,isto_}:>0]

gornjaPadded//Grid

Najzad, slučajna simetrična matrica je suma donjaPadded i gornjaPadded

simetricnaSlucajna=donjaPadded+gornjaPadded

simetricnaSlucajna//Grid

Sada možemo da konstruišemo funkciju koja pravi simetričnu matricu proizvoljnih dimenzija sa slučajnim celim koeficijentima:

slucajnaSimetricnaMatrica[{donja_Integer,gornja_},n_Integer]:=Module[{donjaPolovina=Table[RandomInteger[{donja,gornja}],{i,1,n},{j,1,i}],donjaPadded,gornjaPadded,simetricnaSlucajna},donjaPadded=PadRight[#,n]&/@donjaPolovina;gornjaPadded=ReplacePart[donjaPadded\[Transpose],{isto_,isto_}:>0];simetricnaSlucajna=donjaPadded+gornjaPadded]

slucajnaSimetricnaMatrica[{-10,10},5]//Grid

SymmetricMatrixQ[slucajnaSimetricnaMatrica[{-10,10},5]]

Dot operator: množenje matrice sa vektorom

Razmotrimo matricu:

mat={{1,3},{-1,1}};

Nju možemo da pomnožimo sa vektorom dužine 2 (ista sintaksa radi i za množenje dve matrice odgovarajućih dimenzija):

v={2,1};

Dot[mat,v]

ili kraće

mat.v

Tu se svaki red u matrici množi sa vektorom v. Geometrijski, ukoliko crvenom bojom označimo vektor v, a plavom transformisani vektor mat.v, imamo

vektorGraf[{Red,Blue},{v,mat.v},300]

Množenje sa kvadratnom matricom menja, u principu, orijentaciju originalnog vektora kao i njegovu veličinu (normu).

Dot operator: množenje matrice sa matricom

Na isti način možemo da množimo matricu sa drugom matricom, dok god su dimenzije odgovarajuće. Kvadratne matrice mogu da se množe jedna sa drugom, pod uslovom da su istih dimenzija. Na primer:

A={{2,1},{-1,0}};

Dot[mat,A]

je isto što i

mat.A

Ta operacija u principu nije komutativna. Drugim rečima, Dot[A,mat] nije isto što i Dot[mat,A].

Dot[A,mat]

Matrice, razume se, ne moraju da budu kvadratne istih dimenzija da bi se mogle pomnožiti jedna sa drugom. Ukoliko je:

B={{2,1},{-1,0},{4,1}};MatrixForm[B]

nju možemo pomnožiti sa A ovako:

Dot[B,A]

ali ne i ovako:

Dot[A,B]

Inverzne matrice i matrice rotacije

Razmotrimo operaciju invertovanja matrice mat. Njoj inverzna matrica postoji, pošto je:

Det[mat]

različit od nule. Inverzna matrica pomoću funkcije Inverse:

Inverse[mat]

Primetimo da, po definiciji, proizvod matrice na svoju inverznu, bilo sa leve bilo sa desne strane, uvek daje jediničnu matricu.

mat.Inverse[mat]

Inverse[mat].mat

ortog={{Cos[π/4],-Sin[π/4]},{Sin[π/4],Cos[π/4]}}

ortog\[Transpose]==Inverse[ortog]

Ortogonalna matrica je ona matrica čija je transponovana matrica jednaka njenoj inverznoj matrici. Da li je matrica mat ortogonalna? Odgovor je: ne. Naime, transponovana matrica matᵀ nije jednaka inverznoj:

mat\[Transpose]

mat\[Transpose]==Inverse[mat]

Evo i primera ortogonalne matrice:

ortog={{Cos[π/4],-Sin[π/4]},{Sin[π/4],Cos[π/4]}}

Još o ortogonalnim matricama

Proverimo prvo da je ortog zaista ortogonalna. Naime, njena transponovana matrica je

ortog\[Transpose]

a inverzna je

Inverse[ortog]

Vidimo da je

ortog\[Transpose]==Inverse[ortog]

Kako ortogonalna matrica deluje na neki vektor? Rekli smo da mu ne menja dužinu nego da ga eventualno samo rotira. Proverimo to u slučaju vektora v={2,1} koga ćemo predstaviti crvenom bojom kao i vektora ortog.v, koga ćemo predstaviti plavom bojom:

vektorGraf[{Red,Blue},{v,ortog.v},300]

Vidimo i da su oba vektora iste dužine:

Norm[#]&/@{v,ortog.v}

Simplify[%]

Dijagonalne i jedinična matrica

U praksi je često korisno na osnovu nekog vektora naći dijagonalnu matricu za koju su na glavnoj dijagonali elementi tog vektora, a van glavne dijagonale su nule. To su dijagonalne matrice.Ukoiko je

v={3,-4,2};

V=DiagonalMatrix[v]

ili, u matričnoj formi

MatrixForm[V]

Važna osobina dijagonalne matrice čiji su dijagonalni elementi svi različiti od nule jeste da je njena inverzna matrica jeste dijagolna matrica gde je svaki pojedinačni element invertovan.

Inverse[V]

DiagonalMatrix[1/v]

Specijalni slučaj dijagonalne matrice jeste jedinična matrica. To je dijagonalna matrica kod koje su svi elementi na dijagonali jednaki 1. Možemo ih konstruisati na razne načine:

DiagonalMatrix[{1,1,1}]

IdentityMatrix[3]

Rešavanje sistema linearnih jednačina pomoću inverzne matrice

Razmotrimo sledeći sistem jednačina

A=RandomInteger[{-10,10},{5,5}]

v={x1,x2,x3,x4,x5};

b=RandomInteger[{-10,10},{5}]

U matričnoj formi sistem jednačina izgleda ovako:

A.v==b

Solve[A.v==b,v]

Rešenje sistema jednačina se u matričnoj formi dobija tako što pomnožimo obe strane jednačine sa leve strane sa invertovanom matricom sistema Inverse[A]:

resenje=Inverse[A].b

Kada matrica A ima dobro definisanu inverznu matricu, odnosno kada je A punog ranga, ovakvo rešenje postoji i jedinstveno je. Ako je jednačina homogena, to jest ako je desna strana (vektor b) jednaka 0, onda ukoliko je determinanta A različita od nule, jedino rešenje je nulti vektor.

Solve[A.v==0,v]

Ukoliko det[A]=0, onda nećemo imati jedinstveno rešenje sistema. To će značiti da redovi u matrici A nisu linearno nezavisni vektori.

Primer iz finansijske ekonomije: Kompletno tržište

U finansijskoj ekonomiji postoji veoma važan pojam kompletnog tržišta. Naime, pretpostavimo da imamo tržište takvo da traje jedan vremenski period, odnosno dva trenutka: danas i sutra. Danas kupujemo ili prodajemo hartije od vrednosti a realizovani novčani tokovi sutra su slučajni i imaju konačno mnogo mogućih realizacija (broj stanja). Ukoliko je broj mogućih stanja S, kažemo da je tržište kompletno ukoliko postoji S linearno nezavisnih hartija. Linearnu nezavisnost hartija od vrednosti proveravamo najlakše tako što svakoj hartiji dodelimo jedan red u takozvanoj matrici novčanih tokova. Ukoliko je rang te matrice jednak broju stanja, tržište je kompletno.

Razmotrimo situaciju u kojoj imamo 3 stanja kao i 3 hartije, a, b, i c, sa novčanim tokovima. Svaki od vektora daje novčani tok hartije u prvom, drugom ili trećeom stanju. Ako se prvo stanje realizuje, hartija a bi dala 2, hartija b bi dala 0, a hartija c bi izgubila 2 evra.

{1,0,0},{0,1,0},{0,0,1}

{1,0,0}

cfa={2,0,-1};cfb={0,-1,3};cfc={-2,3,1};

Da bismo proverili kompletnost formiramo matricu novčanih tokova u kojoj svakom redu odgovaraju novčani tokovi jedne hartije

mat={cfa,cfb,cfc};mat//MatrixForm

Rang ove matrice je

mat//MatrixRank

Graphics3D[{{Red,Thick,Arrow[{{0,0,0},cfa}]},{Blue,Thick,Arrow[{{0,0,0},cfb}]},{Green,Thick,Arrow[{{0,0,0},cfc}]}},ImageSize-> 200,Axes->True]

Replikacioni portfolio za Arrow-Debreu hartije

Stoga je tržište te tri hartije kompletno. Zašto nas zanima kompletno tržište? Zato što onda možemo svaku drugu hartija da replikujemo preko portfolija postojeće 3 hartije koje kompletiraju tržište. U tom slučaju, ukoliko znamo cene hartija a, b, i c, lako možemo da nađemo vrednosti svih drugih hartija.

Posebno je korisno replikovati Arrow-Debreu hartije za stanje 1, 2, i 3. To su hartije koje daju 1 evro samo u slučaju da se određeno stanje realizuje i ništa u drugim stanjima. U slučaju stanja 1, to bi značilo da treba da nađemo vektor ulaganja (broj akcija) u hartije a, b, i c

n={na,nb, nc};

takav da je novčani tok portfolia dat vektorom Dot[n,mat] jednak jediničnom vektoru koji odgovara prvom stanju, {1,0,0}.

inv=Inverse[mat]

n1={1,0,0}.inv

n3={0,0,1}.inv

n1.mat

n2={0,1,0}.inv

n.mat=={1,0,0}

To je isto što i linearna kombinacija hartija:

na cfa+nb cfb+nc cfc

Stoga su replikacioni portfoli za AD1, AD2, i AD3 dati izrazima:

nAD1={1,0,0}.Inverse[mat]

nAD2={0,1,0}.Inverse[mat]

nAD3={0,0,1}.Inverse[mat]

Cene Arrow-Debreu hartija i vrednovanje složenih hartija od vrednosti

Pretpostavimo da znamo cene hartija a, b, i c danas i da su date vektorom cena:

p={pa,pb,pc}={1/2,1/3,1/4};

n1

a3=n3.p

a2=n2.p

a1=n1.p

a={a1,a2,a3}

pnovo={x,y,z}.a

Onda su cene AD hartija date prosto vrednošću svakog od replikacionih portfolia, odnosno kao suma vrednosti svake od 3 akcije u odgovarajućim količinama. Matematički, to je prosto skalarni proizvod vektora cena p i odgovarajućeg vektora broja akcija n. To možemo definisati i ovako:

a={a1,a2,a3}={p.nAD1,p.nAD2,p.nAD3}

Pošto su cene a >0, ne postoji mogućnost arbitraže i sve druge hartije mogu da se jednoznačno vrednuju. Pretpostavimo da na tržištu postoji hartija koja daje sledeće novčane tokove:

cfx={7,3,2};

Ako bismo imali jednu akciju hartije x, u prvom stanju bismo dobili 7 evra, u drugom 3, a u trećem 2 evra. Kolika je cena te hartije? Pošto ova hartija može da se predstavi kao portfolio od 7 AD1 hartija, 3 AD2 hartije i 2 AD3 hartije,

7{1,0,0}+3{0,1,0}+2{0,0,1}

njena cena će biti prosto cena tog portofolija AD hartija

px=7 a1+3 a2+2 a3

px=Dot[a,cfx]

Vrednovanje drugih hartija na kompletnom tržištu

Pretpostavimo da nas zanima da nađemo cenu kol opcije na akciju x. Ova opcija daje pravo (ali ne i obavezu) da u trenutku 1 dobijemo akciju x po ceni od, recimo, k=4 (to je takozvana cena izvršenja). To pravo, koje je neka vrsta osiguranja, treba da kupimo danas. Kolika je fer cena takve opcije? Da bismo to odredili potrebno je prvo da nađemo novčane tokove od takve hartije. Naime, podsetimo se da je

cfx

Stoga, pravo da dobijemo hartiju x u trenutku 1 po ceni od 4 ima smisla iskoristiti samo u slučaju da se realizuje stanje 1, a nema smisla realizovati u ostalim stanjima. Naime, u stanju jedan hartija bi bila vredna 7, pa ako možemo da je kupimo za 4 zaradili bismo 7-4 =3. U ostalim slučajevima to se ne bi isplatilo, pa bi opcija ostala  bezvredna. Matematički, novčani tok kol opcije bi bio:

cfkol=Max[#-4,0]&/@cfx

Cena ove hartije je jednaka sumi novčanih tokova u sva tri stanja ponderisanim sa odgovarajućim cenama stanja (koliko vredi 1 evro u tom stanju), odnosu:

pkol=a.cfkol

Karakteristične vrednosti i karakteristični vektori (Eigenvalues, Eigenvectors)

Jedna od ključnih koncepata u linearnoj algebri jeste pojam karakterističnih vrednosti i odgovarajućih karakterističnih vektora. Za kvadratnu matricu A, broj λ i vektor x, ovo je karakteristična jednačina (eigenvalue equation):

A.x ==λ x

Kad pomnožimo matricu A sa karakterističnim vektorom x dobijamo vektor koji leži na istoj pravoj kao x. Koeficijent proporcionalnosti je karakeristična vrednost λ a vektor x je karakteristični vektor. Ako je I jedinična matrica, važi da:

A.x ==λ I.x  
ili
(A- λ I).x ==0

U ovoj poslednjoj formi, matrica sistema je (A- λ I). Imamo, dakle, homogenu jednačinu. Ona ima netrivijalno rešenje (rešenje koje nije identično jednako nuli) ako i samo ako:

det[(A- λ I)] =0

odnosno ako (A- λ I) nije invertibilna. Ukoliko je matrica A dijagonalna, onda je i (A- λ I) dijagonalna, a λ su prosto elementi na dijagonali. Na primer:

A.{0,0,1}

Eigenvectors[A]

Eigenvalues[A]

A={{3,0,0},{0,-2,0},{0,0,4}};

A-λ IdentityMatrix[3]//MatrixForm

Jasno je da su rešenja jednačine det[(A- λ I)] =0 u tom slučaju λ=3, λ= - 2, i λ = 4. Eigenvalues daje karakteristične vrednosti.

Eigenvalues[A]

Slučaj nedijagonalne simetrične kvadratne matrice

Razmotrimo sada matricu:

B={{2,3},{3,8}};

Potražimo njene karakteristične vrednosti i karakteristične vektore. Ovo je najbrži način da se nađu karateristične vrednosti:

{λ1,λ2}=Eigenvalues[B]

To isto bismo dobili i direktno, rešavanjem karakteristične jednačine:

B-λ IdentityMatrix[2]

B.v1==λ1 v1

B.v2==λ2 v2

Det[B-λ IdentityMatrix[2]]==0

Solve[{7-10 λ+(λ^2)==0},{λ}]

Karakteristični vektori se mogu dobiti na podjednako prost način

{v1,v2}=Eigenvectors[B]

Nastavak

Nije teško proveriti da su ovi vektori karakteristični vektori. Naime

B.v1==λ1 v1

B.v2==λ2 v2

Geometrijski, razmotrimo veki proizvoljan vektor v koji nije karakteristični. Npr

v={-1,1};

vektorGraf[{Red,Blue},{v2,B.v2},100]

vektorGraf[{Red,Blue},{v1,B.v1},100]

vektorGraf[{Red,Blue},{v,B.v},100]

Predstavimo sada crvenom bojom taj vektor, a plavom vektor dobijem množenjem Dot[B,v]. Pošto v nije karakterističan vektor, onda tako dobijeni vektor neće biti kolinearan sa v. Sa druge strane, u slučaju vektora v1 i v2 dobićemo kolinearan vektor kada ga pomnožimo sa B:

vektorGraf[{Red,Blue},{v,B.v},100]

vektorGraf[{Red,Blue},{v1,B.v1},100]

vektorGraf[{Red,Blue},{v2,B.v2},200]

Veza između simetričnih matrica i kvadratnih formi

Svaka simetrična matrica odgovara nekoj kvadratnoj formi koja se dobija kada se matrica pomnoži skalarno sa obe strane sa istim vektorom x odgovarajućih dimenzija. U slučaju dijagonalne matrice, odgovorajuća kvadratna forma je uvek dijagonalna

A

{x1,x2,x3}.A.{x1,x2,x3}

a na dijagonali stoje karakteristične vrednosti kvadratne forme. Sa druge strane, ukoliko je matrica nedijagonalna, odgovarajuća kvadratna forma takođe, u opštem slučaju, nije dijagonalna:

{x1,x2}.B.{x1,x2}//Expand

{x1,x2}.B.{x1,x2}

B

{x1,x2}.B.{x1,x2}//Expand

ortog\[Transpose].ortog//Simplify

ortog=Normalize[#]&/@{v1,v2}

Za matrice A ili B kažemo da su matrice odgovarajuće kvadratne forme. Putem transformacije vektora promenljivih preko određene ortogonalne matrice (to jest putem rotacije) svaku kvadratnu formu možemo da predstavimo u dijagonalnom obliku. Та matrica se dobija iz normiranih karakterističnih vektora:

ortog=Normalize[#]&/@{v1,v2}

Dijagonalizacija nedijagonalne kvadratne forme

Prvo, proverimo da je ortog zaista ortogonalna matrica, odnosno matrica rotacije. To potvrđujemo time što je transponovana matrica od ortog isto što i njena invezna matrica. Stoga je proizvod matrica:

ortog\[Transpose] .ortog

Simplify[%]

Ovako izgleda veza između starih koordinata {x1, x2} i novih, a naime,  {x1novo, x2novo}

{x1,x2}=ortog\[Transpose].{x1novo,x2novo}

Pošto su transformacije ortogonalne, vrednost kvadratne forme ostaje nepromenjena. U novim koordinatama dobijamo da ona poprima sledeći oblik:

{x1,x2}.B.{x1,x2}

{x1,x2}.B.{x1,x2}//Simplify

Dakle, u novim koordinatama kvadratna forma je dijagonalna, a na dijagonali su joj upravo karakterstične vrednosti matrice B.

To je tako uvek. Naime, uvek postoji sistem koordinata u kojoj se kvadratna forma može predstaviti u dijagonalnom obliku i tom slučaju na dijagonali su joj uvek karakteristične vrednosti. Analogan iskaz je za simetrične matrice. Naime, postoji ortoganalna transformacija koja ih dijagonalizuje

ortog.B.ortog\[Transpose]//Simplify

Primer u tri dimenzije

Generišimo slučajnu simetričnu matricu dimenzija 3x3 sa vrednostima između -5 i 5

mat=slucajnaSimetricnaMatrica[{-5,5},3];MatrixForm[mat]

Ova matrica nije dijagonalna. Nađimo karakteristične vrednosti. Pošto nemamo egzaktno rešenje, nalazimo numeričko:

Eigenvalues[mat]//N

Pre normalizacije, karakteristični vektori su

{v1,v2,v3}=Eigenvectors[mat]//N

Sada ortogonamizujemo:

ortog=Normalize[#]&/@{v1,v2,v3}

Najzad, u novim koordinatama matrica dobija oblik (tu smo ignorisali vrlo male brojeve jer je u pitanju greška zaokruživanja).

ortog.mat.ortog\[Transpose]

Eigenvalues[mat]//N

Chop[ortog.mat.ortog\[Transpose]]//MatrixForm

Dakle, transformisana matrica je dijagonalna, i njeni elementi na dijagonali su jednaki karakterističnim vrednostima.

Znakovna definisanost simetrične matrice (i odgovarajuće kvadratne forme)

Ukoliko su sve karakteristične vrendosti pozitivne, matrica (i odgovarajuća kvadratna forma) je pozitivno definitna. Ukoliko su sve negativne, matrica (i kv. forma) je negativno-definitna. Ako su karakteristične vrednosti sve nenegativne forma je pozitivno semidefinitna. Ukoliko su znaci karakterističnih vrednosti manji ili jednaki nuli, onda je to negativno semidefinitna matrica. Najzad, ako su neke karakteristične vrednosti pozitivne a druge negative, onda je matrica (i odgovarajuća kv. forma) znakovno nedefinisana. U poslednjem slučaju kv. forma može imati kako pozitivne tako i negativne vrednosti.

Da bismo odredili znakovnu definisanost slučajne simetrične matrice dimenzija 5x5

mat=slucajnaSimetricnaMatrica[{-5,5},5];MatrixForm[mat]

dovoljno je, stoga, da proverimo znake karakterističnih vrednosit

Eigenvalues[mat]//N

Ova matrica je znakovno nedefinisana. Stoga je i odgovarajuća kvadratna forma znakovno nedefinisana. To možemo proveriti i na osnovu odgovora na sledeća pitanja:

#[mat]&/@{PositiveDefiniteMatrixQ,PositiveSemidefiniteMatrixQ,NegativeDefiniteMatrixQ,NegativeSemidefiniteMatrixQ}

Primeri pozitivno i negativno definitne matrice i odgovarajuće kvadratne forme

Matrica mat1 je pozitivno definitna

mat1={{2,1},{1,7}};

Eigenvalues[mat1]

Vidimo da važi

#[mat1]&/@{PositiveDefiniteMatrixQ,PositiveSemidefiniteMatrixQ,NegativeDefiniteMatrixQ,NegativeSemidefiniteMatrixQ}

Proverimo da je vrednost kvadratne forme pozitivna kakve god da su koordinate (dokle god nisu obe jednake nuli). Ovde generišemo 100 slučajnih vektora dimenzije 2 i za njih izračunavamo odgovarajuće vrednosti kvadratne forme. Vidimo da su sve vrednosti kvadratne forme pozitivne.

Table[Module[{x=RandomReal[{-10,10},2]},x.mat1.x],100]

Sa druge strane, mat2 je negativno definitna:

mat2={{-2,1},{1,-7}};

Eigenvalues[mat2]

#[mat2]&/@{PositiveDefiniteMatrixQ,PositiveSemidefiniteMatrixQ,NegativeDefiniteMatrixQ,NegativeSemidefiniteMatrixQ}

Table[Module[{x=RandomReal[{-10,10},2]},x.mat2.x],100]

Konveksnost i konkavnost funkcije jedne promenljive

Jakobijan ispituje linearnu nezavisnost grupe funkcija koje imaju iste promenljive

Clear[f,g]

D[{f[x,y],g[x,y]},{{x,y},1}]//MatrixForm

D[{2 x+3 y-7,x+y-1},{{x,y},1}]//MatrixForm

Znakovna definisanost matrice nam treba, između ostalog, zbog određivanja konveksnosti odnosno konkavnosti fukcija!  Funkcija jedne promenljive je strogo konveksna ukoliko je njen drugi izvod svuda pozitivan. Na primer:

Clear[x,y,z]

D[(x^2),{x,2}]

Plot[(x^2),{x,-4,4}]

Kod konveksnih funkcija kad spojimo bilo koje dve tačke sa duži, duž će uvek biti iznad krive. Konveksna funkcija ima globalni minimum.

Funkcija jedne promeljive je strogo konkavna ukoliko je njen drugi izvod strogo negativan. One imaju globalni maksimum.

D[(Sqrt[x]),{x,2}]

Plot[(Sqrt[x]),{x,1,4}]

Najzad, postoje i funkcije koje nemaju glob. ekstremum. One nisu onkavne ili konveksne za sve vrednosti argumenta.

D[(x^3),{x,2}]

Plot[(x^3),{x,-3,3}]

Konveknost i konkavnost funkcije više promenljivih

U slučaju funkcije više promenljivih, konveksnost i konkavnost ispitujemo pomoću matrice drugih izvoda (to se zove Hesijan):

D[f,{{x,y},2}]

f=(x^2)+(y^2);v={x,y};D[f,{v,2}]

Vidimo da je u slučaju (x^2) + (y^(2  ))matrica drugih izvoda dijagonalna matrica sa oba pozitivna elementa na dijagonali. Stoga je:

Eigenvalues[D[f,{v,2}] ]

Ova funkcija je globalno (strogo) konveksna. Grafički

Plot3D[(x^2)+(y^2),{x,-3,3},{y,-3,3}]

Razmotrimo sada funkciju (Sqrt[x])+2 (Sqrt[y])

D[(Sqrt[x])+2(Sqrt[y]),{v,2}]

Ovoga puta funkcija je strogo konkavna (obe karakteristične vrednosti su negativne)

Plot3D[(Sqrt[x])+2(Sqrt[y]),{x,0.5,5},{y,0.5,6}]

Razmotrimo kvadratnu formu

D[x y,{{x,y},2}]

Plot3D[y x,{x,-3,3},{y,-3,3}]

Plot3D[(x^2)-(y^2),{x,-3,3},{y,-3,3}]

Clear[a,b]

f=a (x^2)+b (y^2); v={x,y};D[f,{v,2}] //MatrixForm

Ako su a, b >0, funkcija (kvadratna forma) je globalno konveksna. Ako su oba znaka negativna, onda je globalno konkavna, a ako su znakovi različiti, onda nije ni konkavna ni konvesna.  Itd.