Programozás MATLAB-ban. Algoritmikus utasítások a Matlab Loop utasításban, míg példák a Matlabban

Részleg: Információs technológiák

PROGRAMOZÁS BEMATLAB


ÜzemeltetőkMATLAB

· Loop kijelentések

Ciklusszámára

Szintaxis

count=start:step:final

MATLAB parancsok

Leírás

számol - hurokváltozó,

start a kezdeti értéke,

végső a végső értéke,

lépés – az a lépés, amellyel a szám minden alkalommal növekszik, amikor belép a hurokba

a ciklus véget ér, amint a count értéke nagyobb lesz, mint a végleges.

Példa

Legyen szükséges x€ görbecsalád levezetése, amelyet a paramétertől függő függvény ad meg

y (x, a) \u003d e-ax sin x,

a paraméterértékeknél -0,1 és 0,1 között. Az alábbiakban egy görbecsalád kimenetére szolgáló fájlprogram listája található.

Programlista

x = ;

ha a = -0,1:0,02:0,1

y = exp(-a*x).*sin(x);

A program végrehajtása eredményeként megjelenik egy grafikus ablak, amely tartalmazza a szükséges görbecsaládot.

Ciklusmíg

Szintaxis

míg hurokfeltétel

MATLAB parancsok

Leírás

A ciklus addig fut, amíg a ciklus (igaz) feltétele igaz. A következő relációs műveletek engedélyezettek egy ciklus végrehajtásának feltételének beállítására:

A bonyolultabb feltételek logikai operátorok segítségével adhatók meg. A logikai operátorokat a következő táblázat tartalmazza


Példa

Fiókkezelők

Feltételes operátorha

Szintaxis

ha feltétel

MATLAB parancsok

Leírás

Ha a feltétel igaz, akkor az if és end közé helyezett MATLAB parancsok végrehajtásra kerülnek, ha pedig nem igaz, akkor az átmenet a vége után található parancsokra történik.

Példa

Feltételes operátorelseif

Szintaxis

ha feltétel1

elseif feltétel2

………………………

elseif feltétel

Leírás

Egyik vagy másik feltétel teljesülésétől függően a program megfelelő ága működik, ha minden feltétel nem megfelelő, akkor a többi után elhelyezett parancsok végrehajtásra kerülnek.

Példa

Operátorkapcsoló

Szintaxis

kapcsoló változó

esetérték1

esetérték2

……………………

case valuen


Minden ágat egy case utasítás definiál, az arra való áttérés akkor történik meg, amikor a switch utasítás változó az eset után megadott értéket, vagy az esetlistából valamelyik értéket veszi fel. Bármelyik elágazás végrehajtása után a kapcsoló kilép, míg a többi esetben megadott értékek már nem kerülnek ellenőrzésre. Ha nincs megfelelő érték a változóhoz, akkor a program másnak megfelelő ága fut le.

Példa

A hurok megszakad. Kivételes helyzetek.

Operátorszünet

Szintaxis

A break utasítás a ciklikus számítások rendszerezésére szolgál: for...end, while...end. Amikor az állapot

ha feltétel

a break utasítás befejezi a ciklust (for vagy while), és a végét követő sorokon található utasítások végrehajtásra kerülnek. Beágyazott hurkok esetén a break kilép a belső ciklusból.

Kivételkezelés, Kezelőpróbáld kifogás

Szintaxis

nyilatkozatok, amelyek végrehajtása

hibát eredményezhet

végrehajtandó nyilatkozatok

amikor hiba lép fel egy blokkban

a próbálkozás és a fogás között

Leírás

A try...catch konstrukció lehetővé teszi a kivételes helyzetek megkerülését (olyan hibák, amelyek a program leállásához vezetnek, például egy nem létező fájl elérése), és ha előfordulnak, megtesz valamit.

Példa

Szerviz funkciók

diszp megjeleníti egy változó szövegét vagy értékét a parancsablakban

bemenet- bevitelt kér a billentyűzetről. Alkalmazások parancssori felülettel történő létrehozásakor használatos.

eval végrehajtja egy karakterlánc vagy karakterlánc-változó tartalmát, például a MATLAB parancsokat

egyértelmű- Eltávolítja a munkakörnyezeti változókat.

Val vellc- törli a parancsablakot

Több részletes információk Ezekről és más funkciókról tájékozódhat, ha végrehajtja parancs sor

Segítségfüggvény_neve


Laboratóriumi munkák elvégzése

Egy adott feladat opció számát a tanár határozza meg.

1. számú feladat

Ez a feladat magában foglalja egy n fokú algebrai interpolációs polinom megtalálását bizonyos adathalmazokhoz: P n(x) .

A munka célja:

Programot kell írni egy algebrai interpolációs polinom együtthatóinak kiszámításához P n(x)= a 0 + a 1 x+ … + a n x n.

Módszertani utasítások:

0 1 2 3

xén

1,2 1,4 1,6 1,8
8,3893 8,6251 8,9286 8,9703

Esély a 0 , a 1 , …, a n egyenletrendszer megoldásából határozzuk meg:

Itt naz interpolációs polinom sorrendje,

n+1 a megadott pontpárok száma ( x, y),

a 0 , a 1 ,… a n a polinom kívánt együtthatói P n(x)= a 0 + a 1 x+ … + a n x n).

Programkövetelmények

Állítsa be a vonal határait , amelyre az interpolációs polinom épül P(x)

· Kérdezzen n az interpolációs szegmensek száma (vagy ennek megfelelően a polinom foka)

Jegyzet: x0, xn, n billentyűzetről lépett be.

· A kezdeti adatok beszerzése (x, y)(pontpárok száma (x i, y i), amelyre az interpolációs polinom épül P(x)n1=n+1) biztosítani:

ü Adja meg a véletlenszerűen elhelyezett csomópontokat x i, i=0, n a billentyűzetről

ü Csomók számítása x i , i=0, n, az érvelés egységes elrendezésének megfelelő x a szegmensen

