Programowanie w Matlabie (cz.2)

Podobne dokumenty
Wykład 3: Matlab cz.2 Podstawy programowania strukturalnego

Elementarne wiadomości o języku C

1 Podstawy c++ w pigułce.

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

MATLAB Wprowadzenie. Literatura po polsku: Niektóre cechy MATLABa. Dlaczego warto poznać MATLABa? bo : Co to jest "Środowisko programowania" czyli IDE

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

1 Podstawy c++ w pigułce.

2 Przygotował: mgr inż. Maciej Lasota

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Cw.12 JAVAScript w dokumentach HTML

Ćwiczenie 1. Wprowadzenie do programu Octave

Język C część 1. Sformułuj problem Zanalizuj go znajdź metodę rozwiązania (pomocny może byd algorytm) Napisz program Uruchom i przetestuj czy działa

Wykład 4. Matlab cz.3 Tablice i operacje na tablicach

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Funkcje matematyczne w C. Programowanie w C Marek Pudełko

Ćwiczenie 1. Wprowadzenie do programu Octave

Matlab MATrix LABoratory Mathworks Inc.

Języki programowania wysokiego poziomu. PHP cz.2.

Instalacja Pakietu R

Wstęp do Programowania Lista 1

Podstawy Programowania Podstawowa składnia języka C++

Programowanie komputerowe. Zajęcia 1

Laboratorium Algorytmy Obliczeniowe. Lab. 9 Prezentacja wyników w Matlabie

Języki i metodyka programowania. Wprowadzenie do języka C

Przetwarzanie sygnałów

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Podstawy programowania C. dr. Krystyna Łapin

SKRYPTY. Zadanie: Wyznaczyć wartość wyrażenia arytmetycznego

Programowanie w języku Python. Grażyna Koba

Programowanie strukturalne i obiektowe

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Podstawy Programowania C++

dr inż. Jarosław Forenc

Algorytmika i Programowanie VBA 1 - podstawy

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Wprowadzenie do Pakietu R dla kierunku Zootechnika. Dr Magda Mielczarek Katedra Genetyki Uniwersytet Przyrodniczy we Wrocławiu

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Metody numeryczne Laboratorium 2

Podstawy programowania skrót z wykładów:

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI INSTYTUT AUTOMATYKI I INFORMATYKI KIERUNEK AUTOMATYKA I ROBOTYKA STUDIA STACJONARNE I STOPNIA

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

MATLAB - podstawy użytkowania

GNU Octave (w skrócie Octave) to rozbudowany program do analizy numerycznej.

Podstawowe wyrażenia matematyczne

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Podstawy Automatyki ćwiczenia Cz.1. Środowisko Matlab

Struktura pliku projektu Console Application

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Matlab Składnia + podstawy programowania

Część 4 życie programu

JAVAScript w dokumentach HTML (1)

Wstęp do Programowania, laboratorium 02

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Ćwiczenie 1. Matlab podstawy (1) Matlab firmy MathWorks to uniwersalny pakiet do obliczeń naukowych i inżynierskich, analiz układów statycznych

Wykład 4. Matlab cz.3 Tablice i operacje na tablicach

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Podstawy Informatyki 1. Laboratorium 1

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

Proste typy zmiennych języka C++ *) Zapis 3.4 e-38 jest równoważny zapisowi 3,

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Wprowadzenie do środowiska

Zmienne, stałe i operatory

Programowanie Delphi obliczenia, schematy blokowe

Przykład 1 -->s="hello World!" s = Hello World! -->disp(s) Hello World!

Wydział Inżynierii Mechanicznej i Robotyki AGH w Krakowie Studia Niestacjonarne, Rok 1, semestr 2. przedmiot: Informatyka

Pracownia Informatyczna Instytut Technologii Mechanicznej Wydział Inżynierii Mechanicznej i Mechatroniki. Podstawy Informatyki i algorytmizacji

Matlab Składnia + podstawy programowania

Proste programy w C++ zadania

PRZYKŁADOWE SKRYPTY (PROGRAMY W MATLABIE Z ROZSZERZENIEM.m): 1) OBLICZANIE WYRAŻEŃ 1:

Wyrażenia arytmetyczne

Pascal - wprowadzenie

MATLAB ŚRODOWISKO MATLABA OPIS, PODSTAWY

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p.

Podstawowe operacje na macierzach

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

