Programming sa MATLAB. Loop sa Matlab para sa – Illustrated na tutorial sa MatLab › Mga pangunahing kaalaman sa programming › Mga loop tulad ng para sa…wakas. Mga loop tulad ng while…end Infinite loop matlab

Wikang Teknikal sa Pag-compute

Milyun-milyong mga inhinyero at siyentipiko sa buong mundo ang gumagamit ng MATLAB ® upang suriin at idisenyo ang mga system at produkto na nagbabago sa ating mundo. Ang MATLAB matrix language ay ang pinaka natural na paraan sa mundo upang ipahayag ang computational mathematics. Ang pinagsama-samang mga graphics ay ginagawang madaling makita at maunawaan ang data. Hinihikayat ng desktop environment ang eksperimento, paggalugad, at pagtuklas. Ang mga tool at kakayahan ng MATLAB na ito ay mahigpit na nasubok at idinisenyo upang magtulungan.

Tinutulungan ka ng MATLAB na dalhin ang iyong mga ideya sa kabila ng desktop. Maaari kang magpatakbo ng mga pag-aaral sa malalaking set ng data at sukat sa mga kumpol at ulap. Maaaring isama ang MATLAB code sa iba pang mga wika, na nagbibigay-daan sa iyong mag-deploy ng mga algorithm at application sa network, enterprise, at mga sistemang pang-industriya.

Pagsisimula

Alamin ang Mga Pangunahing Kaalaman sa MATLAB

Mga Pangunahing Kaalaman sa Wika

Syntax, pag-index at pagproseso ng array, mga uri ng data, mga operator

Pag-import at pagsusuri ng data

Mag-import at mag-export ng data, kabilang ang malalaking file; data pre-processing, visualization at pananaliksik

Mathematics

Linear algebra, differentiation at integration, Fourier transforms at iba pang matematika

Mga graphic

2D at 3D graphics, mga larawan, animation

Programming

Mga script, function at klase

Paglikha ng aplikasyon

Bumuo ng mga app gamit ang App Designer, Programmable Workflow, o GUIDE

Mga Tool sa Pag-develop ng Software

Pag-debug at pagsubok, organisasyon ng malalaking proyekto, pagsasama sa bersyon ng control system, packaging ng mga toolbox

May kundisyon kung pahayag

Sa pinakasimpleng kaso, ang syntax ng if statement na ito ay:

kung<выражение>
<операторы>
wakas

Nais kong iguhit ang iyong pansin sa katotohanan na, hindi tulad ng mga modernong wika sa programming, ang gayong konsepto bilang isang tambalang operator ay hindi ginagamit. Ang conditional statement block ay dapat magtapos sa service word end.

Nasa ibaba ang isang halimbawang pagpapatupad ng sign() function, na nagbabalik ng +1 kung ang numero ay mas malaki kaysa sa zero, -1 kung ang numero ay mas mababa sa zero, at 0 kung ang numero ay zero:

x = 5;
kung x > 0
disp(1);
wakas
kung x< 0
disp(-1);
wakas
kung x == 0
disp(0);
wakas

Ang pagsusuri sa halimbawa sa itaas ay nagpapakita na ang lahat ng tatlong kundisyong ito ay kapwa eksklusibo, i.e. Kapag ang isa sa kanila ay na-trigger, hindi na kailangang suriin ang iba. Ang pagpapatupad ng ganoong lohika ay magpapataas ng bilis ng pagpapatupad ng programa. Ito ay maaaring makamit sa pamamagitan ng paggamit ng disenyo

kung<выражение>
<операторы1>% ay isinasagawa kung ang kundisyon ay totoo
iba pa
<операторы2>% ay ipapatupad kung mali ang kundisyon
wakas

Pagkatapos ang halimbawa sa itaas ay maaaring isulat tulad ng sumusunod:

X = 5;
kung x > 0
disp(1);
iba pa
kung x< 0
disp(-1);
iba pa
disp(0);
wakas
wakas

Sinusuri muna ng program na ito kung positibo ang x, at kung gayon, ipi-print ang halaga 1 at binabalewala ang lahat ng iba pang kundisyon. Kung ang unang kundisyon ay lumabas na mali, ang pagpapatupad ng programa ay nagpapatuloy sa pamamagitan ng iba (kung hindi man) sa pangalawang kundisyon, kung saan ang variable na x ay sinusuri para sa negatibiti, at kung ang kundisyon ay totoo, ang halaga -1 ay ipinapakita sa screen . Kung mali ang parehong kundisyon, ipapakita ang value na 0.

Ang halimbawa sa itaas ay maaaring isulat sa isang mas simpleng anyo gamit ang isa pang MatLab kung bumuo ng pahayag:

kung<выражение1>
<операторы1>% ay isinasagawa kung ang expression1 ay totoo
elseif<выражение2>
<операторы2>% ay isinasagawa kung ang expression2 ay totoo
...
elseif<выражениеN>
<операторыN>% ay isinasagawa kung ang expressionN ay totoo
wakas

at nakasulat ang mga sumusunod:

x = 5;
kung x > 0
disp(1); % ay isinasagawa kung x > 0
kung hindi x< 0
disp(-1); % ay naisakatuparan kung x< 0
iba pa
disp(0); % ay naisakatuparan kung x = 0
wakas