ü Bekezdésekben. 1,2 értékek y i, i=0, n vagy a billentyűzetről beírva (ha az eredeti függvény ismeretlen), vagy egy adott függvényből számolva f(x). A függvényt definiáló kifejezés a billentyűzetről kerül beírásra, és követnie kell a kifejezések MATLAB-ban történő írásának szabályait

ü Adatbevitel ( x i, y i, i=0, n) fájlból

Egyenletrendszer megoldása a P(x) polinom együtthatóinak meghatározására

Az eredeti táblázatos függvény és a P(x) polinom grafikonjainak felépítése

· Ha a kezdeti adatokat f(x) függvényként adjuk meg, ábrázoljuk az /f(x) – P(x)/ interpolációs hibát. Számítsa ki az interpolációs hiba maximális modulo értékét egy adott intervallumon.


2. számú feladat

Spline interpoláció

A munka célja:

Létre kell hozni egy programot az együtthatók kiszámítására és az S(x) spline függvény felépítésére, S(x) 3. rendű polinomokból "ragasztott" én(x), amelyek speciális jelöléssel rendelkeznek:

S függvény én(x) a szegmensen meghatározott

Programkövetelmények

A munka elvégzésekor a következőket kell tennie:

Állítsa be annak a szakasznak a határait, amelyre az S(x) spline függvény épül

· Adja meg n – azoknak az interpolációs szegmenseknek a száma, amelyek mindegyikére a Si(x) köbös polinom épül.

· Megjegyzés: x0, xn, n a billentyűzetről írható be.

Szervezzük meg a kezdeti adatok (x, y) bevitelét (a pontpárok száma (xi, yi), amelyre az S(x), n1=n+1 spline függvény épül), feltéve:

ü Önkényesen elhelyezkedő xi, i=0, n csomópontok bevitele a billentyűzetről

ü xi, i=0, n csomópontok számítása, amelyek megfelelnek az x argumentum egyenletes elrendezésének a szegmensen

ü Bekezdésekben. 1,2 az yi, i=0, n értékeket vagy a billentyűzetről írjuk be (ha az eredeti függvény ismeretlen), vagy az adott f(x) függvényből számítjuk ki. A függvényt definiáló kifejezés a billentyűzetről kerül beírásra, és követnie kell a kifejezések MATLAB-ban történő írásának szabályait

ü Adatbevitel (xi, yi, i=0, n) fájlból

ü S1""(x0)=0, S3""(x3)=0

ü S1"(x0)=f "(x0), S3"(x3)=f "(x3)

ü S1""(x0)=f "(x0), S3""(x0)=f "(x3)

A természetes köbös spline együtthatóinak meghatározásához (1. peremfeltétel) a következő egyenletrendszert kell megoldani:

Együtthatók σ 0 =0, σ n =0

· Az eredeti függvény és a spline függvények ábrázolása mindhárom peremfeltételtípusra.

· Szerkessze meg az f(x) – S(x) spline interpolációs hibafüggvények gráfjait mindhárom peremfeltételtípusra.

Jegyzet:

A MATLAB csomagban az indexek az egydimenziós ill kétdimenziós tömbök 1-től kezdd, ne 0-tól. Ezt vedd figyelembe a programod írásakor.


3. számú feladat

Függvény közelítése a legkisebb négyzetek módszerével (LSM).

Ez a feladat azt jelenti, hogy valamilyen adathalmazra egy közelítő függvényt (m-fokú polinomot) kell keresni, amelyet a legkisebb négyzetek módszerével (LSM) állítottunk össze.

A munka célja:

A φ polinom együtthatóinak megkeresésére programot kell írni (x)= a 0 + a 1 * x+… a n * x m a legkisebb négyzetek módszerével.

Legyen például a következő adatkészletünk:

xén

1,2 1,4 1,6 1,8 2,0 2,2 2,4 2,6 2,8 3,0
8,3893 8,6251 8,9286 8,9703 9,1731 9,1784 8,8424 8,7145 8,3077 7,9611

A szükséges együtthatók keresése a következőképpen történik:

Ahol n - pontok összege ( x, y),

m a kívánt polinom foka,

a 0 , a 1 , …, a m a kívánt együtthatók ( φ ( x )= a 0 + a 1 x + … + a m x m ).

Programkövetelmények

A munka elvégzésekor a következőket kell tennie:

Állítsa be annak a szakasznak a határait, amelyre a közelítő függvény épül φ(x)=a0+a1*x+… an * xm

Állítsa be m - a polinom foka

· Megjegyzés: x1, xn, m a billentyűzetről írható be.

A kezdeti adatok (x, y) megszerzéséhez, amelyekre a φ(x)=a0+a1*x+… an* x m közelítő függvény épül, adja meg:

ü Tetszőleges xi, i=1, n csomópontok beírása a billentyűzetről

ü xi, i=1, n csomópontok számítása, amelyek megfelelnek az x argumentum egyenletes elrendezésének a szegmensen

ü Bekezdésekben. 1,2 az yi, i=1, n értékeket vagy a billentyűzetről írjuk be (ha az eredeti függvény ismeretlen), vagy az adott f(x) függvényből számítjuk ki. A függvényt definiáló kifejezés a billentyűzetről kerül beírásra, és követnie kell a kifejezések MATLAB-ban történő írásának szabályait

ü Adatok (xi, yi, i=1, n) bevitele fájlból

Oldjon meg egy egyenletrendszert a φ(x) polinom együtthatóinak meghatározásához

Az eredeti táblázatos adott függvény és a φ(x) polinom grafikonjainak felépítése

· Ha a kezdeti adatokat f(x) függvényként adjuk meg, ábrázoljuk az /f(x) – φ(x)/ interpolációs hibát. Számítsa ki az interpolációs hiba maximális modulo értékét egy adott intervallumon.

A szegmens utolsó elemének végrehajtásakor legalább 500 pontot szerezzen a számításokhoz