WYRAŻENIA ALGEBRAICZNE

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

Informatyka. Cele nauczania przedmiotu Informatyka (ograniczone wymiarem godzinowym) Podręcznik zawiera m.in.:

JAVAScript w dokumentach HTML - przypomnienie

Elementy języków programowania

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p.

1. Wprowadzanie danych z klawiatury funkcja scanf

1. Wypisywanie danych

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Funkcje. czyli jak programować proceduralne. Programowanie Proceduralne 1

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

do MATLABa programowanie WYKŁAD Piotr Ciskowski

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

4. Funkcje. Przykłady

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Transkrypt:

Programowanie w Matlabie (cz.2) Opracował: Dr inż. Zbigniew Rudnicki Tematyka wykładu Tryby użytkowania Matlaba Elementy języka - wyrażenia i instrukcje Wyrażenia arytmetyczne i ich składniki Wyrażenia logiczne i ich składniki Wprowadzanie danych - funkcja INPUT Instrukcja podstawiania - nadawanie wartości zmiennym Wyprowadzanie wyników - funkcja DISP Instrukcja IF - rozgałęzienie warunkowe Pętle programowe Instrukcja pętli FOR - przykłady programów Instrukcja pętli WHILE Operowanie na wektorach i macierzach 2

Tryby użytkowania Matlaba 1) Tryb bezpośredni - wpisywanie w oknie komend: wyrażeń, instrukcji oraz funkcji 2) Tryb programowy - pisanie w edytorze i zapisywanie do plików (*.m): programów (skryptów) pojedynczych definicji funkcji użytkownika, programów złożonych z bloku głównego i wielu funkcji 3 Elementy języka - wyrażenia i instrukcje Programy składają się z komend czyli instrukcji. Składnikami komend są: słowa kluczowe (np.: if, while, end,...) wyrażenia arytmetyczne a wśród nich: stałe, zmienne i funkcje (jako najprostsze postacie wyrażeń) wyrażenia logiczne: proste czyli relacje oraz złożone 4

Wyrażenia arytmetyczne i ich składniki Wyrażenia arytmetyczne mogą zawierać: stałe (liczby) zmienne (nazwy zmiennych) operatory działań nawiasy funkcje Jednak inaczej niż w innych językach - wyrażenia te dotyczą tablic (macierzy), które w szczególności mogą być skalarami (pojedynczymi liczbami). 5 Stałe liczbowe - postacie zapisu liczb Podobnie jak w większości języków programowania zapis liczb w MATLABie może zawierać: początkowy znak plus (na ogół pomijany) lub minus kropkę dziesiętną (NIE PRZECINEK!) poprzedzającą część ułamkową np.: -97.6397 może być stosowana tzw. notacja naukowa w której e oznacza "dziesięć do potęgi..." np.: -1.60210e-23 oznacza: -1.60210 razy 10 do potęgi -23 w zapisie liczb urojonych i zespolonych stosuje się symbole i oraz j np.: 1i, 2-3.14159j, 3e5i 6

Typy wartości Matlab nie wymaga deklarowania typów zmiennych przed ich użyciem. Określa typ na podstawie wprowadzonej wartości. Stałe i zmienne liczbowe mają typ wynikający z pierwszej podstawionej wartości a łańcuchy znaków czyli teksty typ char W wyrażeniach logicznych wartość ZEROWA jest równoznaczna z FAŁSZEM a wartości różne od zera traktowane są jako PRAWDA Możliwe jest dokonywanie różnych konwersji typów m.in.: num2str(liczba) - przekształca liczbę na ciąg znaków str2num(tekst) - przekształca tekst (ciąg cyfr) na liczbę uint8, uint16, uint32 - konwertują do całkowitych bez znaku int8, int16, int32 - konwertują do całkowitych ze znakiem 7 Typ double, zakres, precyzja Typ double czyli liczb rzeczywistych podwójnej precyzji Zakres liczb typu double sięga od -realmax do realmax gdzie realmax =1.7977 e+308 Najmniejszy ułamek ma wartość: realmin=2.2251 e-308 Precyzja: Liczby są pamiętane z dokładnością ok. 15-16 cyfr znaczących. Wartość typu double zajmuje 8 bajtów (64 bity) w pamięci 8

