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.