A laboratóriumi munka tervezésének követelményei

A jelentésnek tartalmaznia kell:

1. A probléma megfogalmazása

2. Program szövege

3. Vizsgálati eredmények

Megjegyzés A programszövegeket megjegyzésekkel kell ellátni.


1. Anufriev I.E. Matlab 5.3 / 6.x oktatóanyag - St. Petersburg: BHV-Petersburg, 2003. - 736 p.: ill.

2. V.P. Dyakonov MATLAB 6.5 SPI/7 + Simulink 5/6 matematikában és modellezésben. "Professzionális könyvtár" sorozat. - M.: SOLON-Press, 2005. - 576 p.: ill.

3. Anufriev I.E., Smirnov A.B., Smirnova E.N. MathLab 7. - St. Petersburg: BHV-Petersburg, 2005. - 1104 p.: ill.

Gyakran egy hurok szervezésekor szükség van a számláló feletti iterációra egy adott értéktartományban és egy adott változtatási lépéssel. Például egy vektor (tömb) elemein való iterációhoz 1-től N-ig számlálót kell szervezni 1-es lépéssel, ahol N a vektor elemeinek száma. A sorozat összegének kiszámításához egy a-tól b-ig tartó számlálót is megadunk a szükséges lépésváltási lépéssel. Stb. Tekintettel arra, hogy a programozási gyakorlatban gyakran találkozunk ilyen feladatokkal, megvalósításukhoz külön for loop operátort javasoltak, ami megkönnyíti és látványosabbá teszi a számlálós ciklus megvalósítását.

A for ciklus utasítás szintaxisa a következő:

számára<счетчик> = <начальное значение>:<шаг>:<конечное значение>
<операторы цикла>
vége

Fontolja meg a munkát ezt a ciklust a vektorban lévő elem maximális értékének megtalálására szolgáló algoritmus megvalósításának példáján:

függvény keresési_max
a = ;
m = a(1); % aktuális maximális érték
ha i=1:hossz(a) % hurok 1-től a c vektor végéig
% 1. lépés (alapértelmezett)
ha m< a(i) % если a(i) >m,
m = a(i); %, akkor m = a(i)
vége
vége % for ciklus vége
disp(m);

Ebben a példában hurokhoz beállítja az i számlálót, és 1-ről 10-re változtatja értékét 1-es lépésekben. Vegye figyelembe, hogy ha a növekmény nincs kifejezetten megadva, akkor alapértelmezés szerint 1-gyel egyenlő.

A következő példában vegyük figyelembe a vektorelemek jobbra tolására szolgáló algoritmus megvalósítását, azaz. az utolsó előtti elem kerül az utolsó helyére, a következő kerül az utolsó előtti helyére, és így tovább. az első elemhez:

függvénysor
a = ;
disp(a);
i=hossz(a): -1:2 % hurok 10-ről 2-re a -1 lépéssel
a(i)=a(i-1); % eltolás elemei az a vektornak
vége % for ciklus vége
disp(a);

A program eredménye

3 6 5 3 6 9 5 3 1 0
3 3 6 5 3 6 9 5 3 1

A fenti példa azt mutatja, hogy egy ciklus megvalósításához egy nagyobb értékről egy kisebb számlálóra, kifejezetten meg kell adni a lépést, ebben az esetben -1. Ha ez nem történik meg, a ciklus azonnal leállítja a munkáját, és a program nem fog megfelelően működni.

Végezetül nézzük meg a for hurok operátor működését egy véletlen sorozat modellezésének példájával a változás törvényével

ahol - együttható -1 és 1 között; - normál valószínűségi változó nulla matematikai elvárással és szórással

,

hol van a szimulált varianciája véletlenszerű folyamat. Ebben az esetben az első mintát normál valószínűségi változóként modellezzük, nulla matematikai várakozással és szórással. A szimulációs program a következő formájú:

függvény modellezés_x
r = 0,95; % modell együttható
N = 100; % szimulált pontok száma
ex = 100; % folyamat szórása
et = ex*(1-r^2); % véletlenszerű additív variancia
x = nullák(N,1); % inicializálja az x vektort
x(1) = sqrt(ex)*randn; %-os szimuláció az 1. számról
ha i=2:N % hurok 2-től N-ig
x(i)=r*x(i-1)+sqrt(et)*randn; % Szimulációs JV
vége % ciklus vége
plot(x); SP %-os megjelenítése grafikonként

A program végrehajtásakor megjelenik a szimulált véletlenszerű sorozat megvalósítása.

Rizs. 2.1. Egy véletlen sorozat modellezésének eredménye.

A program munkája a változók , (a programban ex változó) meghatározásával és a megadott modell megvalósításával kezdődik. Ezután kiszámítjuk a szórást és a véletlenszerű folyamat első számát a randn függvény segítségével modellezzük. A randn függvény normál valószínűségi változókat generál nulla átlaggal és egységnyi szórással. Varianciájú valószínűségi változó generálásához elegendő egy egységnyi szórással rendelkező valószínűségi változót megszorozni -val, mert variancia az átlagos négyzet valószínűségi változó a matematikai elvárásról. Ennek eredményeként van egy programsorunk

x(1) = sqrt(ex)*randn;

Ezután a for hurkot egy 2-től N-ig tartó i számlálóval valósítjuk meg 1-es lépéssel. A hurkon belül a véletlenszerű folyamat fennmaradó N-1 mintáját szimuláljuk a fenti képlet szerint. A program utolsó sora tartalmazza a plot() függvényt, amely a szimulált sorozatot grafikonként jeleníti meg a képernyőn. A grafikonok képernyőn való megjelenítésével kapcsolatos részletesebb munkáról a következő fejezetben lesz szó.

Hurokutasítások A MATLAB-ban az ismétlődő műveletek a for és a while ciklusutasításokkal hajthatók végre. A for legegyszerűbb használata a következő: 2