Zmienne Wszystkie zmienne w MATLABie są traktowane jak macierze Wektory i skalary są uważane za szczególne przypadki macierzy Nazwy zmiennych można tworzyć według następujących reguł: muszą rozpoczynać się od litery, a dalej mogą mieć tylko litery angielskie, nie wolno dawać polskich np.:ą, ć, ę, ł, ń,... oraz cyfry i znaki podkreślenia np.: Moment_sily9 długość nazwy nie powinna przekraczać max. 19 znaków (tyle jest zapamiętywanych) MATLAB rozróżnia duże i małe litery. Polecenia standardowe należy pisać małymi literami a dla nazw własnych programów i zmiennych można używać małych i dużych liter 9 Przykłady poprawnych i niepoprawnych nazw zmiennych DOBRE: Moc2 MomentGn1 moment_gn_1 SILA_Px1 ZŁE: 2Moc Moment-1 moment_gnący1 SIŁA_Px1 10

Niektóre komendy dla zmiennych clear - usuwa wszystkie zmienne z pamięci clear zmienna - usuwa zmienną z pamięci clc - wymazuje okno komend who - wyświetla wykaz zmiennych whos - wyświetla dokładne informacje o zmiennych save - zapisuje pamięć zmiennych do pliku matlab.mat load - wczytuje pamięć zmiennych z pliku matlab.mat 11 Działania na liczbach i zmiennych skalarnych 12

Operacje arytmetyczne na skalarach realizowane są przy pomocy operatorów: + dodawanie - odejmowanie / dzielenie * mnożenie ^ potęgowanie Inne działania realizowane są przy pomocy FUNKCJI np.: pierwiastek z 2: sqrt(2) 13 Kolejność (priorytety) operacji arytmetycznych - gdy brak nawiasów 1) obliczanie wartości funkcji 2) potęgowanie 3) zmiana znaku 4) mnożenie i dzielenie 5) dodawanie i odejmowanie Przykłady: 4/2^2 = 1 4/2*2 = 4 a=2; -a^2 = -4 b=-2; b^2 = 4 14

Używanie nawiasów okrągłych ( ) Nawiasy okrągłe używamy: dla argumentów funkcji np.: sin(3*x), sqrt(167) nie wolno bez nawiasów!! np.: sin3x = Źle!! dla określania odpowiedniej kolejności działań (np. dla sum i różnic w liczniku lub mianowniku ułamka) np.: zapiszemy: 34.6/(1+2*sqrt(3)) dla indeksów elementów wektorów i macierzy np.: V(1), b(16), sila(2*j+1), M(i,j), Mac_A(w+1, k-2) 15 Przykład: Używanie nawiasów okrągłych ( ) zapiszemy: (376.58^(3*sqrt(2))+2*sqrt(67))/(0.0789-1/(18-sqrt(3))) (jak widać czasem musi być wiele nawiasów). Po wpisaniu - bez średnika na końcu - i zakończeniu klawiszem ENTER, Matlab poda wynik: ans = 4.8658e+012 16

Ważniejsze elementarne funkcje matematyczne abs(x) - wartość bezwzględna sqrt(x)- pierwiastek exp(x) - e do x log(x) - logarytm naturalny log2(x) - logarytm o podstawie 2 log10(x) - logarytm o podst 10 Zaokrąglenia: round(x) - zaokrągla do najbliższej całkowitej ceil(x) - zaokrąglenie w górę ( sufit ) fix(x) - obcina cz. ułamk. - zaokrągla w stronę zera floor(x) - zaokrągla w dół ( podłoga ) gcd(x) - największy wspólny podzielnik lcm(x) - najmniejsza wspólna wielokrotność mod(x) - reszta z dzielenia sign(x) - znak 17 Funkcje trygonometryczne i hiperboliczne sin - sinus sec - secans sinh - sin hiperboliczny sech - sec hiperboliczny asin - arcus sinus asec - arcus secans asinh - arcus sin hiperb. asech - arc secans hiperb. cos - cosinus csc - cosecans cosh - cos hiperboliczny csch - cosecans hiperbol. acos - arkus cosinus acsc - arcus cosecans acosh - arcus cos hiperb. acsch - arcus cosecans hiperb. tan - tangens cot - cotangens tanh - tangens hiperb. coth - cotangens hiperbolicz. atan - arcus tangens acot - arcus cotangens atanh - arc tg hyperb. acoth - arc cotangens hyperbol. 18