Gamit ang if statement, maaari mong subukan ang mas kumplikadong (compound) na mga kondisyon. Halimbawa, kailangan mong matukoy: ang variable ba ay nasa loob ng saklaw ng mga halaga mula 0 hanggang 2? Ito ay maaaring ipatupad sa pamamagitan ng sabay na pagsuri sa dalawang kundisyon nang sabay-sabay: x >= 0 at x<=2. Если эти оба условия истинны, то x попадает в диапазон от 0 до 2.

Upang ipatupad ang mga kundisyon ng tambalan sa MatLab, ginagamit ang mga lohikal na operator:

& - lohikal AT
| - lohikal O
~ - lohikal HINDI

Tingnan natin ang isang halimbawa ng paggamit ng mga kondisyon ng tambalan. Ipagpalagay na gusto mong suriin kung ang isang variable x ay nasa hanay mula 0 hanggang 2. Ang programa ay isusulat tulad ng sumusunod:

x = 1;
kung x >= 0 at x<= 2
iba pa
wakas

Sa pangalawang halimbawa, susuriin natin kung ang variable na x ay hindi kabilang sa hanay mula 0 hanggang 2. Ito ay makakamit sa pamamagitan ng pag-trigger ng isa sa dalawang kundisyon: x< 0 или x > 2:

x = 1;
kung x< 0 | x > 2
disp("x ay hindi nabibilang sa hanay mula 0 hanggang 2");
iba pa
disp("x nabibilang sa hanay mula 0 hanggang 2");
wakas

Gamit ang mga lohikal na operator AT, O, HINDI, maaari kang lumikha ng iba't ibang mga kondisyon ng tambalan. Halimbawa, maaari mong suriin na ang x ay nasa hanay na -5 hanggang 5, ngunit hindi sa hanay na 0 hanggang 1. Malinaw, maaari itong ipatupad tulad nito:

x = 1;
kung (x >= -5 & x<= 5) & (x < 0 | x > 1)
disp("x nabibilang sa [-5, 5], ngunit wala sa ");
iba pa
disp("x o wala sa [-5, 5] o sa ");
wakas

Tandaan na ang mga panaklong ay ginamit sa kumplikadong kondisyon ng tambalan. Ang katotohanan ay mas mataas ang priyoridad ng operasyong AND kaysa sa priyoridad ng operasyong OR, at kung walang panaklong, magiging ganito ang kundisyon: (x >= -5 at x<= 5 и x < 0) или x >1. Malinaw, ang ganitong tseke ay magbibigay ng ibang resulta mula sa inaasahan.

Ang mga panaklong sa programming ay ginagamit upang baguhin ang mga priyoridad sa pagpapatupad ng mga pahayag. Tulad ng mga operator ng aritmetika, ang mga lohikal na operator ay maaari ding baguhin sa kahilingan ng programmer. Sa pamamagitan ng paggamit ng mga panaklong, ang pagsubok ay ginagawa muna sa loob ng mga ito, at pagkatapos ay sa labas ng mga ito. Iyon ang dahilan kung bakit sa halimbawa sa itaas kailangan nila upang makamit ang kinakailangang resulta.

Ang priyoridad ng mga lohikal na operasyon ay ang mga sumusunod:

HINDI (~) – pinakamataas na priyoridad;
At (&) – katamtamang priyoridad;
O (|) – pinakamababang priyoridad.

Habang loop operator

Ang MatLab programming language ay may dalawang loop statement: habang at para sa. Sa kanilang tulong, halimbawa, ang pagprograma ng mga paulit-ulit na algorithm, pagkalkula ng kabuuan ng isang serye, pag-enumerate ng mga elemento ng array, at marami pang iba ay ginaganap.

Sa pinakasimpleng kaso, ang isang loop sa isang programa ay inayos gamit ang while statement, na mayroong sumusunod na syntax:

habang<условие>
<операторы>
wakas

Dito<условие>nangangahulugang isang conditional na expression tulad ng ginamit sa isang if statement, at ang while loop ay tumatakbo hangga't ang kundisyon ay totoo.

Pakitandaan na kung mali ang kundisyon bago magsimula ang loop, ang mga pahayag na kasama sa loop ay hindi isasagawa kahit isang beses.

Narito ang isang halimbawa kung paano gumagana ang while loop upang kalkulahin ang kabuuan ng isang serye:


i=1; % counter ng halaga
habang ako<= 20 % цикл (работает пока i <= 20)

dulo % dulo ng loop
disp(S); % na nagpapakita ng halagang 210 sa screen

Ngayon gawing kumplikado ang problema at kalkulahin ang kabuuan ng serye, sa ngayon. Dito, sa loop operator, dalawang kundisyon ang nakuha: alinman sa counter para sa i ay umabot sa 20, o ang halaga ng sum S ay lumampas sa 20. Ang logic na ito ay maaaring ipatupad gamit ang isang compound conditional expression sa while loop operator:

S = 0; % paunang halaga ng halaga
i=1; % counter ng halaga
habang ako<= 20 & S <= 20 % цикл (работает пока i<=10 и S<=20
S=S+i; % ang halaga ay kinakalkula
i=i+1; Pinapataas ng % ang counter ng 1
dulo % dulo ng loop

Ang halimbawa sa itaas ay nagpapakita ng posibilidad ng paggamit ng mga kundisyon ng tambalan sa isang while loop. Sa pangkalahatan, maaari mong isulat ang parehong mga kundisyon bilang isang conditional expression tulad ng sa isang conditional if statement.

Ang gawain ng anumang loop operator, kabilang ang while, ay maaaring puwersahang wakasan gamit ang break operator. Halimbawa, ang nakaraang programa ay maaaring muling isulat tulad ng sumusunod gamit ang isang break na pahayag:

S = 0; % paunang halaga ng halaga
i=1; % counter ng halaga
habang ako<= 20 % цикл (работает пока i<=10
S=S+i; % ang halaga ay kinakalkula
i=i+1; Pinapataas ng % ang counter ng 1
kung S > 20% kung S > 20,
masira; % pagkatapos ay matatapos ang cycle
wakas
dulo % dulo ng loop
disp(S); % halaga ng display 21 sa screen

Sa halimbawang ito, ang pangalawang kundisyon para sa pagtatapos ng loop, kapag ang S ay mas malaki sa 20, ay nakasulat sa loop mismo at gamit ang break operator, ang loop ay lalabas sa disp() function, na matatagpuan kaagad pagkatapos ng while loop.

Ang pangalawang loop execution control operator continue ay nagbibigay-daan sa iyo na laktawan ang pagpapatupad ng fragment ng program na darating pagkatapos nito. Halimbawa, gusto mong kalkulahin ang kabuuan ng mga elemento ng isang array

a = ;

hindi kasama ang elemento sa index 5. Ang nasabing programa ay maaaring isulat tulad ng sumusunod:

S = 0; % paunang halaga ng halaga
a = ; % array
i=0; % array index counter
habang ako< length(a) % цикл (работает пока i меньше
% haba ng array a)
i=i+1; Pinapataas ng % ang index counter ng 1
kung i == 5% kung ang index ay 5
magpatuloy; % pagkatapos ay hindi namin ito binibilang
wakas
S=S+a(i); % ang kabuuan ng mga elemento ay kinakalkula
dulo % dulo ng loop
disp(S); % na nagpapakita ng halagang 40 sa screen

Dapat tandaan na sa programang ito, ang array index i ay nadagdagan bago suriin ang kundisyon. Ginagawa ito upang ang halaga ng index ay tumaas ng 1 sa bawat pag-ulit ng loop. Kung ang pagtaas sa counter i ay nakasulat tulad ng sa mga nakaraang halimbawa, i.e. pagkatapos kalkulahin ang kabuuan, pagkatapos ay dahil sa patuloy na operator ang halaga nito ay titigil sa 5 at ang while loop ay tatakbo "magpakailanman".

Ang para sa loop operator

Kadalasan, kapag nag-aayos ng isang loop, kailangan mong umulit sa pamamagitan ng isang counter value sa isang naibigay na hanay ng mga halaga at sa isang naibigay na hakbang sa pagbabago. Halimbawa, upang umulit sa mga elemento ng isang vector (array), kailangan mong ayusin ang isang counter mula 1 hanggang N na may isang hakbang na 1, kung saan ang N ay ang bilang ng mga elemento ng vector. Upang kalkulahin ang kabuuan ng serye, ang isang counter mula a hanggang b ay tinukoy din kasama ang kinakailangang hakbang ng pagbabago. At iba pa. Dahil sa ang katunayan na ang mga naturang gawain ay madalas na nakatagpo sa pagsasanay sa programming, isang para sa loop operator ay iminungkahi para sa kanilang pagpapatupad, na ginagawang mas madali at mas visual na ipatupad ang isang loop na may isang counter.

Ang syntax ng para sa loop operator ay ang mga sumusunod:

para sa<счетчик> = <начальное значение>:<шаг>:<конечное значение>
<операторы цикла>
wakas

Isaalang-alang natin ang pagpapatakbo ng cycle na ito gamit ang halimbawa ng pagpapatupad ng isang algorithm para sa paghahanap ng maximum na halaga ng isang elemento sa isang vector:

a = ;
m = a(1); % kasalukuyang maximum na halaga
para sa i=1:length(a) % loop mula 1 hanggang sa dulo ng vector c
% sa mga hakbang ng 1 (default)
kung m< a(i) % если a(i) >m,
m = a(i); % pagkatapos m = a(i)
wakas
dulo % dulo ng para sa loop
disp(m);

Sa halimbawang ito, itinatakda ng for loop ang counter i at binabago ang value nito mula 1 hanggang 10 sa mga hakbang ng 1. Tandaan na kung ang laki ng hakbang ay hindi tahasang tinukoy, ito ay kinuha bilang default bilang 1.

Sa susunod na halimbawa, isasaalang-alang namin ang pagpapatupad ng algorithm para sa paglilipat ng mga elemento ng vector sa kanan, i.e. ang penultimate elemento ay inilalagay sa lugar ng huli, ang susunod sa lugar ng penultimate, atbp. sa unang elemento:

a = ;
disp(a);
para sa i=length(a):-1:2 % cycle mula 10 hanggang 2 na may hakbang -1
a(i)=a(i-1); % shift ang mga elemento ng vector a
dulo % dulo ng para sa loop
disp(a);

Resulta ng programa

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

Ang halimbawa sa itaas ay nagpapakita na upang ipatupad ang isang loop na may isang counter mula sa isang mas malaking halaga sa isang mas maliit na isa, kailangan mong tahasang tukuyin ang hakbang, sa kasong ito, -1. Kung hindi ito nagawa, ang loop ay agad na magwawakas at ang programa ay hindi gagana nang tama.

Mga solusyon sa equation

Kagawaran: Information Technologies

PROGRAMMING INMATLAB


Mga operatorMATLAB

· Mga pahayag ng loop

Ikotpara sa

Syntax

para sa count=start:step:final

Mga utos ng MATLAB

Paglalarawan

count – loop variable,

simula - ang paunang halaga nito,

pangwakas - ang huling halaga nito,

hakbang – hakbang kung saan tumataas ang bilang sa bawat kasunod na pagpasok sa loop

ang loop ay nagtatapos sa sandaling ang halaga ng bilang ay naging mas malaki kaysa sa pangwakas.

Halimbawa

Hayaang kailanganin na makakuha ng isang pamilya ng mga kurba para sa x€, na tinukoy ng isang function depende sa parameter

y (x, a) = e -ax sin x,

para sa parameter isang halaga mula -0.1 hanggang 0.1. Nasa ibaba ang isang listahan ng file ng programa para sa pagpapakita ng isang pamilya ng mga kurba.

Listahan ng programa

x = ;

para sa isang = -0.1:0.02:0.1

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

Bilang resulta ng pagpapatupad ng programa, lalabas ang isang graphic na window na naglalaman ng kinakailangang pamilya ng mga curve.

Ikothabang

Syntax

habang kondisyon ng loop

Mga utos ng MATLAB

Paglalarawan

Gumagana ang loop hangga't totoo ang kundisyon ng loop. Upang itakda ang kundisyon ng pagpapatupad ng loop, pinapayagan ang mga sumusunod na pagpapatakbong may kaugnayan:

Ang pagtatakda ng mas kumplikadong mga kondisyon ay ginagawa gamit ang mga lohikal na operator. Ang mga lohikal na operator ay ibinigay sa sumusunod na talahanayan


Halimbawa

Mga Operator ng Sangay

May kondisyong operatorkung

Syntax

kung kondisyon

Mga utos ng MATLAB

Paglalarawan

Kung totoo ang kundisyon, ang mga utos ng MATLAB na inilagay sa pagitan ng if at end ay isasagawa, at kung ang kundisyon ay hindi totoo, ang mga command na matatagpuan pagkatapos ng dulo ay isasagawa.

Halimbawa

May kondisyong operatorelseif

Syntax

kung kondisyon1

ibang kundisyon2

………………………

ibang kundisyon

Paglalarawan

Depende sa katuparan ng isang partikular na kundisyon, ang kaukulang sangay ng programa ay tumatakbo kung ang lahat ng mga kundisyon ay mali, pagkatapos ay ang mga utos na inilagay pagkatapos ng iba ay ipapatupad.

Halimbawa

Operatorlumipat

Syntax

lumipat ng variable

halaga ng kaso1

halaga ng kaso2

……………………

kaso meaning


Ang bawat sangay ay tinutukoy ng isang case statement at ipinasok kapag kinuha ng switch statement variable ang value na tinukoy pagkatapos ng case o isa sa mga value mula sa case list. Pagkatapos isagawa ang alinman sa mga sangay, lalabas ang switch, at ang mga halagang tinukoy sa ibang mga kaso ay hindi na susuriin. Kung walang nahanap na angkop na mga halaga para sa variable, ang sangay ng programa na naaayon sa kung hindi man ay isasagawa.

Halimbawa

Mga pagkagambala sa pag-ikot. Mga pambihirang sitwasyon.

Operatorbreak

Syntax

Ang operator ng break ay ginagamit upang ayusin ang mga cyclic na kalkulasyon: para sa…wakas, habang…wakas. Kapag natugunan ang kondisyon

kung kondisyon

Ang pahayag ng break ay nagtatapos sa loop (para sa o habang) at ang mga pahayag na matatagpuan sa mga linya sa susunod na dulo ay isinasagawa. Sa kaso ng mga nested loop, ang break ay lumabas sa panloob na loop.

Exception handling, operatorsubukanmahuli

Syntax

mga pahayag na ang pagpapatupad

maaaring humantong sa isang pagkakamali

mga pahayag na isasagawa

kapag may naganap na error sa block

sa pagitan ng try and catch

Paglalarawan

Binibigyang-daan ka ng try...catch construct na i-bypass ang mga sitwasyon ng exception (mga error na humahantong sa pagwawakas ng program, halimbawa, pag-access sa isang hindi umiiral na file) at magsagawa ng ilang aksyon kung mangyari ang mga ito.

Halimbawa

Mga function ng serbisyo

disp naglalabas ng teksto o ang halaga ng isang variable sa command window

input– humihiling ng input mula sa keyboard. Ginagamit kapag gumagawa ng mga application na may interface ng command line.

eval nagpapatupad ng mga nilalaman ng isang string o string variable, tulad ng mga utos ng MATLAB

malinaw– tinatanggal ang mga variable sa kapaligiran ng trabaho.

Salc– nililinis ang command window

Higit pang impormasyon tungkol sa mga ito at iba pang mga function ay matatagpuan sa pamamagitan ng pagtakbo sa command line

tulongfunction_name


Mga gawain sa laboratoryo

Ang bilang ng isang partikular na opsyon sa pagtatalaga ay tinutukoy ng guro.

Gawain Blg. 1

Ang gawaing ito ay nagsasangkot ng paghahanap ng algebraic interpolation polynomial ng degree n para sa isang tiyak na hanay ng data: Si Pn(x) .

Layunin ng gawain:

Kinakailangan na lumikha ng isang programa para sa pagkalkula ng mga coefficient ng isang algebraic interpolation polynomial Si Pn(x)= a 0 + a 1 x+ … + isang n x n.

Mga Alituntunin:

0 1 2 3

Xi

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

Odds a 0 , a 1 , …, isang n ay tinutukoy mula sa paglutas ng sistema ng mga equation:

Dito n– pagkakasunud-sunod ng interpolation polynomial,

n+1 – bilang ng ibinigay na mga pares ng puntos ( x, y),

a 0 , a 1 ,… isang n– ang mga kinakailangang coefficient ng polynomial Si Pn(x)= a 0 + a 1 x+ … + isang n x n).

Mga kinakailangan sa programa

· Itakda ang mga hangganan ng segment , kung saan itinayo ang interpolation polynomial P(x)

· Itakda n– ang bilang ng mga interpolation segment (o, ano ang pareho, ang antas ng polynomial)

Tandaan: x0, xn, n ipinasok mula sa keyboard.

· Upang makakuha ng paunang datos (x, y)(bilang ng mga pares ng puntos (x i, y i), kung saan nabuo ang interpolation polynomial P(x)n1=n+1) magbigay ng:

ü Pagpasok ng mga node na random na matatagpuan x i, i=0, n mula sa keyboard

ü Pagkalkula ng mga node x i , i=0, n, naaayon sa pare-parehong pagkakaayos ng argumento x sa segment

ü Sa mga talata. 1.2 mga halaga y i , i=0, n alinman ang ipinasok mula sa keyboard (kung hindi alam ang source function) o kinakalkula mula sa isang ibinigay na function f(x). Ang expression na tumutukoy sa function ay ipinasok mula sa keyboard at dapat sumunod sa mga patakaran para sa pagsulat ng mga expression sa MATLAB

ü Pagpasok ng data ( x i, y i, i=0, n) mula sa file

· Lutasin ang isang sistema ng mga equation upang matukoy ang mga coefficient ng polynomial P(x)

· Bumuo ng mga graph ng orihinal na tabular function at ang polynomial P(x)

· Kung ang source data ay ibinigay bilang isang function f(x), i-plot ang interpolation error /f(x) – P(x)/. Kalkulahin ang maximum absolute value ng interpolation error sa isang naibigay na agwat.


Gawain Blg. 2

Spline interpolation

Layunin ng gawain:

Kinakailangan na lumikha ng isang programa para sa pagkalkula ng mga coefficient at pagbuo ng isang spline function na S(x), "nakadikit" mula sa mga piraso ng 3rd order polynomials S i(x), na mayroong espesyal na form ng pag-record:

function S i(x) tinukoy sa segment,

Mga kinakailangan sa programa

Kapag nagsasagawa ng gawaing ito kailangan mong:

· Itakda ang mga hangganan ng segment kung saan itinayo ang spline function na S(x).

· Itakda ang n – ang bilang ng mga interpolation segment, sa bawat isa kung saan ang cubic polynomial Si(x) ay itinayo.

· Tandaan: x0, xn, n ay ipinasok mula sa keyboard.

· Ayusin ang input ng paunang data (x, y) (ang bilang ng mga pares ng mga puntos (xi, yi) kung saan nabuo ang spline function na S(x), n1=n+1), na nagbibigay ng:

ü Ang pagpasok ng mga node na random na matatagpuan xi, i=0, n mula sa keyboard

ü Pagkalkula ng mga node xi, i=0, n, na tumutugma sa pare-parehong lokasyon ng argumento x sa segment

ü Sa mga talata. 1,2 ang mga halaga ng yi, i=0, n ay maaaring ipinasok mula sa keyboard (kung ang orihinal na function ay hindi kilala) o kinakalkula mula sa isang ibinigay na function f(x). Ang expression na tumutukoy sa function ay ipinasok mula sa keyboard at dapat sumunod sa mga patakaran para sa pagsulat ng mga expression sa MATLAB

ü Pagpasok ng data (xi, yi, i=0, n) mula sa file

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

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

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

· Upang matukoy ang mga coefficient ng isang natural na cubic spline (mga kondisyon ng hangganan 1), kinakailangan upang malutas ang sumusunod na sistema ng mga equation:

Coefficients σ 0 =0,σ n =0

· Bumuo ng mga graph ng orihinal na function at spline function para sa lahat ng tatlong uri ng kundisyon ng hangganan.

· Bumuo ng mga graph ng mga function ng error sa interpolation ng spline f(x) – S(x) para sa lahat ng tatlong uri ng kundisyon ng hangganan.

Tandaan:

Sa MATLAB, ang mga index ng one-dimensional at two-dimensional array ay nagsisimula sa 1, hindi mula sa 0. Isaalang-alang ito kapag bumubuo ng programa.


Gawain Blg. 3

Approximation ng function gamit ang least squares method (LSM).

Kasama sa gawaing ito ang paghahanap ng approximating function (isang polynomial ng degree m) para sa isang tiyak na hanay ng data, na binuo ng least squares method (LSM).

Layunin ng gawain:

Kinakailangan na lumikha ng isang programa para sa paghahanap ng mga coefficient ng polynomial φ (x)= a 0 + a 1 * x+… isang n * x m paraan ng least squares.

Hayaan, halimbawa, magkaroon ng sumusunod na hanay ng data:

Xi

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

Ang paghahanap para sa mga kinakailangang coefficient ay isinasagawa tulad ng sumusunod:

saan n - bilang ng mga puntos ( x, y),

m – antas ng kinakailangang polynomial,

a 0 , a 1 , …, isang m - ang mga kinakailangang coefficient ( φ ( x )= a 0 + a 1 x + … + isang m x m ).

Mga kinakailangan sa programa

Kapag nagsasagawa ng gawaing ito kailangan mong:

· Itakda ang mga hangganan ng segment kung saan itinayo ang approximating function φ(x)=a0+a1*x+... isang * xm

· Itakda ang m – antas ng polynomial

· Tandaan: x1, xn, m ay ipinasok mula sa keyboard.

· Upang makuha ang inisyal na data (x, y), kung saan nabuo ang approximating function na φ(x)=a0+a1*x+… an* x m, ibigay ang:

ü Ang pagpasok ng mga node na random na matatagpuan xi, i=1, n mula sa keyboard

ü Pagkalkula ng mga node xi, i=1, n, na tumutugma sa pare-parehong lokasyon ng argumento x sa segment

ü Sa mga talata. 1,2 ang mga halaga ng yi, i=1, n ay maaaring ipinasok mula sa keyboard (kung ang orihinal na function ay hindi kilala) o kinakalkula mula sa isang ibinigay na function f(x). Ang expression na tumutukoy sa function ay ipinasok mula sa keyboard at dapat sumunod sa mga patakaran para sa pagsulat ng mga expression sa MATLAB

ü Data input (xi, yi, i=1, n) mula sa file

· Lutasin ang sistema ng mga equation upang matukoy ang mga coefficient ng polynomial φ(x)

· Bumuo ng mga graph ng orihinal na tabular function at ang polynomial φ(x)

· Kung ang source data ay ibinigay bilang isang function f(x), i-plot ang interpolation error /f(x) – φ(x)/. Kalkulahin ang maximum absolute value ng interpolation error sa isang naibigay na agwat.

Kapag nagsasagawa ng huling punto sa segment kumuha ng hindi bababa sa 500 puntos para sa mga kalkulasyon


Mga kinakailangan para sa gawaing laboratoryo

Ang ulat ay dapat maglaman ng:

1. Paglalahad ng suliranin

2. Teksto ng programa

3. Mga resulta ng pagsusulit

Tandaan na ang mga teksto ng programa ay dapat na may mga komento.


1. Anufriev I.E. Manwal sa pagtuturo sa sarili Matlab 5.3/6.x – St. Petersburg: BHV-Petersburg, 2003. – 736 pp.: ill.

2. V.P. Dyakonov MATLAB 6.5 SPI/7 + Simulink 5/6 sa matematika at pagmomodelo. Serye "Propesyonal na Aklatan". – 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.: may sakit.

Ipinapalagay ng mga loop sa matlab na dapat ang isang command o grupo ng mga command
ulitin ng ilang beses.

Ang pinakamadaling paraan upang lumikha ng isang loop ay ang paggamit
para sa pagpapahayag Nasa ibaba ang isang simpleng halimbawa kung saan ang 10 ay kinakalkula at ipinapakita! = 10 * 9 * 8 ... * 2 * 1.

f = 1;
para sa n =2:10
f = f*n;
wakas

f =
3628800

Ang isang loop sa Matlab ay nagsisimula sa isang for expression at nagtatapos sa isang end expression. Koponan
sa pagitan ng mga expression na ito ay isinasagawa ng kabuuang siyam na beses, isang beses para sa bawat isa
n mga halaga mula 2 hanggang 10. Upang matakpan ang intermediate na output sa loob ng loop, kami
gumamit ng semicolon. Upang makita ang huling resulta, kailangan mo
ipasok ang f pagkatapos makumpleto ang loop. Kung hindi ka gumagamit ng semicolon, ang program
Ipapakita ng MATLAB ang bawat intermediate na halaga 2!, 3!, atbp.

Sa module ng Editor, awtomatikong na-highlight ang mga command para sa at tapusin
sa asul. Nagbibigay ito ng mas mahusay na pagiging madaling mabasa kung ipasok mo sa pagitan
utos nila (kung paano namin ito ginawa); ginagawa ito ng module ng Editor
awtomatiko. Kung pumasok ka para sa Command Window,
Ang MATLAB ay hindi maglalabas ng bagong >> command prompt hanggang sa iyo
ipasok ang end command, na magiging sanhi ng MATLAB program upang makumpleto ang loop at
ay magpapakita ng bagong command prompt.

  • Kung gagamit ka ng loop sa isang M-file script na may echo on display effect, ang mga command ay ie-echo sa bawat oras sa buong loop. Maiiwasan mo ito sa pamamagitan ng paglalagay ng echo off command bago mismo ang end statement at echo on command pagkatapos nito; pagkatapos ang bawat utos sa loop ay makikita ng isang beses (maliban sa dulo).

Tandaan: may tatlong uri ng mga loop sa matlab, na ibinigay sa ibaba

1. Para sa loop sa Matlab

a=0;
para sa i=1:10
a=a+1;
wakas

2. Habang ang loop sa Matlab

a=0;
habang a<10
a=a+1;
wakas

3. Kung loop sa Matlab

a=10;
kung a==10
"unang kaso"
iba pa
"pangalawang kaso"
wakas

ans =
unang kaso

Samakatuwid, mula sa itaas, maaari naming tapusin na kailangan mong tumingin sa maraming karagdagang impormasyon at mga alternatibo!


Kagawaran: Information Technologies

PROGRAMMING INMATLAB


Mga operatorMATLAB

· Mga pahayag ng loop

Ikotpara sa

Syntax

para sa count=start:step:final

Mga utos ng MATLAB

Paglalarawan

count – loop variable,

simula - ang paunang halaga nito,

pangwakas - ang huling halaga nito,

hakbang – hakbang kung saan tumataas ang bilang sa bawat kasunod na pagpasok sa loop

ang loop ay nagtatapos sa sandaling ang halaga ng bilang ay naging mas malaki kaysa sa pangwakas.

Halimbawa

Hayaang kailanganin na makakuha ng isang pamilya ng mga kurba para sa x€, na tinukoy ng isang function depende sa parameter

y (x, a) = e -ax sin x,

para sa parameter isang halaga mula -0.1 hanggang 0.1. Nasa ibaba ang isang listahan ng file ng programa para sa pagpapakita ng isang pamilya ng mga kurba.

Listahan ng programa

x = ;

para sa isang = -0.1:0.02:0.1

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

Bilang resulta ng pagpapatupad ng programa, lilitaw ang isang graphic na window na naglalaman ng kinakailangang pamilya ng mga kurba.

Ikothabang

Syntax

habang kondisyon ng loop

Mga utos ng MATLAB

Paglalarawan

Gumagana ang loop hangga't totoo ang kundisyon ng loop. Upang itakda ang kundisyon ng pagpapatupad ng loop, pinapayagan ang mga sumusunod na pagpapatakbong may kaugnayan:

Ang pagtatakda ng mas kumplikadong mga kondisyon ay ginagawa gamit ang mga lohikal na operator. Ang mga lohikal na operator ay ibinigay sa sumusunod na talahanayan


Halimbawa

Mga Operator ng Sangay

May kondisyong operatorkung

Syntax

kung kondisyon

Mga utos ng MATLAB

Paglalarawan

Kung totoo ang kundisyon, ang mga utos ng MATLAB na matatagpuan sa pagitan ng kung at dulo ay isasagawa, at kung ang kundisyon ay hindi totoo, ang mga utos na matatagpuan pagkatapos ng dulo ay isasagawa.

Halimbawa

May kondisyong operatorelseif

Syntax

kung kondisyon1

ibang kundisyon2

………………………

ibang kundisyon

Paglalarawan

Depende sa katuparan ng isang partikular na kundisyon, ang kaukulang sangay ng programa ay tumatakbo kung ang lahat ng mga kundisyon ay mali, pagkatapos ay ang mga utos na inilagay pagkatapos ng iba ay ipapatupad.

Halimbawa

Operatorlumipat

Syntax

lumipat ng variable

halaga ng kaso1

halaga ng kaso2

……………………

casemeaningn


Ang bawat sangay ay tinutukoy ng isang case statement at ipinasok kapag kinuha ng switch statement variable ang value na tinukoy pagkatapos ng case o isa sa mga value mula sa case list. Pagkatapos isagawa ang alinman sa mga sangay, lalabas ang switch, at ang mga halagang tinukoy sa ibang mga kaso ay hindi na susuriin. Kung walang nahanap na angkop na mga halaga para sa variable, ang sangay ng programa na naaayon sa kung hindi man ay isasagawa.

Halimbawa

Mga pagkagambala sa pag-ikot. Mga pambihirang sitwasyon.

Operatorbreak

Syntax

Ang operator ng break ay ginagamit upang ayusin ang mga cyclic na kalkulasyon: para sa…wakas, habang…wakas. Kapag natugunan ang kondisyon

kung kondisyon

Ang pahayag ng break ay nagtatapos sa loop (para sa o habang) at ang mga pahayag na matatagpuan sa mga linya sa susunod na dulo ay isinasagawa. Sa kaso ng mga nested loop, ang break ay lumabas sa panloob na loop.

Exception handling, operatorsubukanmahuli

Syntax

mga pahayag na ang pagpapatupad

maaaring humantong sa isang pagkakamali

mga pahayag na isasagawa

kapag may naganap na error sa block

sa pagitan ng try and catch

Paglalarawan

Binibigyang-daan ka ng try...catch construct na i-bypass ang mga sitwasyon ng exception (mga error na humahantong sa pagwawakas ng program, halimbawa, pag-access sa isang hindi umiiral na file) at magsagawa ng ilang aksyon kung mangyari ang mga ito.

Halimbawa

Mga function ng serbisyo

disp naglalabas ng teksto o ang halaga ng isang variable sa command window

input– humihiling ng input mula sa keyboard. Ginagamit kapag gumagawa ng mga application na may interface ng command line.

eval nagpapatupad ng mga nilalaman ng isang string o string variable, tulad ng mga utos ng MATLAB

malinaw– tinatanggal ang mga variable sa kapaligiran ng trabaho.

Salc– nililinis ang command window

Higit pang impormasyon tungkol sa mga ito at iba pang mga function ay matatagpuan sa pamamagitan ng pagtakbo sa command line

tulongfunction_name

Mga gawain sa laboratoryo

Ang bilang ng isang partikular na opsyon sa pagtatalaga ay tinutukoy ng guro.

Gawain Blg. 1

Ang gawaing ito ay nagsasangkot ng paghahanap ng algebraic interpolation polynomial ng degree n para sa isang tiyak na hanay ng data: Si Pn(x) .

Layunin ng gawain:

Kinakailangan na lumikha ng isang programa para sa pagkalkula ng mga coefficient ng isang algebraic interpolation polynomial Si Pn(x)= a 0 + a 1 x+ … + isang n x n.

Mga Alituntunin:

Hayaan, halimbawa, magkaroon ng sumusunod na hanay ng data:

i 0 1 2 3
Xi 1,2 1,4 1,6 1,8
y i 8,3893 8,6251 8,9286 8,9703

Odds a 0 , a 1 , …, isang n ay tinutukoy mula sa paglutas ng sistema ng mga equation:

Dito n– pagkakasunud-sunod ng interpolation polynomial,

n+1 – bilang ng ibinigay na mga pares ng puntos ( x, y),

a 0 , a 1 ,… isang n– ang mga kinakailangang coefficient ng polynomial Si Pn(x)= a 0 + a 1 x+ … + isang n x n).