For count = start: lépés: végső MATLAB parancsok End Ahol a count egy ciklusváltozó; n start, final - kezdeti és végső valós érték; n lépés - lépés a valós számok halmazától (alapértelmezett 1, ez elhagyható). A ciklus úgy ér véget, ahogy véglegesebbé válik. csak 3-at számolj

1. példa Számítsa ki az összeget x= -1, 0, 1-nél. Megoldás Hozzon létre egy programfájlt az M-file szerkesztőben! Mentjük a Summa fájlba. m S = 0; ha k = 1: 10 S = S + x. ^ k / faktoriális(k); End S A parancssorban x = -1:1:1; S összeg = -0. 6 0 1. 7 Vegyük észre, hogy a k, s változók globálisak. 4

Ebben a példában kényelmesebb a fájl funkció használata. Az M-file szerkesztőben A parancssorban hozzon létre egy függvényfájlt függvény S = funsum(x, N) > f = funsum (-1: 1, 10) S = 0; > f = m = 1 esetén: N -0. 6 0 1. 7 S = S + x. ^ m / faktoriális(m); vége Itt az s, m változók lokálisak. 5

2. példa Hozzon létre egy n rendű Hilbert-mátrixot. n = 4; a = nullák(n, n); i = 1 esetén: n j = 1 esetén: na (i, j) = 1 / (i+j-1); vége egy 6

Megjegyzés A mátrixok és vektorok kitöltése előtt először létre kell hozni azokat, és nullákkal kell kitölteni a nullák paranccsal, hogy növeljük az algoritmus sebességét (azaz a = nullák (n, n) gyorsabb, mint a(i, j) = 0, i, j = 1, ... , n). 7

A for ciklus ismétlődő műveletek végrehajtásakor hasznos, ha a számuk előre ismert. Ha a számuk nem ismert előre, használhatja a while ciklust: While ciklus feltétel Parancsok MATLAB End 8

3. példa Adott x sorozat összegének megkeresése Nem lehetséges a végtelenig összegezni, de addig halmozhatja az összeget, amíg a tagok túl kicsik, például 9-ig

Megjegyzés A tag kicsinysége relatív fogalom, lehet, hogy a tag mondjuk 10 -10 nagyságrendű, de maga az összeg is ugyanilyen nagyságrendű. Ebben az esetben az összegzést nem lehet leállítani. Erre egyelőre nem figyelünk, és visszatérünk a megoldáshoz. 10

Src="https://present5.com/presentation/c993b082b44b0b84b1886b8dd4d3c841/image-11.jpg" alt="M-file függvény A parancssori függvényben S = mysin(x) > f = mysin(1)"> M-file функция В командной строке function S = mysin(x) > f = mysin (1) S = 0; 0. 8415 k = 0; while abs(x. ^ (2*k + 1)/factorial(2*k + 1)) > 1. 0 e -10 S = S + (-1)^k * x. ^ (2*k + 1)/factorial(2*k + 1); k = k + 1; end 11!}

A következő relációs műveleteket használjuk a hurokvégrehajtási feltétel beállítására. Arány érték i = = egyenlő > nagyobb mint > = nagyobb vagy egyenlő ~ = nem egyenlő

és logikai operátorok: Operátorfeltétel jelölése MATLAB-ban Egyenértékű jelölés Logikai "és" x

Térjünk vissza példánkhoz, és vegyük észre, hogy ha a sorozat eltér, akkor az aktuális tag kicsinységének feltétele soha nem teljesül, és a program ciklusba léphet. Ezért a kifejezések számát 100. 000-re korlátozzuk. A feltétel így fog kinézni vagy (abs (x. ^ (2*k + 1)/factorial(2*k + 1)) > 1. 0 e -10, k

Kivételes helyzetek kezelése 1) break - a ciklus megszakítása és a végét követő operátor végrehajtása (például kilépés a belső hurokból); 2) Része helytelen matematikai műveletek MATLAB-ban nem fejezi be a programot (például =inf, =Na.N). A kimenet egy try konstrukció. Utasítások, amelyek végrehajtása hibaelfogáshoz vezethet. Állítások hiba esetén 15

Elágazó operátorok Feltételes operátor A MATLAB a következő ág operátorokat használja: n if egy feltételes operátor; n kapcsoló – 16. kapcsoló utasítás

Feltételes utasításstruktúra: a MATLAB parancs if (feltétele) elseif (feltétele) a MATLAB parancs …………. Ez a rész hiányozhat elseif (feltétel) MATLAB parancsok else MATLAB parancsok vége 17

Ha egy M-fájlt elágazási utasításokkal fordítunk, célszerű 1) a figyelmeztetés parancsot ('szöveg') használni - figyelmeztetés megjelenítésére a parancsablakban; 2) funkcióhiba ('szöveg') - a program végrehajtásának leállítása. 18

4. példa Adott ax 2 + bx +c = 0 másodfokú egyenlet, a ≠ 0. Írjunk fel egy M-függvényt, amely kiszámítja a másodfokú egyenlet gyökereit. Ellenőrizzük a bemeneti és kimeneti paraméterek számát, valamint azt, hogy a bemeneti paraméterek számok, nem pedig vektorok és mátrixok. Sőt, figyelembe vesszük az összetett gyök esetét is. A program így néz ki: 19

