Atomerőművek üzemtanának fizikai alapjai. MATLAB használata

Hasonló dokumentumok
A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei. Atomerőművek üzemtana

A számok kiíratásának formátuma

A MATLAB alapjai. Kezdő lépések. Változók. Aktuális mappa Parancs ablak. Előzmények. Részei

MATLAB alapismeretek I.

Matlab alapok. Baran Ágnes. Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15

Webprogramozás szakkör

Baran Ágnes. Gyakorlat Függvények, Matlab alapok

Függvények ábrázolása

Matlab alapok. Vektorok. Baran Ágnes

MATLAB alapismeretek II.

BASH script programozás II. Vezérlési szerkezetek

Algoritmusok Tervezése. 1. Előadás MATLAB 1. Dr. Bécsi Tamás

BASH SCRIPT SHELL JEGYZETEK

1. Alapok. #!/bin/bash

M-Fájlok létrehozása MATLAB-ban

Mérnöki programozás 8. Szerkesztette: dr. Vass Péter Tamás

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Programozási segédlet

Gyakorló feladatok az 1. nagy zárthelyire

Szkriptnyelvek. 1. UNIX shell

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Memento kurzus: Matlab bevezető

Matlab alapok. Baran Ágnes

AWK programozás, minták, vezérlési szerkezetek

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

MATLAB/OCTAVE/ ALAPOZÓ 1

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

Baran Ágnes. Gyakorlat Halmazok, függvények, Matlab alapok. Baran Ágnes Matematika Mérnököknek Gyakorlat 1 / 34

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

II. Mérés SZÉCHENYI ISTVÁN EGYETEM GYŐR TÁVKÖZLÉSI TANSZÉK

1. Jelölje meg az összes igaz állítást a következők közül!

Bevezetés a programozásba I.

S z á m í t ó g é p e s a l a p i s m e r e t e k

Feladat Nézzük meg a súgóban (help és doc) a sin parancs használatáról olvasható információt! Próbáljuk ki a kirajzoltató utasítást.

MATLAB OKTATÁS 1. ELŐADÁS ALAPOK. Dr. Bécsi Tamás Hegedüs Ferenc

Vezérlési szerkezetek

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Matematikai programok

% % MATLAB alapozó % % , Földváry Lóránt % Laky Piroska (kiegészítés)

Delphi programozás I.

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Occam 1. Készítette: Szabó Éva

Objektumorientált Programozás III.

Gyakorló feladatok Gyakorló feladatok

Python bevezető foglalkozás Python bevezető foglalkozás

Matematikai programok

Bevezetés a programozásba

MATLAB alapismeretek III.

A C# programozási nyelv alapjai

Vektorok. Octave: alapok. A fizika numerikus módszerei I. mf1n1a06- mf1n2a06 Csabai István

Internet programozása. 3. előadás

AWK programozás Bevezetés

AWK programozás, minták, vezérlési szerkezetek

Felvételi tematika INFORMATIKA

1. Olvassuk be két pont koordinátáit: (x1, y1) és (x2, y2). Határozzuk meg a két pont távolságát és nyomtassuk ki.

Bevezetés a MATLAB programba

Bevezetés a programozásba. 5. Előadás: Tömbök

MATLAB. 9. gyakorlat. Cellatömbök, struktúrák, fájlműveletek

12. előadás. Egyenletrendszerek, mátrixok. Dr. Szörényi Miklós, Dr. Kallós Gábor

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Keresési algoritmusok, optimalizáció

Annak a function-nak a neve, amiben letároltuk az egyenletünket.

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

Bevezetés a programozásba I.

Szoftvertervezés és -fejlesztés I.

MATLAB. 3. gyakorlat. Mátrixműveletek, címzések

Operációs rendszerek. 4. gyakorlat. BASH bevezetés, script írása, futtatása UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Vezérlési szerkezetek. Szelekció Ciklusok

A MATLAB PROGRAMOZÁSA

MATLAB/OCTAVE/ ALAPOZÓ 1

6. fejezet: Ciklusok

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

SZÁMÍTÁSOK A TÁBLÁZATBAN

A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Webprogramozás szakkör

A programozás alapjai 1 Rekurzió

Konzolalkalmazások gyors tesztelése

I. VEKTOROK, MÁTRIXOK

Ismerkedés a Matlabbal

1. feladat Készítse el szövegszerkesztővel, majd mentse osztály.txt néven a következő tartalmú szöveges fájlt:

I. Specifikáció készítés. II. Algoritmus készítés

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás

// keressük meg a legnagyobb faktoriális értéket, ami kisebb, // mint százmillió

Informatika terméktervezőknek

Alapok: Használd számológép helyett

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

Egyszerű példaprogramok gyakorláshoz

Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás 3. előadás

Operációs rendszerek gyak.

Műveletek mátrixokkal. Kalkulus. 2018/2019 ősz

6. előadás. Matlab 1. (Ismerkedés, környezet, adattípusok) Dr. Szörényi Miklós, Dr. Kallós Gábor. Széchenyi István Egyetem

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás

PYTHON. Avagy hosszú az út a BioPythonig

Egyszerű programozási tételek

Átírás:

Matlab képernyője Az egyes részablakok áthelyezhetőek. Fő tudnivalók róluk, fontossági sorrendben: Command window: ide írhatunk parancsokat, ide is írja ki az eredményt. Olyan, mint bárhol máshol egy command window. Lehet ide egész programokat begépelni (nem éri meg ), vagy számológépként használni. Innen indítjuk el a megírt programjainkat. Hibakeresésnél is nagyon hasznos tud lenni. Workspace: ha vannak változóink, akkor itt kilistázza őket és a legfontosabb jellemzőiket (állítható, hogy mit szeretnénk látni, pl típusa, értéke, stb.). Kettőt rákattintva a változóra megnyílik egy ablak ami a változóban lévő adatokat tartalmazza. Editor: ha már tudunk írni programot, akkor ide írjuk be és mentjük el. Futtatni vagy gyorsgombbal (Editor -> Run) vagy a command window-ból lehet (vagy egy másik programból ). Current folder: amikor futtatunk egy programot fontos, hogy abban a mappában legyünk ahol a futtatni kívánt program is van. Olyan, mint egy windows intéző. Command History: a command windowba előzőleg beírt parancsokat jegyzi meg. A matlab bezárása és újranyitása után is megőrzi ezeket. Hasznos, mert lehet innen puskázni. Details (még nem fontos): egy programra rákattintva a Current folder ablakban kiírja ide annak részeit (később: milyen függvényeket tartalmaz, és azokat hogyan kell meghívni) Legeslegfontosabb: jobb felső sarok, search documentation vagy Help. A MATLABnak nagyon jó help-je van!!! Online Help is van, szintén nagyon hasznos. 1

Programozás alapjai A programozás egy eszköz, amivel problémákat tudunk megoldani. Ehhez a problémát értelmezni kell, és úgy megfogalmazni, hogy az a programozás eszközével megoldható legyen. Ehhez tudni kell: - Mi legyen a program bemenete, kimenete és a köztük lévő kapcsolat specifikáció: A leendő program által elvégzendő feladat (mit csináljon a program?) - Megoldás leírása lépésről-lépésre algoritmus: A program által végrehajtandó lépések leírása (hogyan csinálja a program?) Példa 1.1: Számítsuk ki n faktoriálist. Specifikáció: program bemenete: n program kimenete: n! köztük lévő kapcsolat: kimenet = n*(n-1)*.*1 Algoritmus:?? Mit is csináljon a program? 4 Faktoriális 24 1. Kérjen be egy számot, és jegyezze meg ezt a számot n-nek. 2. Jegyezzen meg egy eredményt, ez legyen 1. 3. Egészen addig szorozza be az eredményt n-el, és közben n értékét írja felül n-1-el, amíg n értéke 1 nem lesz. 4. Ekkor az eredmény értéke a tényleges eredmény lesz. Ezt írja ki. 3. Mi ez az addig...amíg? Mit csinál itt a program? 3.0 Ellenőrzi az amíg feltétel teljesülését: n értéke 1? Ha igen, akkor lép a 4. Pontra. Ha nem, akkor végrehajtja a műveletet: 3.1 eredmény értéke legyen eredmény szorozva n-el 3.2 n értéke legyen 1-el kevesebb 3.3 visszamegy 3.0 pontra A programozás lényege a megoldandó problémához megfogalmazni a specifikációt és kitalálni az algoritmust amivel meg lehet oldani. Az algoritmusírásra nincsenek általános szabályok. Egy-két alapvető problémára létezik ismert algoritmus, de alapvetően ezt kell kitalálni az adott feladathoz. A program írása az algoritmus kitalálása után már csak az algoritmus gépi nyelvre fordítása. Új fogalmak: Változók: megjegyzett dolgok Műveletek: szorzás, kivonás Sorrend: a lépések egymás utánisága, beleértve az ellenőrzést, visszamenést is. Ez egyértelműen meghatározza a programnak, hogy mikor mit kell csinálnia. Hogyan írjuk meg a példát matlab kódban? A Current folder -ben hozzunk létre egy könyvtárat és a könyvtárban egy script -et. Ennek.m kiterjesztése lesz, és ha megnyitjátok, az editorban megnyílik egy üres lap (ha eddig nem volt nyitva az editor, akkor megnyílik automatikusan). Ide lehet beírni a programot. 2