Wyrażenia logiczne - są używane m in. w instrukcjach: IF oraz WHILE Rozróżniamy wyrażenia logiczne: 1) proste czyli RELACJE np.: 2*x < (x-y) czyli ogólnie: wyrażenie arytmetyczne operator relacji wyrażenie arytmetyczne gdzie operatory relacji to: ==, >, <, >=, <=, ~= 2) złożone - z wielu relacji łączonych operatorami logicznymi 19 Operatory Relacji == równe ~= nie równe (w Matlabie)!= nie równe (w FreeMat oraz C) < mniejsze > większe <= mniejsze lub równe >= większe lub równe 20

Operatory logiczne Operatory logiczne ( & ~ ) pozwalają łączyć relacje i tworzyć z nich złożone wyrażenia logiczne. Matlab ma następujące operatory logiczne: & - i czyli iloczyn logiczny czyli koniunkcja - lub czyli suma logiczna czyli alternatywa ~ - nie czyli negacja czyli zaprzeczenie 21 Funkcje Logiczne Zamiast operatorów logicznych można używać funkcji: and(x, y) - iloczyn logiczny czyli to samo co: x&y or(x,y) - suma logiczna czyli to samo co: x y not(x) - zaprzeczenie czyli to samo co: ~x 22

INSTRUKCJE 23 Rodzaje zakończeń instrukcji Instrukcje (lub pojedyncze nazwy zmiennych) oddzielane przecinkami lub zmianami linii [Enter]- wyświetlają uzyskaną wartość (tzw. echo) np.: a=input( A= ) b=3*a-1 c=6 -sqrt(b), d=a^2+3*b Instrukcje kończone średnikiem [;] nie wyświetlają uzyskanej wartości (czyli echa ) np.: a=input( A= ); b=3*a-1; c=6 -sqrt(b); d=a^2+3*b; 24

Podstawowe instrukcje 1) podstawiania: zmienna = wyrażenie - nadają wartości zmiennym 2) wprowadzania danych z klawiatury: zmienna=input(...) 3) wyprowadzania wyników: fprintf( format, lista_wyrażeń) 4) rozgałęzienie warunkowe: if... else... end 5) pętla o określonej liczbie cykli: for... end 6) pętla o nieokreślonej liczbie cykli: while... end 7) obsługa plików dyskowych: fopen(...), fscanf(...), fprintf(...), fclose(...), readline(...) 25 1) Instrukcja podstawiania (przypisania) Postać instrukcji: zmienna = wyrażenie Najpierw obliczana jest wartość wyrażenia z prawej a potem jest ona podstawiana do zmiennej - zastępując jej dotychczasową wartość. Pojedyncza liczba lub zmienna to też jest wyrażenie. Przykłady instrukcji podstawienia: a=5 b=a^2+1; a=a+2, 26

2) INPUT - Wprowadzanie danej z klawiatury Składnia polecenia: zmienna = input( żądanie danych ) Komputer wyświetli żądanie danych i poczeka na wprowadzenie wartości z klawiatury oraz wstawi tą wartość do zmiennej. Przykłady: SilaN = input( Składowa normalna siły= ); E = input( Moduł Younga= ); -------------------------------------------------------------------------- Składnia polecenia dla zmiennych tekstowych: zmienna = input( żądanie danych, s ) Przykład: NazMasz = input( Podaj nazwę maszyny:, s ); 27 3) FPRINTF - Wyprowadzanie wyników na ekran Składnia polecenia: fprintf( opis_formatu, lista_wyrażeń) opis_formatu - może zawierać: - teksty - będą one przekopiowane do wydruku - znaki sterujące poprzedzone backslashem : np.: \n to rozkaz zmiany linii - oraz formaty wyprowadzania dla wyrażeń z listy_wyrażeń np.: %10.4f - dla liczby rzeczywistej, 10 znaków, w tym 2 po kropce dziesiętnej 28