függvény = gyök 2 (a, b, c) if (nargin

Megjegyzés Saját íráshoz számítástechnikai programok nagy haszon tud hozni független tanulmány szabványos függvényfájlokat az Eszköztár alkönyvtáraiban. A legtöbbjüknek van nyílt forráskód, amely lehetővé teszi a MATLAB programozási elvek megértését. Egyéb funkciók (például cos. m) be vannak építve. Megjegyzéseket tartalmaznak a függvények használatával kapcsolatban. Vegyünk egy másik példát. 21

függvény y = kusfun (x) Ha nargin ~= 1 hiba ('Egy bemeneti argumentumnak kell lennie') end = size(x); y = nullák(méret(x)); % inicializálja a bemeneti argumentumot i = 1 esetén: Nx j = 1 esetén: Mx, ha x (i, j) = -pi nem szükséges! y(i,j)=x(i,j)/pi; különben y (i, j) = - cos(x (i, j)) end end 23

A switch utasítás akkor kényelmesen használható, ha bizonyos változók és az azt követő műveletek diszkrét értékei megfelelnek. 24

Az utasítás szerkezete a következő példából látható: eset váltása -1 disp ('a = -1') 0 eset disp ('a = 0') egyébként disp ('a nem egyenlő -1, 0 ') vége 25

A kapcsoló utasítás kiválóan alkalmas a vizsgált függvény különféle grafikonjainak (huzalfelület (a=1), szintvonalak (a=2) megjelenítési feladatának megoldására. 26

Logikai kifejezések tömbökkel és számokkal univerzális módon A mátrixadatok feldolgozása logikai műveletek. Mivel a MATLAB a számokat 1 1 tömbként jeleníti meg, természetes, hogy elvárjuk, hogy a tömbök szerepeljenek a logikai kifejezésekben. Most megvizsgáljuk a logikai és relációs műveletek kiterjesztését a tömbök esetére. 27

Relációs műveletek A MATLAB relációs műveleteinek eredménye lehet logikai egyes ('igaz') vagy logikai nulla ('hamis'). Ezenkívül sok programozási nyelvtől eltérően az aritmetikai változók ugyanabban a kifejezésben használhatók, mint a logikai változók. 28

Src="https://present5.com/presentation/c993b082b44b0b84b1886b8dd4d3c841/image-29.jpg" alt="6. példa > a = 1; b = 3; c = 1; >"> Пример 6 > a = 1; b = 3; c = 1; > a + (b > c) ans = 2 > a + (b!}

Src="https://present5.com/presentation/c993b082b44b0b84b1886b8dd4d3c841/image-30.jpg" alt=" > A = ; B = ; B = ; > C = A = = B C = 30

Megjegyzés Csakúgy, mint az elemenkénti aritmetikai műveleteknél, megengedett a számok használata a relációs művelet egyik argumentumaként. Ebben az esetben a tömb minden elemét egy számmal hasonlítjuk össze, az eredmény az eredetivel megegyező méretű tömb. 31

Logikai műveletek A logikai műveletek tömbökre történő alkalmazása azt eredményezi, hogy azok elemenként hajtódnak végre tömbelemeken. n A és B - egyet ad, ha a megfelelő elemek nem egyenlőek nullával; n A vagy B - egyet ad, ha legalább egy elem nem egyenlő nullával; 32

nem A - egy tömbre vonatkozik, ha az elem nem egyenlő nullával, akkor nulla van beállítva, ellenkező esetben - egy; n mind (v) - nulla elemet ellenőrzi a vektorban, egyet ad vissza, ha nincs nulla elem. Ha v egy mátrix, akkor az eredmény oszlopok; n tetszőleges (v) – egyet ad vissza, ha legalább egy nem nulla elem van a bemeneti vektorban. n 33

A műveletek prioritása 1. Negáció; 2. Transzponálás, hatványozás (elemenként is), plusz és mínusz jel a szám előtt; 3. Szorzás és osztás (beleértve elemenként); 4. Összeadás és kivonás; 5. Kapcsolati műveletek; 6. Logikai 'és', logikai 'vagy'. 34

Src="https://present5.com/presentation/c993b082b44b0b84b1886b8dd4d3c841/image-36.jpg" alt=" 7. példa > a = ; > u"> Пример 7 > a = ; > u = find ((a = -1)) 3 4 5 > anew = a(u) 0 -1 0 36!}

8. példa Cserélje le egymástól függetlenül az összes elem átlagértékénél 10%-kal nagyobb, 5 x 5 véletlenszámú négyzetmátrix elemeit az átlagértékre. Megoldás > A = rand(5); > S = összeg (A összeg) / 25; > A(find (A > S* 1. 1)) = S Ebben az esetben a kereső függvény 2 sorszám- és oszlopszám-vektort ad vissza. 37

Polinomok a MATLAB-ban Polinom p(x)=anxn+an-1xn-1+. . . +a 0, an≠ 0 MATLAB-ban, a vektor-stroy p= adott, ahol ai tetszőleges komplex számok, an≠ 0. Vegye figyelembe, hogy a polinom mértékét a következőképpen számítjuk ki: n=hossz(p)-1 (ha n=0, const ). 38

A polinomokkal végzett műveletek főbb parancsai a következők: n n n r=roots(p) egy oszlopvektor, amely tartalmazza a polinom összes gyökerét; p=poly(r) – polinom felépítése az r oszlopvektorban megadott gyökökből, sőt, ha r négyzetmátrix, akkor p a karakterisztikus polinom; y=polyval(p, x) – a p polinom y értékeinek elemenkénti kiszámítása az x halmazon, ahol x lehet vektor vagy mátrix; 39

n n n polyder(p) egy sorvektor, amely p-ből származik (a p polinom differenciálása); polider(p, q) a p és q polinomok szorzatának deriváltja; = polider(p, q) a p és q polinom hányadosának deriváltja, ahol a és b a kapott tört számlálója és nevezője; 40

n n n p=polifit(x, y, n) – az y(x) függvény közelítése a p polinommal n-edik fokozat olyan módszerrel, amely minimálisra csökkenti a polinom gráf és a valódi görbe közötti távolságot, teljes hosszukra átlagolva; conv(p, q) egy sorvektor, p és q polinomok szorzata; =deconv(p, q) – p osztása q-val, w-hányados, r-maradék és p=conv (q, w) + r; 41

n =maradék(a, b) egy racionális függvény egyszerű törtekre bontása a komplex számok mezőjében a k(х) egész rész kiválasztásával, vagy ahol ri maradékok (r elem), pi pólusok (p elemek). Ez a parancs fordítva is működik =residue(r, p, k) 42

Megjegyzés 1. Ha az (a, b) maradékban lévő b(x) polinomnak és a gyökben (p) lévő p(x) polinomnak több vagy közeli gyöke van, akkor az eredmények tévesek lehetnek, mivel egy ilyen probléma rosszul kondicionált . A rossz feltételesség az eredmény rendkívül erős függése az együtthatóktól (hasonlóan a megoldás stabilitásához a differenciálegyenletekben). 43

2. Ha polinomokkal dolgozunk, előfordulnak az alak polinomjai, és a MATLAB nem ellenőrzi automatikusan a ≠ 0 értéket, és hibák lépnek fel (ezt magának kell követnie). 44

Részleg: Informatika

PROGRAMOZÁS BEMATLAB

ÜzemeltetőkMATLAB

· Loop kijelentések

Ciklusszámára

Szintaxis

count=start:step:final

MATLAB parancsok

Leírás

count - hurokváltozó,

start - a kezdeti értéke,

végleges – végső értéke,

lépés – az a lépés, amellyel a szám minden alkalommal növekszik, amikor belép a hurokba

a ciklus véget ér, amint a count értéke nagyobb lesz, mint a végleges.

Példa

Legyen szükséges x€ görbecsalád levezetése, amelyet a paramétertől függő függvény ad meg

y (x, a) \u003d e-ax sin x,

a paraméterértékeknél -0,1 és 0,1 között. Az alábbiakban egy görbecsalád kimenetére szolgáló fájlprogram listája található.

Programlista

x = ;

ha a = -0,1:0,02:0,1

y = exp(-a*x).*sin(x);

A program végrehajtása eredményeként megjelenik egy grafikus ablak, amely tartalmazza a szükséges görbecsaládot.

Ciklusmíg

Szintaxis

míg hurokfeltétel

MATLAB parancsok

Leírás

A ciklus addig fut, amíg a ciklus (igaz) feltétele igaz. A következő relációs műveletek engedélyezettek egy ciklus végrehajtásának feltételének beállítására:

A bonyolultabb feltételek logikai operátorok segítségével adhatók meg. A logikai operátorokat a következő táblázat tartalmazza

Példa

Fiókkezelők

Feltételes operátorha

Szintaxis

ha feltétel

MATLAB parancsok

Leírás

Ha a feltétel igaz, akkor az if és end közé helyezett MATLAB parancsok végrehajtásra kerülnek, ha pedig nem igaz, akkor az átmenet a vége után található parancsokra történik.

Példa

Feltételes operátorelseif

Szintaxis

ha feltétel1

elseif feltétel2

………………………

elseif feltétel

Leírás

Egyik vagy másik feltétel teljesülésétől függően a program megfelelő ága működik, ha minden feltétel nem megfelelő, akkor a többi után elhelyezett parancsok végrehajtásra kerülnek.

Példa

Operátorkapcsoló

Szintaxis

kapcsoló változó

esetérték1

esetérték2

……………………

case valuen

Minden ágat egy case utasítás definiál, az arra való áttérés akkor történik meg, amikor a switch utasítás változó az eset után megadott értéket, vagy az esetlistából valamelyik értéket veszi fel. Bármelyik elágazás végrehajtása után a kapcsoló kilép, míg a többi esetben megadott értékek már nem kerülnek ellenőrzésre. Ha nincs megfelelő érték a változóhoz, akkor a program másnak megfelelő ága fut le.

Példa

A hurok megszakad. Kivételes helyzetek.

Operátorszünet

Szintaxis

A break utasítás a ciklikus számítások rendszerezésére szolgál: for...end, while...end. Amikor az állapot

ha feltétel

a break utasítás befejezi a ciklust (for vagy while), és a végét követő sorokon található utasítások végrehajtásra kerülnek. Beágyazott hurkok esetén a break kilép a belső ciklusból.

Kivételkezelés, Kezelőpróbáld kifogás

Szintaxis

nyilatkozatok, amelyek végrehajtása

hibát eredményezhet

végrehajtandó nyilatkozatok

amikor hiba lép fel egy blokkban

a próbálkozás és a fogás között

Leírás

A try...catch konstrukció lehetővé teszi a kivételes helyzetek megkerülését (olyan hibák, amelyek a program leállásához vezetnek, például egy nem létező fájl elérése), és ha előfordulnak, megtesz valamit.

Példa

Szolgáltatásfunkciókat

diszp- megjeleníti a változó szövegét vagy értékét a parancsablakban

bemenet- Beviteli kérést hajt végre a billentyűzetről. Alkalmazások parancssori felülettel történő létrehozásakor használatos.

eval - végrehajtja egy karakterlánc vagy karakterlánc-változó tartalmát, például a MATLAB parancsokat

egyértelmű- eltávolítja a munkakörnyezeti változókat.

Val vellc- törli a parancsablakot

Ha többet szeretne tudni ezekről és más funkciókról, futtassa a parancssorból

Segítségfüggvény_neve

Feladatoklaboratóriumi munkához

Egy adott feladat opció számát a tanár határozza meg.

Gyakorlat1

Ez a feladat magában foglalja egy n fokú algebrai interpolációs polinom megtalálását bizonyos adathalmazokhoz: Pn(x) .

A munka célja:

Programot kell írni egy algebrai interpolációs polinom együtthatóinak kiszámításához Pn(x)= a0 + a1 x+ + anxn.

Módszertani utasítások:

xén

yén

Esély a0 , a1 , …, an egyenletrendszer megoldásából határozzuk meg:

Itt naz interpolációs polinom sorrendje,

n+1 - adott pontpárok száma ( x, y),

a0 , a1 ,… an a polinom kívánt együtthatói Pn(x)= a0 + a1 x+ + anxn).