1. Kérjen be a felhasználótól egy számot, és jegyezze meg ezt a számot n-nek. A programunknak van egy bemenete (n) és lesz a végén egy kimenete (eredmeny). Ezt a programnak tudnia kell a legelején: function eredmeny = faktorialis(n) function: így adunk meg egy olyan programot, amit elnevezünk, és később futtatunk adott bemenetre. Létezik a matlabban function és script: A scriptnek nincs bemenete és nincs kimenete, egyszerűen végrehajtja a leírt műveleteket. A function-nak van bemenete és/vagy kimenete. Akkor írunk ilyet, ha egy másik programból meg szeretnénk hívni, például ha egy műveletet sokszor kell elvégezni egy programban, akkor beírjuk egy függvényben és azt hívjuk meg többször. Így áttekinthető lesz a programunk. Pl a sin(x) is egy (beépített) function eredmeny: a program kimenete (lehet több is, nem valószínű hogy most találkozni fogtok ilyennel) faktorialis: a program neve. Ezen a néven futtatjuk majd. Célszerű (eleinte kötelező!) ugyanúgy hívni a programot, mint az.m filet, amiben elmentjük. (n): a program bemenete. Lehet neki több bemenete is, ez esetben a zárójelben vesszővel kell elválasztani ezeket, pl (n, róka, béka, kiskutya). A kimenetnek olyan nevének kell lennie, amilyen változónk ténylegesen lesz is a programban, egyéb esetben nem tudja a program, hogy mit adjon vissza. A bemeneten megadott változónevekbe írja bele a bemenetet, olyan sorrendben ahogy szerepel. A programunk innentől azzal a névvel fogja használni a megadott változót. (lokális változó) Most az egyszerűség kedvéért feltételezzük, hogy a felhasználó pozitív egész számot írt be. Ha nem, akkor a programunk hibakezelés nélkül el fog szállni és végtelenségig futni. (Fontos: ha egy programunk elszáll, megállítani ctrl+c billentyűkombinációval lehet. Van az az eset, amikor az egész matlabot újra kell indítani ) 2. Jegyezzen meg egy eredményt, ez legyen 1. eredmeny = 1; Itt az eredmeny változó értékébe beírja az 1-et. Mindig először a jobb oldalt értékeli ki és a kapott értéket beírja a bal oldali változóba. Figyelem! Ha van már eredmeny nevű változónk, akkor lelkiismeret-furdalás nélkül törli ami addig benne volt, és beleírja az 1-et!! A pontosvessző pusztán azért kell, mert ha nem tesszük ki, akkor a művelet eredményét (ami jelenleg az, hogy eredmeny=1) kiírja a command window-ba. Semmi más hatása nincs. Próbáljátok ki! Programozás során célszerű nem kiíratni minden változót, mert lelassíthatja a programot. Viszont pl hibakeresésnél nagyon hasznos lehet. Változók: Olyan dolgok, amiben az adatokat tároljuk. 3