Mga kinakailangan sa programa

· Itakda ang mga hangganan ng segment , kung saan itinayo ang interpolation polynomial P(x)

· Itakda n– ang bilang ng mga interpolation segment (o, ano ang pareho, ang antas ng polynomial)

Tandaan: x0, xn, n ipinasok mula sa keyboard.

· Upang makakuha ng paunang datos (x, y)(bilang ng mga pares ng puntos (x i, y i), kung saan nabuo ang interpolation polynomial P(x)n1=n+1) magbigay ng:

Pagpasok ng mga random na node x i, i=0, n mula sa keyboard

Pagkalkula ng node x i , i=0, n, naaayon sa pare-parehong pagkakaayos ng argumento x sa segment

Sa mga talata 1.2 mga halaga y i , i=0, n alinman ang ipinasok mula sa keyboard (kung hindi alam ang source function) o kinakalkula mula sa isang ibinigay na function f(x). Ang expression na tumutukoy sa function ay ipinasok mula sa keyboard at dapat sumunod sa mga patakaran para sa pagsulat ng mga expression sa MATLAB

Pagpasok ng data ( x i, y i, i=0, n) mula sa file

· Lutasin ang isang sistema ng mga equation upang matukoy ang mga coefficient ng polynomial P(x)

· Bumuo ng mga graph ng orihinal na tabular function at ang polynomial P(x)