Programkövetelmények

Állítsa be a vonal határait , amelyre az interpolációs polinom épül P(x)

· Kérdezzen n- az interpolációs szegmensek száma (vagy ennek megfelelően a polinom mértéke)

Jegyzet: x0, xn, n billentyűzetről lépett be.

· A kezdeti adatok beszerzése (x, y) (pontpárok száma (xén, yén) , amelyre az interpolációs polinom épül P(x) - n1=n+1) biztosítani:

b Adjon meg véletlenszerűen elhelyezett csomópontokat xén, i=0, n a billentyűzetről

b Csomók számítása xén, i=0, n, az érvelés egységes elrendezésének megfelelő x a szegmensen

b A bekezdésekben. 1,2 értékek yén, i=0, n vagy a billentyűzetről beírva (ha az eredeti függvény ismeretlen), vagy egy adott függvényből számolva f(x). A függvényt definiáló kifejezés a billentyűzetről kerül beírásra, és követnie kell a kifejezések MATLAB-ban történő írásának szabályait

b Adatbevitel ( xén, yén, i=0, n) fájlból

Egyenletrendszer megoldása a P(x) polinom együtthatóinak meghatározására

Az eredeti táblázatos függvény és a P(x) polinom grafikonjainak felépítése

· Ha a kezdeti adatokat f(x) függvényként adjuk meg, ábrázoljuk az /f(x) - P(x)/ interpolációs hibát. Számítsa ki az interpolációs hiba maximális modulo értékét egy adott intervallumon.