Eltérő típusa lehet: int (egész szám); double (valós szám); string (szöveg); logikai. A matlabban lehetnek speciálisan mátrixok, cellatömbök (olyan mátrix, aminek elemei nem csak számok, hanem bármilyen típusúak lehetnek még cellatömbök is ), anonymus függvények (egy tényleges matematikai függvény, pl parabola = @(x) 1*x.^2 + 2*x + 3;). Általában a változó típusát a változó használata előtt meg kell adni, viszont a matlab egy olyan környezet, ahol ezt nem kell (nem is lehet), sőt, ha egy változónak string értéke van, attól még int értéket is adhatok neki a következő sorban (ez esetben int típusú lesz). A meglévő változóink aktuális típusát a Workspace-ben láthatjuk. 3. Egészen addig szorozza be az eredményt n-el, és közben n értékét írja felül n-1-el, amíg n értéke 1 nem lesz. 3.0 Ellenőrzi az amíg feltétel teljesülését: n értéke 1? Ha igen, akkor lép a 4. Pontra. Ha nem, akkor végrehajtja a műveletet: while n~=1 A while egy ciklus. Mellette egy u.n. logikai változó van. Valójában egy művelet, aminek az eredménye egy logikai igaz vagy hamis. Ha igaz, akkor a következő sorra lép. Ha hamis, akkor az end utasítás után folytatja a programot. A feltételvizsgálatok műveleteinek listáját ld. az összefoglalásnál a táblázatban. Ez konkrétan azt jelenti, hogy nem egyenlő. 3.1 eredmény értéke legyen eredmény szorozva n-el eredmeny = eredmeny * n; Ilyet már láttunk: értékadás, ugyan olyan, mint a 2. lépésnél volt. Először kiszámolja eredmeny * n, majd beírja a kapott értéket az eredmeny változóba 3.2 n értéke legyen 1-el kevesebb n = n-1; Szintén egy értékadás. 3.3 visszamegy 3.0 pontra end A ciklus végéhez érve visszamegy az elejére (a while-hoz), és újra ellenőrzi az ottani feltételt. 4. Ekkor az eredmény értéke a tényleges eredmény lesz. Ezt írja ki. Maga a függvény (program) adja vissza meghívásakor. Ez azt jelenti, hogy ha a függvényt úgy hívjuk meg pl a parancssorból, hogy: a = faktorialis(4), akkor az a változó értéke a függvény által visszaadott érték lesz (azaz 4! = 24). Ha csak számológépet szeretnénk a matlabból, akkor azt írjuk be, hogy: faktorialis(4), ekkor az output ans = 24 lesz. Ez az ans egy változó, mert a levegőben nem lóghat az eredmény, de ezt a változót nem szokás használni változóként, mert bonyodalmakat okozhat. Tehát a programozásban egymás utáni műveleteket tudunk beírni, tudunk bele elágazásokat tenni (valamilyen feltételhez kötött művelet), és ciklusokat (ismétlődő művelet) tenni. Elágazások és ciklusok gyűjteménye a másik lapon, illetve röviden az összefoglalásban. Ciklusokról röviden: másik lap (Kódok.pdf)! Összegzés + amit itt még fontos megjegyezni: - Kommentelni fontos, úgy kell, hogy egy % jelet írunk a komment elé. - ;-t írva a sor végére nem írja ki a command windowba a sor eredményét. Egyébként kiírja. Ez lassítja a programot, szokjatok rá, hogy általában írunk ;-t. - Amit a matlab narancssárgával aláhúz, azt érdemes elolvasni, de nem feltétlenül hiba. (warning) 4

- Amit viszont pirossal húz alá, az szintaktikai hiba. (error) Amíg az ott van, a programot nem lehet futtatni. - Scriptnek hívják azt, aminek nincs bemenete-kimenete - Function-nak hívják azt, aminek van bemenete és/vagy kimenete - Nagyon sok beépített függvény van a matlabban, nagyon jó dokumentációval. - If használata: if feltétel1 Művelet ha feltétel1 igaz elseif feltétel2 Művelet ha feltétel1 hamis, de feltétel2 igaz else Művelet, ha feltétel1 és feltétel2 hamis end End után megy tovább egyenesen a programban. Tetszőleges számú elseif követheti egymást, vagy akár egy sem kell. - For használata: for ciklusváltozó = mettől:meddig Művelet end End-hez érve visszamegy újra a feltételhez, ciklusváltozó értékét növeli, amíg az a meddig-et el nem éri. - While használata while feltétel Művelet ha igaz end End-hez érve visszamegy újra a feltételhez - Logikai vizsgálatok: < kisebb > nagyobb == egyenlő (= már foglalt!) <= kisebb egyenlő >= nagyobb egyenlő ~ tagadás ~= nem egyenlő && ÉS VAGY - A feltétel nem csak egy egyszerű kifejezés lehet, mint pl a<=b, hanem pl egy összetettebb logikai művelet is: a<=b && d<a (a kisebb egyenlő b ÉS d kisebb a) - Vannak olyan műveletek, amiknek végtelen a végeredménye: 1/0 = inf - Vagy olyanok, amiknek nem szám: inf/inf = NaN - Adott változó törlése: clear változónév - Minden változó törlése: clear all - Command window tartalmának törlése: clc 5