· Kung ang source data ay ibinigay bilang isang function f(x), i-plot ang interpolation error /f(x) – P(x)/. Kalkulahin ang maximum absolute value ng interpolation error sa isang naibigay na agwat.

Kapag nagsasagawa ng huling punto sa segment kumuha ng hindi bababa sa 500 puntos para sa mga kalkulasyon

Gawain Blg. 2

Spline interpolation

Layunin ng gawain:

Kinakailangan na lumikha ng isang programa para sa pagkalkula ng mga coefficient at pagbuo ng isang spline function na S(x), "nakadikit" mula sa mga piraso ng 3rd order polynomials S i(x), na mayroong espesyal na form ng pag-record:

,

function S i(x) tinukoy sa segment,

Mga kinakailangan sa programa

Kapag nagsasagawa ng gawaing ito kailangan mong:

· Itakda ang mga hangganan ng segment kung saan itinayo ang spline function na S(x).

· Itakda ang n – ang bilang ng mga interpolation segment, sa bawat isa kung saan ang cubic polynomial Si(x) ay itinayo.

· Tandaan: x0, xn, n ay ipinasok mula sa keyboard.

· Ayusin ang input ng paunang data (x, y) (ang bilang ng mga pares ng mga puntos (xi, yi) kung saan nabuo ang spline function na S(x), n1=n+1), na nagbibigay ng:

Ang pagpasok ng mga node na random na matatagpuan xi, i=0, n mula sa keyboard

Pagkalkula ng mga node xi, i=0, n, na tumutugma sa pare-parehong lokasyon ng argumento x sa segment

Sa mga talata 1,2 ang mga halaga ng yi, i=0, n ay maaaring ipinasok mula sa keyboard (kung ang orihinal na function ay hindi kilala) o kinakalkula mula sa isang ibinigay na function f(x). Ang expression na tumutukoy sa function ay ipinasok mula sa keyboard at dapat sumunod sa mga patakaran para sa pagsulat ng mga expression sa MATLAB

Paglalagay ng data (xi, yi, i=0, n) mula sa file

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

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

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

· Upang matukoy ang mga coefficient ng isang natural na cubic spline (mga kondisyon ng hangganan 1), kinakailangan upang malutas ang sumusunod na sistema ng mga equation:

Coefficients σ 0 =0,σ n =0

· Bumuo ng mga graph ng orihinal na function at spline function para sa lahat ng tatlong uri ng kundisyon ng hangganan.

· Bumuo ng mga graph ng mga function ng error sa interpolation ng spline f(x) – S(x) para sa lahat ng tatlong uri ng kundisyon ng hangganan.

Tandaan:

Sa MATLAB, ang mga index ng one-dimensional at two-dimensional array ay nagsisimula sa 1, hindi mula sa 0. Isaalang-alang ito kapag bumubuo ng programa.