Gyakorlat2

Spline interpoláció

A munka célja:

Létre kell hozni egy programot az együtthatók kiszámítására és az S(x) spline függvény felépítésére, S(x) 3. rendű polinomokból "ragasztott" én(x), amelyek speciális jelöléssel rendelkeznek:

S függvény én(x) a szegmensen meghatározott

Programkövetelmények

A munka elvégzésekor a következőket kell tennie:

Állítsa be annak a szakasznak a határait, amelyre az S(x) spline függvény épül

· Adja meg n - az interpolációs szegmensek számát, amelyek mindegyikére a Si(x) köbös polinom épül.

· Megjegyzés: x0, xn, n a billentyűzetről írható be.

Szervezzük meg a kezdeti adatok (x, y) bevitelét (a pontpárok száma (xi, yi), amelyre az S(x), n1=n+1 spline függvény épül), feltéve:

ь Önkényesen elhelyezkedő xi, i=0, n csomópontok bevitele a billentyűzetről

b Az xi, i=0, n csomópontok számítása, amelyek megfelelnek az x argumentum egyenletes elrendezésének a szegmensen

b A bekezdésekben. 1,2 az yi, i=0, n értékeket vagy a billentyűzetről írjuk be (ha az eredeti függvény ismeretlen), vagy az adott f(x) függvényből számítjuk ki. A függvényt definiáló kifejezés a billentyűzetről kerül beírásra, és követnie kell a kifejezések MATLAB-ban történő írásának szabályait

b Adatbevitel (xi, yi, i=0, n) fájlból

b S1""(x0)=0, S3""(x3)=0

b S1 "(x0) \u003d f "(x0), S3" (x3) \u003d f "(x3)

b S1""(x0)=f "(x0), S3""(x0)=f "(x3)

A természetes köbös spline együtthatóinak meghatározásához (1. peremfeltétel) a következő egyenletrendszert kell megoldani:

Együtthatók?0=0,?n=0

· Az eredeti függvény és a spline függvények ábrázolása mindhárom peremfeltételtípusra.

· Készítsen gráfokat az f(x) - S(x) spline-interpolációs hibafüggvényekről mindhárom peremfeltételtípusra.

Jegyzet:

A MATLAB csomagban az egydimenziós és kétdimenziós tömbök indexei 1-től kezdődnek, nem 0-tól. Ezt vegyük figyelembe programíráskor.

Gyakorlat№3

Függvény közelítése a legkisebb négyzetek módszerével (LSM).

Ez a feladat azt jelenti, hogy valamilyen adathalmazra egy közelítő függvényt (m-fokú polinomot) kell keresni, amelyet a legkisebb négyzetek módszerével (LSM) állítottunk össze.

A munka célja:

Programot kell írni egy polinom együtthatóinak megtalálásához? (x)= a0 + a1 * x+… an * xm a legkisebb négyzetek módszerével.

Legyen például a következő adatkészletünk:

xén

yén

A szükséges együtthatók keresése a következőképpen történik:

Ahol n - pontok összege ( x, y),

m - a kívánt polinom mértéke,

a 0 , a 1 , …, a m - kívánt együtthatók ( ? ( x )= a 0 + a 1 x + … + a m x m ).

Programkövetelmények

A munka elvégzésekor a következőket kell tennie:

Állítsa be annak a szakasznak a határait, amelyre a közelítő függvény épül?(x)=a0+a1*x+… an * xm

Állítsa be m - a polinom foka

· Megjegyzés: x1, xn, m a billentyűzetről írható be.

A kezdeti adatok (x, y) megszerzéséhez, amelyekre a közelítő függvény épül?(x)=a0+a1*x+… an* xm adja meg:

ь A véletlenszerűen elhelyezkedő xi, i=1, n csomópontok bevitele a billentyűzetről

b Az xi, i=1, n csomópontok számítása, amelyek megfelelnek az x argumentum egységes elrendezésének a szegmensen

b A bekezdésekben. 1,2 az yi, i=1, n értékeket vagy a billentyűzetről írjuk be (ha az eredeti függvény ismeretlen), vagy az adott f(x) függvényből számítjuk ki. A függvényt definiáló kifejezés a billentyűzetről kerül beírásra, és követnie kell a kifejezések MATLAB-ban történő írásának szabályait

b Adatok (xi, yi, i=1, n) bevitele fájlból

Egyenletrendszer megoldása egy polinom együtthatóinak meghatározására? (x)

Készítsen grafikonokat az eredeti táblázatos adott függvényről és polinomról? (x)

· Ha a kezdeti adatokat f(x) függvényként adjuk meg, ábrázoljuk az /f(x) - ?(x)/ interpolációs hibát. Számítsa ki az interpolációs hiba maximális modulo értékét egy adott intervallumon.