Ezt úgy általánosságban minden programnyelv tudja, esetleg máshogy kell neki megmondani. Amiért a matlabot szeretjük, az azért van, mert könnyen tudunk vektorokkal és mátrixokkal számolni. (meg mert nagyon sok jól dokumentált beépített függvénye van, amit nem kell nekünk megírni) Vektorok/mátrixok Vektorok/mátrixok megadása: Sorvektor: sorvektor1 = [11 12 13]; Oszlopvektor: oszlopvektor1 = [21; 22; 23]; Mátrix: matrix1 = [1 2 3 4; 5 6 7 8; 9 10 11 12]; [] közé tesszük a tartalmat, és szóközt (vagy vesszőt) írunk a sor elemei közé, pontosvesszőt pedig a sorok közé. Műveletek: Transzponálás: oszlopvektor3 = sorvektor1'; matrix2 = matrix1'; Konstanssal szorzás: matrix3 = matrix1 * 2; Konstans hozzáadása minden elemhez: matrix4 = matrix1 + 3; Mátrixműveleteknél figyelni kell a szükséges (matekon is tanult) dimenzióegyezésre. A vektor egy olyan mátrix, aminek egyik dimenzióban 1 a mérete. Mátrixok összege: matrix5 = matrix3 + matrix1; Mátrixok szorzata: matrix6 = matrix1 * matrix2; Elemenkénti műveletek:.-ot kell tenni a műveleti jel elé, pl: Mátrixok elemenkénti szorzása: matrix8 = matrix3.*matrix1; Mátrix elemeinek négyzetre emelése: matrix9 = matrix1.^2; Fontos beépített függvények: Speciális mátrixok/vektorok létrehozása Sorvektor: x = linspace(min,max,elemek száma); egy számsor lesz a vektorban min értéktől max értékig, egyenletes lépésközzel. Az elemek száma az elemek száma lesz. Ez egyben a vektor hossza. Sorvektor máshogy: x = min:lépésköz:max; Ugyan azt adja, mint az előző, csak itt nem az elemek számát, hanem a lépésközt kell megadni. 0-kat tartalmazó adott méretű mátrix: y = zeros(2,3); 1-eseket tartalmazó adott méretű mátrix: z = ones(3,4); Mátrix mérete: [sorok, oszlopok] = size(matrix1); Mátrix minimum eleme: min(matrix1) Mátrix maximum eleme: max(matrix1) Mátrix elemeire való hivatkozás: matrix(hanyasdiksor, hanyadikoszlop) pl matrix(1,2) első sor 2. oszlop eleme Ha egy egész sort szeretnénk: sorvektor = matrix(1,:); Egész oszlop: oszlopvektor = matrix(:,1); Oszlop egy része: reszoszlopvektor = matrix(1:2,3); 6

! Összegzés + amit itt még fontos megjegyezni: - Mátrixot úgy adunk meg, hogy [] között felsoroljuk az elemeit Space vagy, megy a sor elmei közé ; megy a sorok közé - Mátrixot úgy is megadhatunk, hogy pl függvénnyel létrehozunk speciális mátrixot - Elemeire hivatkozni ()-el lehet az elem koordinátáival: matrix(hanyasdiksor, hanyadikoszlop) - Egész sor/oszlopra hivatkozni az oszlop/sor helyére írt :-al lehet. (Ennek egy részére: a : köré a kezdő és végértéket is beírhatjuk) - Sok hasznos beépített függvény van: size, min, max 7

Feladatok 1. Hozz létre egy 91 elemű vektort, amit for ciklussal tölts fel 1-10-ig egyenletesen növekvő számokkal (a vektor neve legyen x, és legyen sorvektor). Csináld meg a feladatot egy paranccsal is (linspace) 2. Számold ki egy y vektorba az x vektor elemeinek a négyzetét. a. Egy soros paranccsal b. Ciklussal Írd be a plot(x,y) parancsot. Nézd meg mi történik. 3. Hozz létre egy 10 sorból és 4 oszlopból álló mátrixot. Első két sora legyen: [1 2 3 4; 1 2 3 4]. A további sorai legyenek az előző két sor megfelelő oszlopában lévő két elem összege. Tipp: for vagy while ciklus ciklusváltozó=3-mal kezdve 4. Adott egy hat számot tartalmazó vektor. Írj programot, ami eldönti, hogy van e köztük páros szám. Ha nincs, akkor legyen a kimenete 0. Ha van, akkor a kimenete legyen az első páros szám sorszáma. 8