Warunkowe oświadczenie, jeśli
W samym prosty przypadek składnia podany operator jeśli wygląda tak:
jeśli<выражение>
<операторы>
koniec
Zwracam uwagę na fakt, że w przeciwieństwie do współczesne języki programowanie nie używa czegoś takiego jak instrukcja złożona. Warunkowy blok instrukcji musi się kończyć oficjalne słowo koniec.
Poniżej znajduje się przykładowa implementacja funkcji sign(), która zwraca +1, jeśli liczba jest większa od zera, -1, jeśli liczba jest mniejsza od zera, i 0, jeśli liczba jest zerem:
x=5;
jeśli x > 0
disp(1);
koniec
jeśli x< 0
disp(-1);
koniec
jeśli x == 0
disp(0);
koniec
Analiza podanego przykładu pokazuje, że wszystkie te trzy warunki wzajemnie się wykluczają, tj. gdy jeden z nich zostanie uruchomiony, nie ma potrzeby sprawdzania pozostałych. Wdrożenie właśnie takiej logiki przyspieszy wykonanie programu. Można to osiągnąć za pomocą konstrukcji
jeśli<выражение>
<операторы1>% wykonywane, jeśli warunek jest spełniony
w przeciwnym razie
<операторы2>% wykonywane, jeśli warunek jest fałszywy
koniec
Wtedy powyższy przykład można zapisać w następujący sposób:
X=5;
jeśli x > 0
disp(1);
w przeciwnym razie
jeśli x< 0
disp(-1);
w przeciwnym razie
disp(0);
koniec
koniec
Ten program najpierw sprawdza, czy zmienna x jest dodatnia, a jeśli tak, to na ekranie wyświetlana jest wartość 1, a wszystkie inne warunki są ignorowane. Jeśli pierwszy warunek okazał się nieprawdziwy, to wykonanie programu przechodzi w przeciwnym razie (w przeciwnym razie) do drugiego warunku, w którym zmienna x jest sprawdzana pod kątem ujemności, a jeśli warunek jest spełniony, na ekran. Jeśli oba warunki są fałszywe, wyprowadzane jest 0.
Powyższy przykład można napisać w prostszej formie, używając innej konstrukcji instrukcji if z MatLaba:
jeśli<выражение1>
<операторы1>% wykonywane jeśli wyrażenie1 jest prawdziwe
elseif<выражение2>
<операторы2>% wykonywane jeśli wyrażenie2 jest prawdziwe
...
elseif<выражениеN>
<операторыN>% wykonywane jeśli wyrażenieN jest prawdziwe
koniec
i jest napisane w następujący sposób:
x=5;
jeśli x > 0
disp(1); % jest wykonywany, jeśli x > 0
elseif x< 0
disp(-1); % jest wykonywane, jeśli x< 0
w przeciwnym razie
disp(0); % jest wykonywany, jeśli x = 0
koniec
Za pomocą instrukcji if możesz przetestować bardziej złożone (złożone) warunki. Na przykład musisz określić: czy zmienna x mieści się w zakresie wartości od 0 do 2? Można to zrobić, sprawdzając jednocześnie dwa warunki: x >= 0 i x<=2. Если эти оба условия истинны, то x попадает в диапазон от 0 до 2.
Do implementacji warunków złożonych w MatLabie wykorzystywane są operatory logiczne:
& - logiczne AND
| - logiczne OR
~ - logiczne NIE
Spójrzmy na przykład użycia warunków złożonych. Niech będzie wymagane sprawdzenie, czy zmienna x znajduje się w przedziale od 0 do 2. Program będzie napisany w następujący sposób:
x = 1;
jeśli x >= 0 & x<= 2
w przeciwnym razie
koniec
W drugim przykładzie sprawdźmy, czy zmienna x nie należy do zakresu od 0 do 2. Osiąga się to poprzez wyzwolenie jednego z dwóch warunków: x< 0 или x > 2:
x = 1;
jeśli x< 0 | x > 2
disp("x nie należy do zakresu od 0 do 2");
w przeciwnym razie
disp("x jest w zakresie od 0 do 2");
koniec
Używając operatorów logicznych AND, OR, NOT, można tworzyć różne warunki złożone. Na przykład możesz sprawdzić, czy zmienna x jest w zakresie od -5 do 5, ale nie w zakresie od 0 do 1. Oczywiście można to zaimplementować w następujący sposób:
x = 1;
jeśli (x >= -5 & x<= 5) & (x < 0 | x > 1)
disp("x należy do [-5, 5], ale nie należy do ");
w przeciwnym razie
disp("x albo nie jest w [-5, 5] albo w ");
koniec
Zauważ, że w złożonym warunku złożonym zastosowano nawiasy. Faktem jest, że priorytet operacji AND jest wyższy niż priorytet operacji OR, a gdyby nie było nawiasów, to warunek wyglądałby tak: (x >= -5 i x<= 5 и x < 0) или x >1. Oczywiście taka kontrola dałaby inny wynik niż oczekiwano.
Nawiasy w programowaniu służą do zmiany kolejności wykonywania instrukcji. Tak jak operatory arytmetyczne, logiczne można również zmienić na życzenie programisty. Dzięki zastosowaniu nawiasów sprawdzanie odbywa się najpierw w ich wnętrzu, a następnie poza nimi. Dlatego w powyższym przykładzie są one niezbędne do osiągnięcia pożądanego rezultatu.
Priorytet operacje logiczne następny:
NOT (~) - najwyższy priorytet;
Oraz (&) - średni priorytet;
LUB (|) to najniższy priorytet.
instrukcja pętli while
Język programowania MatLab ma dwie instrukcje pętli: while i for. Za ich pomocą wykonuje się np. programowanie algorytmów rekurencyjnych, obliczanie sumy szeregu, wyliczanie elementów tablicy i wiele innych.
W najprostszym przypadku pętla w programie jest zorganizowana za pomocą instrukcji while, która ma następującą składnię:
podczas gdy<условие>
<операторы>
koniec
Tutaj<условие>oznacza wyrażenie warunkowe, takie jak użyte w instrukcji if, a pętla while działa, dopóki warunek jest spełniony.
Należy zwrócić uwagę na to, że jeśli warunek jest fałszywy przed rozpoczęciem pętli, to zawarte w pętli instrukcje nie zostaną wykonane ani razu.
Oto przykład pętli while do obliczania sumy serii:
i=1; % licznika całkowitego
podczas gdy ja<= 20 % цикл (работает пока i <= 20)
koniec % koniec pętli
disp(S); % wyświetlanej sumy 210 na ekranie
Teraz skomplikujemy zadanie i obliczymy sumę szeregu , while . Tutaj w instrukcji loop uzyskuje się dwa warunki: albo licznik dla i osiąga 20, albo wartość sumy S przekracza 20. Tę logikę można zaimplementować za pomocą złożonego wyrażenia warunkowego w instrukcji while loop:
S = 0; % wartości początkowej sumy
i=1; % licznika całkowitego
podczas gdy ja<= 20 & S <= 20 % цикл (работает пока i<=10 и S<=20
S=S+i; % zliczonej kwoty
i=i+1; % przyrostu licznika o 1
koniec % koniec pętli
Powyższy przykład pokazuje możliwość zastosowania warunków złożonych w pętli while. Ogólnie rzecz biorąc, jako wyrażenie warunkowe można zapisać te same warunki, co w instrukcji warunkowej if.
Praca dowolnego operatora pętli, w tym while, może zostać wymuszona za pomocą instrukcji break. Na przykład poprzedni program można przepisać w następujący sposób za pomocą instrukcji break:
S = 0; % wartości początkowej sumy
i=1; % licznika całkowitego
podczas gdy ja<= 20 % цикл (работает пока i<=10
S=S+i; % zliczonej kwoty
i=i+1; % przyrostu licznika o 1
jeśli S > 20% jeśli S > 20,
przerwanie; % wtedy pętla się kończy
koniec
koniec % koniec pętli
disp(S); % wyświetla sumę 21 na ekranie
W tym przykładzie drugi warunek zakończenia pętli, gdy S jest większe niż 20, jest zapisany w samej pętli i przy użyciu instrukcji break pętla jest wyprowadzana do funkcji disp() bezpośrednio po pętli while.
Drugi operator kontroli wykonania pętli kontynuuj pozwala pominąć wykonanie fragmentu programu po nim. Na przykład chcesz obliczyć sumę elementów tablicy
a = ;
wykluczając element o indeksie 5. Taki program można zapisać w następujący sposób:
S = 0; % wartości początkowej sumy
a = ; % tablicy
i=0; % liczba indeksów tablicy
podczas gdy ja< length(a) % цикл (работает пока i меньше
% długości tablicy a)
i=i+1; % zwiększa licznik indeksu o 1
jeśli i == 5% jeśli indeks wynosi 5
kontynuować; % to nie obliczamy tego
koniec
S=S+a(i); % suma zliczonych przedmiotów
koniec % koniec pętli
disp(S); % wyświetla sumę 40 na ekranie
Należy zauważyć, że w tym programie indeks tablicy i jest zwiększany przed sprawdzeniem warunku. Odbywa się to tak, że wartość indeksu wzrasta o 1 przy każdej iteracji pętli. Jeśli przyrost licznika i jest zapisany tak jak w poprzednich przykładach, tj. po obliczeniu sumy instrukcja continue spowoduje zatrzymanie jej wartości na 5, a pętla while będzie działać „w nieskończoność”.
instrukcja pętli for
Często przy organizacji pętli wymagane jest iterowanie wartości licznika w zadanym zakresie wartości i z zadanym krokiem zmiany. Na przykład, aby iterować po elementach wektora (tablicy), musisz zorganizować licznik od 1 do N z krokiem 1, gdzie N jest liczbą elementów w wektorze. Aby obliczyć sumę szeregu, określany jest również licznik od a do b z wymaganym krokiem zmiany kroku. I tak dalej. Ze względu na to, że takie zadania są często spotykane w praktyce programistycznej, do ich realizacji zaproponowano osobny operator for loop, co ułatwia i bardziej wizualną implementację pętli z licznikiem.
Składnia instrukcji pętli for jest następująca:
dla<счетчик> = <начальное значение>:<шаг>:<конечное значение>
<операторы цикла>
koniec
Rozważmy pracę tego cyklu na przykładzie implementacji algorytmu znajdowania maksymalnej wartości elementu w wektorze:
a = ;
m = a(1); % aktualna maksymalna wartość
dla i=1:length(a) % pętla od 1 do końca wektora c
% krok 1 (domyślny)
jeśli m< a(i) % если a(i) >m,
m = a(i); % wtedy m = a(i)
koniec
koniec % koniec pętli for
disp(m);
W tym przykładzie pętla for ustawia licznik i i zmienia jego wartość od 1 do 10 w przyrostach o 1. Należy zauważyć, że jeśli przyrost nie jest wyraźnie określony, domyślnie przyjmuje wartość 1.
W poniższym przykładzie rozważmy implementację algorytmu przesuwania elementów wektora w prawo, tj. przedostatni element jest umieszczany w miejsce ostatniego, następny jest umieszczany w miejscu przedostatniego i tak dalej. do pierwszego elementu:
a = ;
disp(a);
dla i=długość(a):-1:2 % pętla od 10 do 2 z krokiem -1
a(i)=a(i-1); % przesunięcie elementów wektora a
koniec % koniec pętli for
disp(a);
Wynik programu
3 6 5 3 6 9 5 3 1 0
3 3 6 5 3 6 9 5 3 1
Powyższy przykład pokazuje, że aby zaimplementować cykl z licznikiem od większej wartości do mniejszej, należy jawnie określić krok, w tym przypadku -1. Jeśli tego nie zrobisz, pętla natychmiast zakończy swoją pracę i program nie będzie działał poprawnie.
Rozwiązania równań
Petersburg: BHV-Petersburg, 2005. - 1104 s.
ISBN 5-94157-494-0
Ściągnij(link bezpośredni) :
matlab72005.pdf Poprzedni 1 .. 117 > .. >> Następny
podczas zapętlania warunku polecenia MATLAB
W tym przykładzie warunkiem powtórzenia cyklu jest to, że moduł bieżącego członu wynosi x2k~l/(2k+1)! więcej niż IO10. Aby wpisać warunek w formularzu,
rozumiane przez MATLAB, należy użyć znaku „>” (większe niż). Tekst funkcji plik-mysin, która oblicza sumę szeregu na podstawie relacji rekurencyjnej
k 2k(2k + \) k 1
pokazane w wykazie 7.7.
Uwaga ^
Oczywiście w ogólnym przypadku małość terminu jest pojęciem względnym, termin może być, powiedzmy, rzędu IO-10, ale sama suma jest tego samego rzędu. W takim przypadku warunek zakończenia sumy musi być inny, a mianowicie moduł stosunku bieżącego terminu do już skumulowanej części sumy musi być mały. Na razie nie będziemy zwracać na to uwagi – naszym zadaniem jest badanie pracy z cyklami.
Listing 7.7. Funkcja plikowa mysin, która oblicza sinus przez rozwinięcie szeregu
funkcja s - mysin(x)
"% Obliczanie sinusa przez rozwinięcie szeregu"
% Użycie: y=mysin[x), -pi< х < piГлава 7. Управляющие конструкции языка программирова ни я
Ї obliczenie pierwszego członu sumy dla k \u003d O k \u003d 0; ich;
% obliczenia zmiennej pomocniczej x2 - x*x;
natomiast abs(u) > 1.Oe-IO k = k + 1; u \u003d -u * x2 / (2 * k) / (2 * k + 1)
Zwróć uwagę, że pętla while w przeciwieństwie do for nie ma zmiennej pętli, więc konieczne było przypisanie jednej do pętli przed pętlą i zwiększenie k o jeden wewnątrz pętli.
Teraz porównaj wynik, wykreślając funkcje mysin i sin na przedziale [-l, i] Fia na tych samych osiach, na przykład za pomocą fplot (polecenia można ustawić z wiersza poleceń): „fplot (@rnysin, [- pi, pi])" poczekaj
» fplot(@sin, t-pii pi]і "k.")
Ryż. 7.3. Porównanie mysin i sin360_________ Część II. Obliczenia i programowanie
Otrzymane wykresy pokazano na ryc. 7.3, świadczą o poprawnym działaniu funkcji pliku mysin.
Warunek pętli while może zawierać wyrażenie logiczne złożone z operatorów relacyjnych i operatorów logicznych lub operatorów. Aby ustawić warunek powtórzenia cyklu, należy wykonać operacje relacji podane w tabeli. 7.1.
Tabela 7.1. operacje relacyjne
Notacja Relacja operacji
== Równość
< Меньше
<= Меньше или равно
>= Większe lub równe
Nie równe
Bardziej złożone warunki są określane za pomocą operatorów logicznych lub operacji. Na przykład warunek -1<.г<2 состоит в одновременном выполнении неравенства а>-1 i x<2 и записывается при помощи логического оператора and
i(x >= -1, X< 2)
lub równoważnie za pomocą operacji logicznej "i" - &
(x >= -1) & (x< 2)
Główne operacje logiczne i operatory oraz przykłady ich zapisu podano w tabeli. 7.2 (wyrażenia logiczne są szczegółowo opisane w sekcji „Operacje logiczne na liczbach i tablicach” tego rozdziału).
Tabela 7.2. Wyrażenia logiczne
Typ wyrażenia Wyrażenie Operator logiczny Operacja logiczna
Logiczne „i” A*<3 И к=4 and (х < 3, k==4) (х<3) s (k = 4)
Logiczne „lub” X = Ї lub 2 lub (x == 1, X= 2) (x == 1) I (x == 2)
Negowanie „nie” a * 1,9 nie (a == 1,9) - (a == 1,9)
^ Uwaga ^
Operatory not, i, i lub są funkcjami, które zwracają prawdę (jedynkę logiczną) lub fałsz (logiczne zero). Każde wyrażenie logiczne przyjmuje te same wartości.
Przy obliczaniu sumy szeregu nieskończonego sensowne jest ograniczenie liczby terminów. Jeśli szereg jest rozbieżny, ponieważ jego człony nie dążą do zera, wówczas warunek małości bieżącego członu może nigdy nie zostać spełniony i program zapętli się. Wykonaj sumowanie, ograniczając liczbę terminów. Dodaj limit liczby terminów w warunku pętli while pliku funkcji mysin (patrz Listing 7-6):
(abs(u) > 1.Oe-IO) & (do<= 100000) или в эквивалентной форме:
oraz
^ Uwaga ^
Aby określić kolejność wykonywania operacji logicznych należy użyć nawiasów (więcej o operatorach logicznych i operacjach logicznych oraz możliwości ich zastosowania do tablic patrz
ust. „Wyrażenia logiczne z tablicami i liczbami” tego rozdziału).
Podczas programowania algorytmów, oprócz organizowania powtarzalnych akcji w postaci cykli, często konieczne jest wykonanie jednego lub drugiego bloku poleceń w zależności od określonych warunków, tj. użyj algorytmu rozgałęziania.
Operatorzy oddziałów
Instrukcja warunkowa if i instrukcja switch umożliwiają utworzenie elastycznego algorytmu rozgałęziania, w którym po spełnieniu określonych warunków wykonywany jest odpowiedni blok instrukcji lub poleceń MATLAB. Prawie wszystkie języki programowania mają podobne operatory.
Warunkowe oświadczenie, jeśli
Instrukcja if może być używana w swojej prostej formie, do wykonania bloku poleceń, gdy spełniony jest jakiś warunek, lub w konstrukcji if-eiseif-eise do pisania algorytmów rozgałęziających.362
Część druga. Obliczenia i programowanie
Walidacja argumentu wejściowego
Zacznijmy od najprostszego przykładu - utwórz plik funkcji do obliczenia
Oprócz programów z struktura liniowa, których instrukcje są wykonywane ściśle po kolei, istnieje wiele algorytmów, których struktura nieliniowy. W tym przypadku sekwencja elementów algorytmów może być wykonywana w zależności od określonych warunków, czasem ze skończoną liczbą powtórzeń - cykli regularnych, czasem w postaci cykli kończących się po spełnieniu danego warunku. Prawie każdy poważny program ma strukturę nieliniową. Do tworzenia takich programów potrzebne są specjalne struktury kontrolne. Są dostępne w dowolnym języku programowania wysokiego poziomu, w szczególności w Matlab.
Rozważ operatorów m-pliki o szczegóły.
operator przypisania. Główny operator systemu programowania Matlab jest operator przypisania, który ma następującą strukturę:
Nazwa zmiennej= wyrażenie
Operator służy do identyfikacji zmiennych i jest oznaczony symbolem = , po lewej stronie znajduje się nazwa zmiennej, a po prawej wyrażenie arytmetyczne lub łańcuchowe (zasady pisania wyrażeń arytmetycznych i łańcuchowych zostały omówione w rozdziale 1.1.2). Oto kilka przykładów operatorów przypisania (rys. 1.3.4-1).
Ryż. 1.3.4-1. Przykłady deklaracji przypisania
Wszystkie zmienne używane po prawej stronie instrukcji przypisania muszą być wstępnie zdefiniowane. Jeśli wiersz poleceń kończy się średnikiem ( ; ), to wynik instrukcji nie jest wyświetlany, w przeciwnym razie jest wyświetlany w następnym wierszu okna poleceń. Uwaga ta dotyczy również wykonywania oświadczeń cesji znajdujących się w: m-akta.
Operatory wprowadzania danych. Wprowadzanie danych w Matlabie można wykonać zarówno za pomocą operatora przypisania ( a=5;) oraz za pomocą funkcji wprowadzania z klawiatury:
Nazwa zmiennej=wejście("Żądanie");
Ta funkcja wprowadza wyrażenie z klawiatury, a wynik jest przechowywany w zmiennej o nazwie a. W poniższym przykładzie do zmiennej a najpierw wprowadzana jest wartość liczbowa, a następnie wyrażenie liczbowe (rys. 1.3.4-2).
Ryż. 1.3.4-3. Ocena wyrażenia podanego w formie symbolicznej
Oświadczenie warunkowe, jeśli... koniec. Operator warunkowy jeśli w ogólna perspektywa jest napisane w następujący sposób:
jeśliWyrażenie logiczne1
Instrukcje1
innelfWarunek 2
Wyrażenie logiczne2
Wyrażenie logiczne3
Zasady pisania wyrażeń logicznych zostały opisane w Temacie 1.1.
Taka konstrukcja pozwala na kilka konkretnych wariantów. Najprostszy - ścięty widły [x] ma następującą postać:
jeśliWyrażenie logiczne
Instrukcje
Przypomnij sobie, jeśli Wyrażenie logiczne zwraca wartość logiczną 1 (tj. „Prawda”) są wykonywane Instrukcje, stanowiący korpus konstrukcji jeśli... koniec. Jednocześnie operator koniec oznacza koniec listy instrukcji. Instrukcje na liście są oddzielone przecinkiem lub średnikiem. Jeśli Wyrażenie logiczne niewykonane (daje wartość logiczną 0 , „Fałsz”), to Instrukcje nie są również wykonywane.
Poniżej przykład użycia najprostszej gałęzi okrojonej, zaimplementowanej przy użyciu operatora jeśli(Rys. 1.3.4-4).
Ryż. 1.3.4-5. Przykład standardowego oddziału
Z powyższego przykładu widać, że operator jeśli Może być w jednej lub kilku liniach.
Rozważ bardziej złożony przykład - zagnieżdżona gałąź. Rozważ przykład
ponadto, aby w pełni oddać strukturę złożonego rozgałęzienia, nie przejmując się przenoszeniem długich linii poleceń, stosujemy m-funkcja (rys. 1.3.4-7). Wybierzmy dane, aby sprawdzić główną gałąź i przejdźmy do funkcji raz() z różnymi danymi początkowymi (rys. 1.3.4-6).
Ryż. 1.3.4-7. Funkcja implementująca zagnieżdżoną gałąź
Operatorem wielokrotnego wyboru jest przełącznik. Aby zaimplementować wielokrotny wybór, stosuje się następującą konstrukcję przełączniki:
przełącznikWyrażenie
walizkaCzytanie_1
List_instructions_1
walizkawartość_2
List_instructions_2
walizkaWartość_N
Instrukcja_Lista_N
Inaczej
Lista_instrukcji_N+1
Jeśli wyrażenie po nagłówku przełącznik ma wartość jednego z wyrażeń Oznaczający..., następnie blok instrukcji jest wykonywany walizka, w przeciwnym razie - lista instrukcji po operatorze Inaczej. Podczas wykonywania bloku walizka te listy instrukcji są wykonywane dla których Oznaczający zbiega się z Wyrażenie. Proszę to zanotować Oznaczający może być liczbą, stałą, zmienną, wektorem komórek, a nawet zmienną łańcuchową. Wyjaśnijmy użycie operatora wyliczenia przełącznik następujący przykład:
M-funkcja realizująca wielokrotne rozgałęzienie jest pokazana na ryc. 1.3.4-8, a dostęp do niego z danymi początkowymi pozwalającymi na sprawdzenie każdej gałęzi gałęzi pokazano na rys. 1.3.4-9.
Ryż. 1.3.4-9. Wywołania funkcji wielofunkcyjny()
Funkcjonować wielofunkcyjny(x,n) dwa parametry, przy czym drugi pełni rolę wskaźnika określającego rodzaj zależności funkcjonalnej. Wartość funkcji jest zapisywana do zmiennej tak. Jeśli n=1, to wykonywany jest pierwszy blok przypadku, jeśli 2, to drugi, jeśli n=2, 3 lub 4, potem trzeci. Jeżeli wartość zmiennej n nie pasuje do żadnej z wymienionych wartości, to wykonywane jest polecenie znajdujące się po słowie kluczowym. Inaczej.
Operator pętli regularnej służy do...end. Wpisz operator pętli na... koniec zwykle używany do organizowania obliczeń z określoną liczbą powtórzeń pętli. Struktura takiego cyklu jest następująca:
dla vag = s:d:e
Instrukcja1
InstrukcjaN
gdzie s- początkowa wartość zmiennej pętli var, d- zwiększyć tę zmienną i e- końcowa wartość zmiennej sterującej, powyżej której kończy się pętla. Możliwe jest również pisanie w formie s:e(w tym przypadku d=l). Lista instrukcji wykonywanych w pętli kończy się instrukcją koniec.
Jako przykład użycia operatora na... koniec obliczyć sumę elementów tablicy X, których wartości są definiowane w oknie poleceń za pomocą funkcji m suma()(Rys. 1.3.4-10), którego parametrem jest wektor x. Liczba elementów tablicy X zdefiniowane przez funkcję długość. Oprócz wywołania funkcji, okno poleceń umożliwia sprawdzenie wyniku obliczeń za pomocą wbudowanej funkcji suma(x)(Rys. 1.3.4-11).
Ryż. 1.3.4-11. Wywołanie funkcji suma() i wbudowana funkcja suma()
Operator może być używany w pętli kontynuować , który przekazuje kontrolę do następnej iteracji pętli, pomijając następujące instrukcje, aw zagnieżdżonej pętli przekazuje kontrolę do następnej iteracji pętli głównej. Operator przerwanie może służyć do wcześniejszego przerwania wykonywania pętli (na przykład podczas debugowania sekcji programu). Gdy tylko wystąpi w programie, pętla zostaje przerwana.
Oprócz prostych, regularnych pętli w Matlab, możliwe jest organizowanie pętle zagnieżdżone. Rozważ przykład tworzenia dwuwymiarowej tablicy a, z których każdy element reprezentuje sumę jego indeksów (rys. 1.3.4-12). Apel do scenariusz-plik vzikl pokazano na ryc. 1.3.4-13.
Ryż. 1.3.4-13. Apel do scenariusz-plik o nazwie vzikl
Iteracyjnym operatorem pętli jest while...end. Ogólny widok konstrukcji dopóki... koniec następująco:
podczas gdyWyrażenie logiczne
Instrukcje
Charakterystyczną cechą tej struktury jest to, że instrukcje znajdujące się w ciele struktury powtórzeń są wykonywane tylko wtedy, gdy niektóre Wyrażenie logiczne"PRAWDA". Gdy tylko warunek staje się „fałszywy”, następuje wyjście ze struktury powtórzeń, a kontrola jest przekazywana do instrukcji znajdującej się po słowie kluczowym koniec.
Podajmy prosty przykład (ryc. 1.3.4-14).
![]() |
Ryż. 1.3.4-14. Program dialogowy za pomocą operatora dopóki... koniec
Ten program, przechowywany w m-plik o nazwie podkład11, służy do wielokrotnego obliczania obwodu wprowadzonej przez użytkownika wartości promienia r, gdzie okno dialogowe jest zaimplementowane za pomocą polecenia Wejście. Linie związane ze zmiennym wejściem r i obliczenia obwodu są zawarte w strukturze sterowania dopóki... koniec. Jest to konieczne do cyklicznego powtarzania obliczeń przy wprowadzaniu różnych wartości. r. Do widzenia r>=0 cykl się powtarza. Ale warto zapytać r<0 , obliczanie obwodu kończy się i pętla się kończy. Ponieważ w drugim wierszu programu wartość r jest ustawiony na 0, pętla jest powtarzana co najmniej raz.
Praca z programem w oknie poleceń pokazano na ryc. 1.3.4-15.
Ryż. 1.3.4-16. Przerywanie programu za pomocą instrukcji przerwanie
Operator kontynuować przekazuje kontrolę do następnej iteracji pętli, pomijając instrukcje, które następują po niej, a w zagnieżdżonej pętli przekazuje kontrolę do następnej iteracji pętli głównej. Poniżej znajduje się przykład obliczenia sumy i iloczynu dodatnich elementów dwuwymiarowej tablicy b(3,3) (rys. 1.3.4-17).
![]() |
Ryż. 1.3.4-17. Przerywanie programu za pomocą instrukcji kontynuować
Przykłady rozwiązywania problemów za pomocą
M-pliki
Przykład 1.3.5-1. Biorąc pod uwagę n liczb . Wymagane jest obliczenie ich sumy: gdzie
Aby rozwiązać ten problem, opracowano funkcję fb(x), który implementuje algorytm obliczania bieżącej wartości funkcji. Funkcja posiada jeden parametr wejściowy - bieżącą wartość elementu tablicy b i jeden parametr wyjściowy - tak(Rys. 1.3.5-1). Funkcja jest wywoływana w pętli zorganizowanej w celu obliczenia sumy (rys. 1.3.5-2).
Ryż. 1.3.5-2. Program realizujący obliczanie sumy liczb
Aby obliczyć sumę wartości funkcji utworzonych scenariusz-plik o nazwie zadasza.m, w którym liczba liczb ( n=10) i wektor ich wartości ( b), a następnie zorganizowana jest regularna pętla do wywoływania funkcji pełne wyżywienie() i obliczanie sumy.
Obliczenia wykonywane są przez bieganie scenariusz-plik wpisując w wierszu poleceń okna okno poleceń jego imię zadasza. Wyniki jego realizacji przedstawiono na ryc. 1.3.5-3.
![]() |
Ryż. 1.3.5-3. początek scenariusz-plik zadasza do egzekucji
Przykład 1.3.5-2. Utwórz dwuwymiarową tablicę a(3,4) z dowolnych liczb. Oblicz i wyprowadź jednowymiarową tablicę b, której każdy element jest średnią arytmetyczną elementów odpowiedniego wiersza tablicy a.
Na ryc. Podano 1.3.5-4 scenariusz-plik o nazwie zadasza2, gdzie wprowadzono matrycę, a, składający się z trzech wierszy i czterech kolumn. Pętla jest zorganizowana według liczby utworzonych elementów tablicy b wywołując funkcję sred_ar(). Tablica jest przekazywana do funkcji a, numer kolejki ( i) i liczbę elementów w ciągu ( m). Wyświetlanie elementów tablicy b podane w kolumnie.
Ryż. 1.3.5-5. Funkcjonować sred_ar(), który oblicza średnią arytmetyczną
elementy ciągu tablicy a
W wyniku uruchomienia scenariusz-plik o nazwie zadasza2 za oknem okno poleceń wyświetlana jest kolumna elementów tablicy b
Ryż. 1.3.5-7. Funkcjonować fabuła(), obliczanie wartości i-tego członu
Ryż. 1.3.5-9. Uruchomienie funkcji suma() do egzekucji
Prace laboratoryjne nad tematem
„Sposoby algorytmizacji i programowania
W Matlabie"
Zagadnienia do zbadania
1) Widoki m- akta.
2) Tworzenie i zapisywanie nowych oraz otwieranie wcześniej utworzonych m-plików.
3) Funkcje scenariusz- pliki i m- Funkcje.
4) Biegnij do egzekucji scenariusz- plik z edytora tekstu.
5) Biegnij do egzekucji scenariusz- plik z okna poleceń.
6) Wzywa do scenariusz- pliki i m-f Funkcje.
7) Narzędzia języka programowania w systemie Matlab.
8) Podstawowe operatory m-językowe, ich przeznaczenie i formaty .
2. Zadanie ogólne
1) Przeglądaj tematy 1.3 (p.p. 1.3.1 – 1.3.5).
2) Wybierz indywidualne zadanie z tabeli. 1.3.6-1.
3) Projekt m -funkcje do implementacji standardowych algorytmów: obliczanie sum skończonych, rozgałęzienia, znajdowanie minimum i maksimum w sekwencji danych itp.
4) Wchodzić oraz ratować m -funkcje na nośnikach zewnętrznych.
5) Tworzyć Nowyscenariusz -plik, w którym wpisujesz kod programu opisujący logikę rozwiązywania zadania.
6) Zapisz skrypt -plik w bieżącym katalogu.
7) Debuguj skrypt t-file, uruchamiając go z edytora tekstu za pomocą poleceniaBiegać .
8) Przygotować oraz wejść wstępne dane do rozwiązania problemu;
9) Wykonaj skrypt -plik z wiersza poleceń oknaokno poleceń .
10) Zapisz tekst okno robocze na nośnikach zewnętrznych.
11) Prześlij swoje wyniki praca nauczyciela, odpowiadać na zadane pytania.
12) Kompletny Komenda Wyczyść wszystko do czyszczenia środowisko pracy .
13) Prześlij raport zgodnie z wykonaną pracą .
Warianty poszczególnych zadań
Tabela 1.3.6-1
№ | Ćwiczenie |
Wpisz liczbę naturalną n i wektor liczb rzeczywistych ![]() ![]() ![]() |
|
Oblicz ![]() ![]() ![]() |
|
Ustaw tablicę ![]() ![]() |
|
![]() ![]() ![]() |
|
Wpisz liczbę naturalną n i liczbę rzeczywistą x. Oblicz ![]() |
|
Wpisz liczbę naturalną n. Znajdź największe wśród wartości ![]() |
|
Wpisz liczbę naturalną n. Wśród znaczeń ![]() ![]() |
|
Podaj liczbę naturalną n i wektor liczb rzeczywistych ![]() |
|
Wprowadź macierz B(5,7) i utwórz wektor C(5) z pierwszych największych elementów wierszy. Wyświetlaj jego elementy w rzędzie i kolumnie | |
Utwórz wektor zgodnie z zasadą: ![]() |
|
Podaj liczbę naturalną n i wektor liczb rzeczywistych ![]() |
|
Wprowadź macierz kwadratową A(4,4). Utwórz wektor X z maksymalnych elementów jego kolumn, wyświetl jego elementy na ekranie w kolejności bezpośredniej i odwrotnej | |
Wprowadź wektor liczb całkowitych ![]() |
|
Wprowadź wektor liczb rzeczywistych ![]() |
|
Utwórz macierz A(4,4) według zasady: ![]() |
|
Utwórz macierz D(3,2) zgodnie z zasadą: ![]() |
|
Podaj liczbę naturalną n. Oblicz, która z macierzy n na n zawiera więcej elementów dodatnich, jeśli ich elementy są uformowane zgodnie z zasadą: Wyświetl wygenerowane macierze | |
Wprowadź kwadratową macierz liczb rzeczywistych A(4,4). Znajdź sumę największych wartości elementów jego wierszy. Utwórz nową macierz B(4,4) mnożąc każdy element macierzy A przez znalezioną sumę i dzieląc ją przez wyznacznik macierzy pierwotnej | |
Wprowadź macierz liczb rzeczywistych A(4,7) i uzyskaj z niej wektor C(4), którego elementami są: · największy z elementów pierwszego rzędu; najmniejszy z elementów w drugim rzędzie; średnia arytmetyczna elementów trzeciego rzędu; suma elementów czwartego rzędu | |
Wprowadź liczbę naturalną n i macierz liczb rzeczywistych С(n,n). Znajdź średnią arytmetyczną największych i najmniejszych wartości jej elementów i zastępując elementy przekątne tą wartością, wyświetl macierz C na ekranie | |
Wpisz liczby naturalne k1, k2 i rzeczywistą macierz 8x4. Zamień elementy wierszy k1 i k2 w macierzy | |
Podaj liczbę naturalną n i macierz liczb rzeczywistych С(n,9). Znajdź średnią arytmetyczną każdej z kolumn, które mają liczby parzyste | |
Wprowadź wektory liczb rzeczywistych x(5), y(6), z(7). Oblicz wartość t zgodnie z następującym algorytmem: | |
Wprowadź wektory liczb rzeczywistych x(5). Pobierz dla wartości x=1, 3, 4 ![]() |
|
Wprowadź wektory liczb rzeczywistych x(10). Pobierz z niej kolejną tablicę p(10), której elementy są posortowane w kolejności rosnącej | |
Wprowadź macierz liczb rzeczywistych A(3,4). Zastąp elementy wiersza macierzy maksymalną sumą wartości elementów - jednorazowo, minimalną - dwójkami, a pozostałe elementy macierzy ustaw na zero | |
Utwórz macierz A(4,4) zgodnie z zasadą Usuń z niej kolumny zawierające elementy mniejsze niż 10 | |
Utwórz macierz B(9,3) zgodnie z regułą Wyznacz najmniejszy element w każdym wierszu macierzy i zapisz go do odpowiedniego elementu wektora C. Wyprowadź wynikowy wektor C | |
Wprowadź macierz liczb rzeczywistych A(3,4), której wszystkie elementy są różne. W każdym wierszu należy wybrać największą i najmniejszą wartość oraz wpisać sumę indeksów kolumn, w których się znajdują, w odpowiednim elemencie wektora С(3) | |
Wprowadź macierz liczb rzeczywistych A(4,4). Pobierz ciągi elementów głównej i drugorzędnej przekątnej, utwórz z tych elementów wektory B(4) i C(4) i wyświetl je na ekranie |
1) W formie komentarzy:
Nazwa laboratorium
Imię i nazwisko ucznia, numer grupy
Numer opcji
・Indywidualne zadanie
2) Protokół obliczeń (sesji) w oknie okno poleceń z niezbędnymi komentarzami.
1.3.7. Pytania bezpieczeństwa na ten temat
1) Co to jest? scenariusz- plik i jakie są jego cechy?
2) Jak? scenariusz- plik jest wykonywany?
3) Co to jest? m- Funkcje I?
4) Jaka jest różnica? scenariusz- plik z m- Funkcje?
5) Czy m- funkcjonować mieć wiele parametrów wyjściowych?
6) Zadzwoń do m- Funkcje.
7) Format operatora Wejście().
8) Jak korzystać z operatora jeśli... koniec wdrożyć rozgałęzienia standardowe, okrojone i zagnieżdżone?
9) Format operatora wielu oddziałów przełącznik.
10) Format operatora pętli regularnej na... koniec, cechy ustawiania wartości zmiennej pętli.
11) Powołanie operatorów kontynuować oraz przerwanie.
12) Operator pętli iteracyjnej dopóki... koniec i jego struktura.
Sekcja 2. Technologia rozwiązania
zadania obliczeniowe z wykorzystaniem MatLab
Pętle w Matlabie wymagają warunku, który musi spełniać polecenie lub grupa poleceń
powtórz kilka razy.
Najłatwiejszym sposobem utworzenia pętli jest użycie
do ekspresji. Poniżej znajduje się prosty przykład, w którym oblicza się i wyświetla 10! = 10 * 9 * 8 ... * 2 * 1.
f = 1;
dla n=2:10
f = f*n;
koniec
f=
3628800
Pętla w programie Matlab zaczyna się od instrukcji for i kończy na instrukcji end. Zespół
między tymi wyrażeniami jest wykonywany w sumie dziewięć razy, po jednym dla każdego
wartości n od 2 do 10. Aby przerwać wyjście pośrednie wewnątrz pętli, mamy
użył średnika. Aby zobaczyć efekt końcowy, potrzebujesz
wpisz f po zakończeniu pętli. Jeśli nie użyjesz średnika, program
MATLAB wyświetli każdą wartość pośrednią 2!, 3! itd.
W module Edytor polecenia for i end są automatycznie podświetlane
w niebieskim. Daje to lepszą czytelność, jeśli wklejasz między
im polecenia (jak to zrobiliśmy); robi to moduł Editor
automatycznie. Jeśli wpiszesz w oknie poleceń,
MATLAB nie wyda nowego wiersza poleceń >>, dopóki nie
wpisz polecenie end, co spowoduje, że program MATLAB wykona pełną pętlę i
wyświetli nową linię poleceń.
- Jeśli użyjesz pętli w skrypcie M-file z efektem echa na wyświetlaczu, polecenia będą powtarzane za każdym razem w pętli. Możesz temu zapobiec, wstawiając polecenie echo off tuż przed instrukcją end i polecenie echo on tuż po niej; wtedy każde polecenie w pętli zostanie odzwierciedlone raz (z wyjątkiem end).
Uwaga: w programie Matlab są trzy rodzaje pętli, które są podane poniżej
1. Pętla for w Matlabie
a=0;
dla i=1:10
a=a+1;
koniec
2. Pętla while w Matlabie
a=0;
podczas<10
a=a+1;
koniec
3. Pętla if w Matlabie
a=10;
jeśli a==10
„pierwszy przypadek”
w przeciwnym razie
„drugi przypadek”
koniec
ans =
pierwszy przypadek
Dlatego z powyższego możemy wywnioskować, że musisz przyjrzeć się wielu dodatkowym informacjom i alternatywom!
← Poprzednie reprezentujące wyniki Matlab |
---|
Dział: Technologie informacyjne
PROGRAMOWANIE WMATLAB
OperatorzyMATLAB
· Instrukcje pętli
Cykldla
Składnia
liczba=start:krok:końcowy
Polecenia MATLAB
Opis
liczba jest zmienną pętli,
start to jego wartość początkowa,
final jest jego ostateczną wartością,
step - krok, o który zwiększana jest liczba przy każdym wejściu w pętlę
pętla kończy się, gdy tylko wartość count staje się większa niż końcowa.
Przykład
Niech będzie wymagane wyprowadzenie rodziny krzywych dla x€ , która jest określona przez funkcję zależną od parametru
y (x, a) \u003d e-ax sin x,
dla wartości parametrów a od -0,1 do 0,1. Poniżej znajduje się lista programu plikowego do wyprowadzania rodziny krzywych.
Lista programów
x = ;
dla a = -0,1:0,02:0,1
y = exp(-a*x).*sin(x);
W wyniku wykonania programu pojawi się okno graficzne zawierające wymaganą rodzinę krzywych.
Cyklpodczas gdy
Składnia
podczas gdy warunek pętli
Polecenia MATLAB
Opis
Pętla działa tak długo, jak (prawda) warunek pętli jest spełniony. Następujące operacje relacyjne mogą ustawić warunek wykonania cyklu:
Bardziej złożone warunki są określane za pomocą operatorów logicznych. Operatory logiczne podano w poniższej tabeli
Przykład
Operatorzy oddziałów
Operator warunkowyjeśli
Składnia
jeśli warunek
Polecenia MATLAB
Opis
Jeżeli warunek jest spełniony, to wykonywane są komendy MATLAB umieszczone pomiędzy if i end, a jeżeli warunek nie jest spełniony, to następuje przejście do komend znajdujących się po end.
Przykład
Operator warunkowyelseif
Składnia
jeśli warunek1
warunek elseif 2
………………………
warunek elseif
Opis
W zależności od spełnienia jednego lub drugiego warunku działa odpowiednia gałąź programu, jeżeli wszystkie warunki są niepoprawne, wykonywane są polecenia umieszczone po else.
Przykład
Operatorprzełącznik
Składnia
zmienna przełącznika
wartość przypadku1
wartość przypadku2
……………………
casevaluen
Każda gałąź definiowana jest instrukcją case, przejście do niej następuje w momencie, gdy zmienna instrukcji switch przyjmuje wartość określoną po case, lub jedną z wartości z listy case. Po wykonaniu którejkolwiek z gałęzi przełącznik wychodzi, natomiast wartości podane w innych przypadkach nie są już sprawdzane. Jeżeli nie ma odpowiednich wartości dla zmiennej, to wykonywana jest gałąź programu odpowiadająca inaczej.
Przykład
Przerwania pętli. Wyjątkowe sytuacje.
Operatorprzerwanie
Składnia
Instrukcja break służy do organizowania cyklicznych obliczeń: for...end, while...end. Kiedy stan
jeśli warunek
Instrukcja break kończy pętlę (for lub while) i wykonywane są instrukcje znajdujące się w wierszach następujących po końcu. W przypadku pętli zagnieżdżonych funkcja break wychodzi z pętli wewnętrznej.
Obsługa wyjątków, operatorpróbować… złapać
Składnia
oświadczenia, których wykonanie
może spowodować błąd
oświadczenia do wykonania
gdy w bloku wystąpi błąd
między próbą a łapaniem
Opis
Konstrukcja try...catch pozwala ominąć wyjątkowe sytuacje (błędy, które prowadzą do zakończenia programu, na przykład dostęp do nieistniejącego pliku) i podjąć pewne działania, jeśli wystąpią.
Przykład
Funkcje serwisowe
disp– wyświetla tekst lub wartość zmiennej w oknie poleceń
Wejście- żąda wprowadzenia danych z klawiatury. Używane podczas tworzenia aplikacji z interfejsem wiersza poleceń.
oceniać – wykonuje zawartość ciągu lub zmiennej ciągu, jak polecenia MATLAB
jasne- Usuwa zmienne środowiska pracy.
Zlc- czyści okno poleceń
Aby uzyskać więcej informacji o tych i innych funkcjach, uruchom w wierszu poleceń
Wsparcienazwa_funkcji
Zadania do prac laboratoryjnych
O numerze danego wariantu zadania decyduje prowadzący.
Zadanie numer 1
Zadanie to implikuje znalezienie wielomianu interpolacji algebraicznej stopnia n dla pewnego zbioru danych: P n(x) .
Cel:
Niezbędne jest napisanie programu do obliczania współczynników wielomianu interpolacji algebraicznej P n(x)= a 0 + a 1 x+ … + n x n.
Instrukcje metodyczne:
Niech na przykład mamy następujący zestaw danych:
i | 0 | 1 | 2 | 3 |
Xi | 1,2 | 1,4 | 1,6 | 1,8 |
ja ja | 8,3893 | 8,6251 | 8,9286 | 8,9703 |
Szanse a 0 , a 1 , …, jakiś są wyznaczane z rozwiązania układu równań:
Tutaj njest rządem wielomianu interpolacji,
n+1 to liczba podanych par punktów ( x, tak),
a 0 , a 1 ,… jakiś są wymaganymi współczynnikami wielomianu P n(x)= a 0 + a 1 x+ … + n x n).
Wymagania programowe
Ustaw granice linii , na którym budowany jest wielomian interpolacyjny P(x)
· Zapytać się n to liczba segmentów interpolacji (lub równoważnie stopień wielomianu)
Notatka: x0, xn, n wprowadzone z klawiatury.
· Aby uzyskać dane początkowe (x, y)(liczba par punktów (x ja, y ja), na którym budowany jest wielomian interpolacyjny P(x) – n1=n+1) dostarczać:
Wchodzenie do losowo ułożonych węzłów x i, i=0, n z klawiatury
Obliczanie węzłów x i , i=0, n, odpowiadające jednolitemu układowi argumentacji x na segmencie
W s. 1.2 wartości y i , i=0, n albo wprowadzane z klawiatury (jeśli oryginalna funkcja jest nieznana), albo obliczane z danej funkcji f(x). Wyrażenie definiujące funkcję jest wprowadzane z klawiatury i musi być zgodne z zasadami pisania wyrażeń w MATLAB
Wprowadzanie danych ( x ja, y ja, i=0, n) z pliku
Rozwiąż układ równań, aby określić współczynniki wielomianu P(x)
Zbuduj wykresy oryginalnej funkcji tabelarycznej i wielomianu P(x)
· Jeśli dane początkowe są podane jako funkcja f(x), wykreśl błąd interpolacji /f(x) – P(x)/. Oblicz maksymalną wartość modulo błędu interpolacji w danym przedziale.
Podczas wykonywania ostatniej pozycji w segmencie weź co najmniej 500 punktów do obliczeń
Zadanie numer 2
Interpolacja splajnu
Cel:
Niezbędne jest stworzenie programu do obliczania współczynników i konstruowania funkcji sklejanej S(x), „sklejonej” z kawałków wielomianów III rzędu S i(x), które mają specjalną notację:
,Funkcja S i(x) zdefiniowany na segmencie
Wymagania programowe
Wykonując tę pracę, musisz:
Ustaw granice odcinka, na którym zbudowana jest funkcja splajnu S(x)
· Podaj n – liczbę segmentów interpolacyjnych, na każdym z których budowany jest wielomian sześcienny Si(x).
· Uwaga: x0, xn, n są wprowadzane z klawiatury.
Uporządkuj wprowadzanie danych początkowych (x, y) (liczba par punktów (xi, yi), na których zbudowana jest funkcja sklejana S(x), n1=n+1), zapewniając:
Wprowadzanie dowolnych węzłów xi, i=0, n z klawiatury
Obliczanie węzłów xi, i=0, n, odpowiadających równomiernemu rozmieszczeniu argumentu x na segmencie
W s. 1,2 wartości yi, i=0, n są albo wprowadzane z klawiatury (jeśli pierwotna funkcja jest nieznana) albo obliczane z danej funkcji f(x). Wyrażenie definiujące funkcję jest wprowadzane z klawiatury i musi być zgodne z zasadami pisania wyrażeń w MATLAB
Wprowadzanie danych (xi, yi, i=0, n) z pliku
S1""(x0)=0, S3""(x3)=0
S1"(x0)=f"(x0), S3"(x3)=f"(x3)
S1""(x0)=f "(x0), S3""(x0)=f "(x3)
Aby wyznaczyć współczynniki naturalnego splajnu sześciennego (warunki brzegowe 1), należy rozwiązać następujący układ równań:
Współczynniki σ 0 =0, σ n =0
· Wykresy oryginalnej funkcji i funkcji sklejanych dla wszystkich trzech typów warunków brzegowych.
· Skonstruuj wykresy funkcji błędu interpolacji splajnu f(x) – S(x) dla wszystkich trzech typów warunków brzegowych.
Notatka:
W pakiecie MATLAB indeksy tablic jednowymiarowych i dwuwymiarowych zaczynają się od 1, a nie od 0. Weź to pod uwagę podczas pisania programu.