A szegmens utolsó elemének végrehajtásakor legalább 500 pontot szerezzen a számításokhoz

A laboratóriumi munka tervezésének követelményei

A jelentésnek tartalmaznia kell:

1. A probléma megfogalmazása

2. Program szövege

3. Vizsgálati eredmények

Megjegyzés A programszövegeket megjegyzésekkel kell ellátni.

Bibliográfia

1. Anufriev I.E. Matlab 5.3 / 6.x oktatóanyag - St. Petersburg: BHV-Petersburg, 2003. - 736 p.: ill.

2. V.P. Dyakonov MATLAB 6.5 SPI/7 + Simulink 5/6 matematikában és modellezésben. "Professzionális könyvtár" sorozat. - M.: SOLON-Press, 2005. - 576 p.: ill.

3. Anufriev I.E., Smirnov A.B., Smirnova E.N. MathLab 7. - St. Petersburg: BHV-Petersburg, 2005. - 1104 p.: ill.

Gyakran egy hurok szervezésekor szükség van a számláló feletti iterációra egy adott értéktartományban és egy adott változtatási lépéssel. Például egy vektor (tömb) elemein való iterációhoz 1-től N-ig számlálót kell szervezni 1-es lépéssel, ahol N a vektor elemeinek száma. A sorozat összegének kiszámításához egy a-tól b-ig tartó számlálót is megadunk a szükséges lépésváltási lépéssel. Stb. Tekintettel arra, hogy a programozási gyakorlatban gyakran találkozunk ilyen feladatokkal, megvalósításukhoz külön for loop operátort javasoltak, ami megkönnyíti és látványosabbá teszi a számlálós ciklus megvalósítását.

A for ciklus utasítás szintaxisa a következő:

számára<счетчик> = <начальное значение>:<шаг>:<конечное значение>
<операторы цикла>
vége

Tekintsük ennek a ciklusnak a munkáját a vektorban lévő elem maximális értékének megtalálására szolgáló algoritmus megvalósításának példáján:

függvény keresési_max
a = ;
m = a(1); % aktuális maximális érték
ha i=1:hossz(a) % hurok 1-től a c vektor végéig
% 1. lépés (alapértelmezett)
ha m< a(i) % если a(i) >m,
m = a(i); %, akkor m = a(i)
vége
vége % for ciklus vége
disp(m);

Ebben a példában a for hurok beállítja az i számlálót, és 1-ről 10-re változtatja értékét 1-es lépésekben. Vegye figyelembe, hogy ha a növekmény nincs kifejezetten megadva, akkor az alapértelmezett érték 1.

A következő példában vegyük figyelembe a vektorelemek jobbra tolására szolgáló algoritmus megvalósítását, azaz. az utolsó előtti elem kerül az utolsó helyére, a következő kerül az utolsó előtti helyére, és így tovább. az első elemhez:

függvénysor
a = ;
disp(a);
i=hossz(a): -1:2 % hurok 10-ről 2-re a -1 lépéssel
a(i)=a(i-1); % eltolás elemei az a vektornak
vége % for ciklus vége
disp(a);

A program eredménye

3 6 5 3 6 9 5 3 1 0
3 3 6 5 3 6 9 5 3 1

A fenti példa azt mutatja, hogy egy ciklus megvalósításához egy nagyobb értékről egy kisebb számlálóra, kifejezetten meg kell adni a lépést, ebben az esetben -1. Ha ez nem történik meg, a ciklus azonnal leállítja a munkáját, és a program nem fog megfelelően működni.

Végezetül nézzük meg a for hurok operátor működését egy véletlen sorozat modellezésének példájával a változás törvényével

ahol - együttható -1 és 1 között; - normál valószínűségi változó nulla matematikai elvárással és szórással

,

ahol a szimulált véletlenszerű folyamat varianciája. Ebben az esetben az első mintát normál valószínűségi változóként modellezzük, nulla matematikai várakozással és szórással. A szimulációs program a következő formájú:

függvény modellezés_x
r = 0,95; % modell együttható
N = 100; % szimulált pontok száma
ex = 100; % folyamat szórása
et = ex*(1-r^2); % véletlenszerű additív variancia
x = nullák(N,1); % inicializálja az x vektort
x(1) = sqrt(ex)*randn; %-os szimuláció az 1. számról
ha i=2:N % hurok 2-től N-ig
x(i)=r*x(i-1)+sqrt(et)*randn; % Szimulációs JV
vége % ciklus vége
plot(x); SP %-os megjelenítése grafikonként

A program végrehajtásakor megjelenik a szimulált véletlenszerű sorozat megvalósítása.

Rizs. 2.1. Egy véletlen sorozat modellezésének eredménye.

A program munkája a változók , (a programban ex változó) meghatározásával és a megadott modell megvalósításával kezdődik. Ezután kiszámítjuk a szórást és a véletlenszerű folyamat első számát a randn függvény segítségével modellezzük. A randn függvény normál valószínűségi változókat generál nulla átlaggal és egységnyi szórással. Varianciájú valószínűségi változó generálásához elegendő egy egységnyi szórással rendelkező valószínűségi változót megszorozni -val, mert a variancia egy valószínűségi változó átlagos négyzete a matematikai elvárásokhoz képest. Ennek eredményeként van egy programsorunk

x(1) = sqrt(ex)*randn;

Ezután a for hurkot egy 2-től N-ig tartó i számlálóval valósítjuk meg 1-es lépéssel. A hurkon belül a véletlenszerű folyamat fennmaradó N-1 mintáját szimuláljuk a fenti képlet szerint. A program utolsó sora tartalmazza a plot() függvényt, amely a szimulált sorozatot grafikonként jeleníti meg a képernyőn. A grafikonok képernyőn való megjelenítésével kapcsolatos részletesebb munkáról a következő fejezetben lesz szó.



Betöltés...
Top