Next: Databehandling
Up: Basal brug af MATLAB
Previous: Tabeloperationer
  Contents
  Index
Subsections
Tidligere er det vist, hvorledes det er muligt at oprette vektorer.
MATLAB giver mulighed for nemt at oprette visse vektorer uden at taste hvert
element ind for sig.
Til dette anvendes kolonsymbolet i udtrykkene.
Udtryk af typen:
y = 1:7
giver vektoren
y =
1 2 3 4 5 6 7
Det vil sige, at der oprettes en rækkevektor, hvis elementer løber fra 1
til 7. Her er afstanden 1 mellem hvert af elementerne.
Andre intervallængder end enheden 1 kan anvendes, ligesom en negativ
ændring er mulig. Mellem to kolontegn angives intervallængde og hvis
denne ønskes negativ markeres dette med en minustegn.
En ny vektor løbene fra 3 til 1.75 med intervallængden 0.25 ønskes oprettet.
Derfor skrives der:
y = 3 : -0.25 : 1.75
og der gives svaret
y =
3.0000 2.7500 2.5000 2.2500 2.0000 1.7500
Der tilbydes rigtig mange forskellige slags hjælpfunktioner til
behandling af matricer. Her vil kun et udvalg blive præsenteret. Hvis A
er en matrix gives der følgende funktioner.
- poly(A) finder det karakteriske polynomium for matricen A.
Svaret gives som en vektor, hvis elementer er polynomiets
koefficienter, startende med højestegradsleddet.
- eig(A) finder egenværdierne til matricen A. Dette svarer
til at rødderne i det karakteriske polynimium beregnes. Svaret
præsenteres ligeledes som en vektor, hvis elementer er matricens
egenværdier. ønskes det ligeledes at bestemme matricens egenvektorer
skal der anvendes en udvidet notationsform: [V,D] = eig(A)
Her bliver D en diagonal matrix, der indeholder egenværdierne og V
bliver en matrix, hvis søjler er de tilhørende egenvektorer.
- det(A) beregner determinanten til matricen A.
- size(A) returnerer en vektor på to elementer, der udgør
række- og søjledimension for matrix A.
- length(A) giver længden af en vektor eller hvis A er en
matrix returnes den største værdi af række og søjledimensionerne.
(max(size(A))).
- inv(A) er den inverse matrix til matricen A, hvor A er
invertibel.
- cond(A) beregner konditionstallet for matrix A. Dette tal
er et udtryk for, hvor singulær det lineære system er.
- rcond(A) beregner den reciprokke værdi af konditionstallet
for A.
Som ved division af matricer er disse funktioner afhængige af om A er
singulær eller ej. Der kan derfor forekomme fejlmeddelelser
og vurderinger af matricens rank og konditionstal som kommentar til
resultatet, hvor rank er et mål for hvor tæt på singulær matricen
er. (Se MATLABs User's Guide for flere detaljer omkring MATLABs
rank-funktion).
En matrix A er givet ved A = [2 -3 -1;-1 1 0;-3 0 1]. Egenværdierne
bestemmes ved at skrive:
x = eig(A)
og der gives svaret
x =
4.0000
-1.0000
1.0000
Ligeledes er det muligt at bestemme egenvektorerne i kombination med en
diagonal matrice indeholdende egenværdierne.
[V,D] = eig(A)
Her er svaret de to matricer V og D:
V =
-0.6882 0.5345 0.0000
0.2294 0.2673 -0.3162
0.6882 0.8018 -0.9487
D =
4.0000 0 0
0 -1.0000 0
0 0 1.0000
De egenvektorer der angives er ikke nær så ''pæne'' som de der findes
ad analystisk vej. Dette skyldes at MATLAB angiver egenvektorerne normeret,
således at de alle har længden 1.
ADVARSEL: Brugeren må selv forholde sig til løsningen. Her
gives et eksempel der tilsyneladende går godt:
Matricen B angives som
B = [1 2 2;2 -1 2;2 -2 1], hvilket er en ikke-singulær matrix. Ved
kommandoen [V, D] = eig(B) gives følgende svar:
V =
0.8018 -0.7071 0.7071
0.5345 0.0000 0.0000
0.2673 0.7071 -0.7071
D =
3.0000 0 0
0 -1.0000 0
0 0 -1.0000
Men B er ikke diagonaliserbar, idet den geometriske multiplicitet er
forskellig fra den algebraiske multiplicitet. Alligevel indikerer
notationen i MATLAB at det kan lade sig gøre. Dette må brugeren selv
være opmærksom på. Det er
selvfølgelig et symptom at der er to ''ens'' søjler i V.
Det kan være ret nyttigt at kunne udvælge dele af
matricer, til speciel
behandling. MATLAB giver mulighed for at specificere elementer, søjler,
rækker og submatricer i matricer. Dette gælder også for vektorer, der blot
behandles som matricer.
Der vil her blive givet eksempler, på nogle af de forskellige måder at foretage
udvælgelser i en matrix på. Matricen A er givet som i forrige eksempel.
Skal der referers til matricens indre bliver det nu på formen A(række ,søjle)
Hvis nu element nummer 2 i søjle nummer 3 ønskes udvalgt skrives A(2,3).
Er der ønske om hele søjle 3 skrives i stedet A(:,3). Her
står kolontegnet således for alle rækkerne i søjle 3, altså hele søjlen.
Ønskes kun de to første elementer i søjle nummer 3 skrives A(1:2,3). Hvis der ønskes række
2 element nummer 2 og 3 skrives A(2,2:3). Ønskes
submatricen bestående af øverste højre hjørne af A skrives
X = A(1:2,2:3)
der giver svaret
X =
2 2
-1 2
Der gives flere funktioner til nemt at generere matricer. Vektorer kan også
oprettes ved følgende funktioner. Her præsenteres et udvalg:
hvor n og m betegner naturlige tal.
De to sidste funktioner rand og randn kan også benyttes som
talgenerator
for enkeltvis tal ved blot at skrive rand eller randn.
Her oprettes en matrix X, hvis elementer er tilfældigt genererede udfra
intervallet [0,1].
Der skrives
X = rand(3,4)
og der gives f.eks. svaret
X =
0.2190 0.6793 0.5194 0.0535
0.0470 0.9347 0.8310 0.5297
0.6789 0.3835 0.0346 0.6711
Next: Databehandling
Up: Basal brug af MATLAB
Previous: Tabeloperationer
  Contents
  Index
Bo Jakobsen
2000-08-15