Funkcja FPRINTF c.d. Przykład: fprintf( \n %5.2f %7.2f, x, x^2); (a) (b) (c) lista wyrażeń opis formatów a) \n rozkaz zmiany linii na wydruku b) %5.2f - format dla wydruku wartości x 5 znaków dla całego pola, w tym 2 znaki po kropce c) %7.2f - format dla wydruku wartości x^2 7 znaków dla całego pola, w tym 2 znaki po kropce 29 4) Instrukcja IF - rozgałęzienie warunkowe Instrukcja IF (czyli Jeżeli ) ma najczęściej postać: if warunek....instrukcje1 else.... instrukcje2 end Oznacza: Jeżeli warunek jest spełniony to wykonaj instrukcje1 a w przeciwnym przypadku (ang.: else) wykonaj instrukcje2. Warunek to dowolne wyrażenie logiczne na przykład: 3*x^2>3 albo x>3 (a<=2 & b==4) 30

Instrukcja IF c.d. 31 Powtarzanie obliczeń w pętli W Matlabie są dwa typy instrukcji organizujących powtarzanie operacji w pętli programowej: instrukcja for... end (czyli Dla... ) - powtarzająca określoną liczbę razy instrukcja while... end (czyli Podczas... ) - powtarzająca tak długo jak długo spełniony jest podany warunek (sprawdzany przed każdym powtórzeniem) 32

5) Pętla FOR czyli Dla... Pętla FOR ma postać: for X = Xp : Dx : Xk end instrukcje Gdzie: X - dowolna zmienna, Xp - wyrażenie określające początkową wartość X Dx - wyrażenie określające przyrost X Xp - wyrażenie określające końcową wartość X Instrukcja ta oznacza: Dla wartości zmiennej kontrolnej X zmieniających się od Xp co Dx aż do Xk wykonuj instrukcje zapisane poniżej, aż do end. 33 Przykład programu z instrukcją FOR... END Napisać program, który oblicza kwadraty liczb z ciągu 2; 2,2;... 3. clear; for x = 2:0.2:3 y=x^2; pętla fprintf( \nliczba=%5.2f Kwadrat=%7.2f,x,y) end wyniki: Liczba= 2.00 Kwadrat= 4.00 Liczba= 2.20 Kwadrat= 4.84 Liczba= 2.40 Kwadrat= 5.76 Liczba= 2.60 Kwadrat= 6.76 Liczba= 2.80 Kwadrat= 7.84 Liczba= 3.00 Kwadrat= 9.00 34

Przykład programu z instrukcją FOR... END Napisać program, który oblicza kwadraty liczb z ciągu 2; 2,2;... 3. clear; clc; fprintf( Liczba Kwadrat ); for x = 2:0.2:3 pętla fprintf( \n%5.2f %7.2f, x, x^2); end wyniki: Liczba Kwadrat 2.00 4.00 2.20 4.84 2.40 5.76 2.60 6.76 2.80 7.84 3.00 9.00 35 Przykład programu z instrukcjami FOR oraz IF Napisać program, który generuje 10 elementów ciągu, przy czym pierwsze dwa i ostatnie dwa mają być równe 1 a pozostałe równe 2. pętla clear; for i=1:10 if i<3 i>8 x(i)=1; else x(i)=2; end end x wyniki: x = 1 1 2 2 2 2 2 2 1 1 36

6) Pętla WHILE czyli Podczas... Pętla WHILE ma postać: while warunek end instrukcje Gdzie warunek to wyrażenie logiczne. Instrukcja ta oznacza: Podczas gdy warunek jest spełniony (rózny od zera) powtarzaj wykonywanie instrukcji umieszczonych poniżej aż do end. 37 Przykład programu z pętlą WHILE Mam 100 zł. Program ma odejmować od tej sumy moje wydatki tak długo na ile wystarcza pieniędzy a gdy braknie to ma o tym zakomunikować: clear; Suma=100; while Suma>0 wydatek=input( Ile chcesz wydać: ); Suma=Suma-wydatek; end; disp( Przekroczyłeś limit wydatków!! ); disp( Stan konta= ); disp(suma); Uogólnij program, aby działał dla dowolnej sumy i podawał stan po każdym wydatku. 38

7) Wyprowadzanie wyników do pliku Funkcje realizujące odczytywanie i zapisywanie informacji z i do plików dyskowych są zapożyczone z języka C. Poniżej objaśniono kilka najważniejszych funkcji na przykładzie: % Program zapisuje do pliku wartości kąta x oraz jego funkcji sin(x), cos(x) [id, kom] = fopen('wyniki1.txt','wt'), % Tworzy plik, % Parametr wt - oznacza: w - do zapisu, t - tekstowy fprintf(id,'\n kąt x [stopnie] sin(x) cos(x)\n' ); % Nagłówek tabelki for xs = 0 : 5 : 90 x = xs*pi/180; % kąt xs zamieniony na radiany y1=sin(x); y2=cos(x); fprintf(id,' %5.0f %15.4f %12.4f\n', xs, y1,y2); end fclose(id); % zamyka plik wyników 39 Działania na wektorach i macierzach 40

