1. laborgyakorlat
Numerikus számítások fizikusoknak
Contents
clear all, close all
A "számológép üzemmód" használata
A készenléti jel után írjuk a parancsokat, majd enter-t nyomunk. Több parancsot vesszővel választunk el.
2+4*5^2
ans = 102
log(3), sin(1), tan(0)
ans =
1.098612288668110
ans =
0.841470984807897
ans =
0
A Help-ben megtaláljuk az egyes parancsok használatának módját. Hívása a "help parancsnév" vagy a "doc parancsnév" módon történik, ill. elérhető a menün keresztül is. A doc parancs részletesebb dokumentációt ad.
help sin
SIN Sine of argument in radians.
SIN(X) is the sine of the elements of X.
See also ASIN, SIND.
Overloaded methods:
sym/sin
distributed/sin
doc sin
A megjelenített számformátum beállítása a format paranccsal történik. A short formátum az alapértelmezés.
format long, pi format long e, pi format rat, pi format short, pi
ans =
3.141592653589793
ans =
3.141592653589793e+000
ans =
355/113
ans =
3.1416
Értékadás a = jellel történik. Változó számmal nem kezdődhet, és számot, kis- és nagy betűt (ezeket megkülönböztetjük), ill. _ jelet tartalmazhat csak.
t=12, v=20, s=v*t
t =
12
v =
20
s =
240
A pontosvesszővel lezárt parancs eredménye nem jelenik meg a kijelzőn.
t=12; v=20; s=v*t
s = 240
Megjegyzések a % jel után, vagy a külön sorba írt %{ %} jelek közé írhatók.
g=10 % A gravitációs gyorsulás megadása. %{ Most számoljuk ki g négyzetét! %} g^2
g =
10
ans =
100
A parancsablak törlése (a változókat nem törli).
clc % clear command window
A korábban kiadott parancsok elérhetők a felfelé nyíllal. Egy parancs kezdőkaraktereinek beírása majd a felfelé nyíl megnyomása az adott kezdőkarakterrel rendelkező korábbi parancsokat sorolja fel. A definiált változók a Workspace ablakban láthatók, onnét áthúzhatók a parancsablakba, vagy szerkeszthetők is. A parancssorból a whos parancsot használhatjuk.
whos
Name Size Bytes Class Attributes ans 1x1 8 double g 1x1 8 double s 1x1 8 double t 1x1 8 double v 1x1 8 double
Változó törlése a clear paranccsal.
clear v % v változó törlése whos % Hogy lássuk, hogy már hiányzik a v. clear all % minden változó törlése
Name Size Bytes Class Attributes ans 1x1 8 double g 1x1 8 double s 1x1 8 double t 1x1 8 double
A Matlabban átdefiniálhatjuk a beépített függvényeket is (!). A which paranccsal ellenőrizhetjük, hogy egy függvény beépített függvény-e.
which sin sin=4 % Ezek után a sin(0) parancs már hibát adna. which sin clear sin % A sin változót törölve visszaáll a beépített függvénydefiníció.
built-in (C:\Program Files\MATLAB\R2008a\toolbox\matlab\elfun\@double\sin) % double method
sin =
4
sin is a variable.
Mátrixok és vektorok megadása. ; sortörés, sorok elemei között space vagy vessző.
A=[1,2,3,4], B=[1;2;3;4], C=[1,2;3,4]
A =
1 2 3 4
B =
1
2
3
4
C =
1 2
3 4
Vektor megadása a : jelöléssel
x=1:4, y=1:2:10
x =
1 2 3 4
y =
1 3 5 7 9
Példa mátrixműveletekre. ' a transzponálás (konjugálással együtt).
3*(B*A)^2*x', C^3+C'
ans =
2700
5400
8100
10800
ans =
38 57
83 122
A Matlab a függvényeket elemenként alkalmazza a mátrixokra ill. vektorokra. Ahol ez ellentétes a szokásos művelettel ott a . jelöléssel tudatjuk a Matlabbal, hogy elemenkénti műveletvégzést szeretnénk.
sin(x) x.^2 1./x
ans =
0.8415 0.9093 0.1411 -0.7568
ans =
1 4 9 16
ans =
1.0000 0.5000 0.3333 0.2500
Példa egy táblázatra, amely 1-től 5-ig tartalmazza az egész számokat és ezek négyzeteit.
x=1:5; tablazat=[x;x.^2]'
tablazat =
1 1
2 4
3 9
4 16
5 25
A változók mentése és beolvasása a save-load parancspárral történik (*.mat fájlba ment).
save mentett_valtozok x tablazat % Változónév nélkül mindent ment. clear all whos % Nem mutat semmit, mert minden változót töröltünk. load mentett_valtozok whos % Csak a betöltött két változót mutatja.
Name Size Bytes Class Attributes tablazat 5x2 80 double x 1x5 40 double
Külső fájl betöltése pl. az "xlsread fájlnév" paranccsal xls fájl vagy a "beolvasás varázslóval (input wizard)".
xlsread negyzetszamok; % A negyzetszamok.xls-ben 1-6-ig vannak a számok és négyzeteik. tablazat=ans
tablazat =
1 1
2 4
3 9
4 16
5 25
6 36
Lebegőpontos számábrázolás
A Matlab dupla pontosságú (64 bit = 8 byte) lebegőpontos számrendszert használ a számok ábrázolására.
Tárhelyinformáció
whos % Mekkora tárhelyet foglalnak le az eddigi változók?
Name Size Bytes Class Attributes ans 6x2 96 double tablazat 6x2 96 double x 1x5 40 double
A dupla pontosságú lebegőpontos számrendszer nevezetes számai:
eps % Az 1 és a nála nagyobb következő ábrázolható szám távolsága realmin % Normálalakos legkisebb pozitív ábrázolható szám. realmax % Legnagyobb ábrázolható szám. eps/2 % A számábrázolás relatív hibája.
ans = 2.2204e-016 ans = 2.2251e-308 ans = 1.7977e+308 ans = 1.1102e-016
Néhány számolás eredménye, ami mutatja a lebegőpontos számrendszer tulajdonságait.
tan(pi/2) % pi/2 tangense 2^-1074/2 2^-1074*1.2 10^310 x=10^-15; ((1+x)-1)/x x=-25; n=0:200; format long, exp(x), sum((x.^n)./factorial(n)), format short
ans =
1.6331e+016
ans =
0
ans =
4.9407e-324
ans =
Inf
ans =
1.1102
ans =
1.388794386496402e-011
ans =
8.086559047973670e-007
Általában kerülendő két közeli szám kivonása és nagy szám osztása kicsivel (abszolút értékben). Számok összeadását célszerű a kicsikkel kezdeni, és ezekhez adni a nagyobbakat.