Generowanie ciągów (wektorów) Ciągi czyli wektory można generować: 1) bez pętli np.: x=-2:0.5:2 x= -2.0-1.5-1.0-0.5 0.0 0.5 1.0 1.5 2.0 2) w pętli: for i=1:9; x(i)=(i-5)/2; end; x= -2.0-1.5-1.0-0.5 0.0 0.5 1.0 1.5 2.0 41 Używane są do: Nawiasy prostokątne [ ] definiowania wartości wektorów i macierzy np.: V=[2.5, 3, 12] M=[1, 0, 3; 0.5, 2, 4] sklejania (konkatenacji): - wektorów, - macierzy - łańcuchów znakowych (tekstów) np.: disp([ Sila=, num2str(f1), Moment=, num2str(mg)]) 42

Indeksy elementów wektorów i macierzy Indeksy (wskaźniki) należy umieszczać w nawiasach okrągłych np.: V(1), b(16), sila(2*j+1) M(i,j), MACIERZ_A(w+1, k-2) 43 >> A=[-2, 1, 3; 5, 6, 2], B=[0.5, 1, 1.5; 3, 2, 1] A = -2 1 3 5 6 2 B = 0.5000 1.0000 1.5000 3.0000 2.0000 1.0000 >> A+B ans = -1.5000 2.0000 4.5000 8.0000 8.0000 3.0000 >> A-B ans = -2.5000 0 1.5000 2.0000 4.0000 1.0000 Dodawanie i odejmowanie macierzy 44

Dzielenie i mnożenie macierzy Dla mnożenia, dzielenia i potęgowania są dwie kategorie operacji na macierzach: Tablicowe = działania na parach elementów macierzy o tych samych rozmiarach Macierzowe - zgodne z definicjami działań na macierzach 45 Operatory z kropką = operacje tablicowe.* mnożenie (par elementów).^ potęgowanie (każdego elementu)./ dzielenie (par elementów) 46

>> A=[1, -1, 2; 1, 2, 3], B=[2, 0, 1; 1, 0, 2] A = 1-1 2 1 2 3 B = 2 0 1 1 0 2 >> C=A.* B C = 2 0 2 1 0 6 >> D=A*B; % Mnożenie macierzowe - niewykonalne??? Error using ==> * Inner matrix dimensions must agree. Przykład mnożenia tablicowego - macierze muszą mieć takie same wymiary 47 Mnożenie macierzowe 48

>> M1=[2,0,1;3,2,1], M2=[2;3;4] M1 = 2 0 1 3 2 1 M2 = 2 3 4 >> W=M1*M2 W = 2*2 + 0*3 + 1*4 = 8 3*2 + 2*3 + 1*4 =16 Przykład mnożenia macierzowego - liczba kolumn w pierwszej macierzy musi być równa liczbie wierszy w drugiej 49 Transpozycja macierzy [. ] - czyli zamiana wierszy na kolumny: >> A=[1,3,4,5; 2,3,6,7] A = 1 3 4 5 2 3 6 7 >> B=A.' B = 1 2 3 3 4 6 5 7 50

Generowanie macierzy - programy z podwójną pętlą Ponieważ mamy dwa wskaźniki i zmieniają się one na ogół niezależnie od siebie więc większość programów generujących lub wykorzystujących macierze posiada dwie pętle - po jednej dla każdego wskaźnika. Jeśli wybieranie kolejnych elementów odbywa się wierszami to pętla zewnętrzna generuje numery kolejnych wierszy (np.: w=1, 2, 3,...) a dla każdej wartości wskaźnika w pętla wewnętrzna musi wygenerować numery poszczególnych kolumn czyli zarazem numery elementów w danym wierszu. 51 Problem 1 Jak widać w macierzy w każdym wierszu: pierwszy element jest kolejną liczbą nieparzystą każdy następny element jest większy o 4 od poprzedniego Po za tym oczywiście wskaźniki zarówno wiersza jak i kolumny muszą przyjmować kolejne wartości w zakresie liczb naturalnych (w naszym przypadku: 1, 2, 3, 4). 52

Rozwiązanie - program1 53 Rozwiązanie - program2 54

Problem 2 55 Wykresy 56

57 Niektóre funkcje dla wykresu X-Y plot(x,y, opis, x,y, opis,...) - wykres grid on - siatka title( tekst ) - tytuł xlabel( tekst ) - opis osi x ylabel( tekst ) - opis osi x text(x,y, tekst ) - dowolny tekst 58

59 60

Porównanie Matlaba z językiem C 61 Algorytm obliczania kwadratów dowolnych liczb 5) program w języku MATLAB % Program oblicza kwadraty liczb p= 't'; while p=='t' p=='t' disp('obliczanie kwadratow.'); x = input('podaj liczbe :'); y = x^2; disp('kwadrat liczby = '); disp(y); p=input('czy nowe obliczenie? (T/N):', 's'); end 62

6) Obliczanie kwadratów liczb w języku C #include <stdio.h> main() { float x,y; char p; p='t'; while(p=='t' p=='t') { printf("\n OBLICZANIE KWADRATOW. Podaj liczbe:"); scanf("%f",&x); y=x*x; printf("\n Kwadrat liczby= %f",y); printf("\n Czy nowe obliczenia? (T/N):"); p=getch(); } } 63 Niektóre różnice języka C w stos. do Matlaba na pocz. dołącza się biblioteki podprogramów #include... program musi być zdefiniowany jako funkcja main() bloki instrukcji oraz ciała funkcji są ujmowane w { } zamiast end jest nawias klamrowy } wszystkie zmienne muszą mieć zadeklarowane typy każda instrukcja musi kończyć się średnikiem po słowach if, for, while występują nawiasy zamiast funkcji input(... ) użyto funkcji scanf(...) zamiast funkcji input(..., s ) użyto funkcji getch( ) zamiast funkcji disp() użyto funkcji printf() 64

Początki jezyka C Pierwszą wersję języka C opracował Dennis Ritchie w roku 1972 (wykorzystując niektóre rozwiązania z opracowanych w latach1967-1970 języków BCPL oraz B). Pełny opis został zawarty w książce Briana W. Kernighana i Dennisa M. Ritchie: "The C programming language" w roku 1978. Język C opracowano głównie dla potrzeb programistów tworzących systemy operacyjne (w nim napisano w r.1973 system UNIX) i dlatego jest znacznie trudniejszy i bardziej złożony niż np. BASIC - przeznaczony dla początkujących, czy Matlab przeznaczony dla szerokich rzesz użytkowników. Dalszy rozwój języka C doprowadził m.in. do ogłoszenia w roku 1988 standardu języka ANSI C. W latach osiemdziesiątych Bjarne Stroustrup opracował znacznie rozszerzony, obiektowy i dostosowany do graficznego interfejsu język C++ w którym m.in. opracowano system Ms Windows. 65 Struktura programu w C Program w języku C składa się z funkcji. Funkcja jest wydzieloną częścią programu, realizującą pewne zadanie. Główny program musi mieć postać funkcji o nazwie main() - od niej rozpoczyna się wykonanie programu. Instrukcje składające się na kod funkcji (zwany jej "ciałem") umieszcza się w nawiasach klamrowych { }. Oto najprostszy przykład: /* Program wyświetla napis: WITAM */ #include <stdio.h> main() { printf("witam \n"); } Nawiasy klamrowe są także używane wszędzie tam gdzie dwie lub więcej instrukcji ma utworzyć blok, na przykład wewnątrz pętli lub w opcjach instrukcji warunkowej. 66

Komentarze i dyrektywa #include W dowolnych miejscach mogą być umieszczane komentarze ujęte między znakami /*... */ Na początku programu są zazwyczaj tak zwane "dyrektywy preprocesora" rozpoczynające się znakiem #. Dyrektywa #include pozwala wstawić zawartość określonego pliku (w tym przypadku stdio.h), dokładnie w miejscu tej dyrektywy. W szczególności wstawiane są podprogramy. Plik stdio.h to tak zwany plik nagłówkowy (header - o czym świadczy rozszerzenie.h). Zawiera on procedury obsługi standardowego ("std") wejścia i wyjścia ("io" = input-otput) a wśród nich definicję funkcji printf(). 67