Metody numeryczne Laboratorium 2



Podobne dokumenty
1 Podstawy c++ w pigułce.

Przetwarzanie sygnałów

Ćwiczenie 1. Wprowadzenie do programu Octave

I. Podstawy języka C powtórka

Programowanie komputerowe. Zajęcia 1

Ćwiczenie 1. Wprowadzenie do programu Octave

1 Podstawy c++ w pigułce.

Blockly Kodowanie pomoc.

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

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Diary przydatne polecenie. Korzystanie z funkcji wbudowanych i systemu pomocy on-line. Najczęstsze typy plików. diary nazwa_pliku

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

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?

Modelowanie rynków finansowych z wykorzystaniem pakietu R

Podstawy Programowania C++

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

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

Podstawy Automatyki ćwiczenia Cz.1. Środowisko Matlab

Projektowanie aplikacji internetowych Pisanie skryptów wiersza poleceń - pętle

LibreOffice Calc VBA

Programowanie w Scilab

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

Wstęp do Programowania Lista 1

; B = Wykonaj poniższe obliczenia: Mnożenia, transpozycje etc wykonuję programem i przepisuję wyniki. Mam nadzieję, że umiesz mnożyć macierze...

Administracja sieciowymi systemami operacyjnymi III Klasa - Linux

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

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

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

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python

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

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

1 Programowanie w matlabie - skrypty i funkcje

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

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

Zad. 3: Układ równań liniowych

Podstawy JavaScript ćwiczenia

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

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

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

Języki skryptowe w programie Plans

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

Proste programy w C++ zadania

Wprowadzenie do Scilab: podstawy języka Scilab

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Bloki anonimowe w PL/SQL

4. Funkcje. Przykłady

Serwer WWW Apache. Plik konfiguracyjny httpd.conf Definiujemy m.in.: Aktualne wersje 2.4.6, , zakończony projekt

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

Metody i analiza danych

Matlab Składnia + podstawy programowania

JAVAScript w dokumentach HTML (2)

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

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

JAVAScript w dokumentach HTML - przypomnienie

Programowanie 3 - Funkcje, pliki i klasy

Wprowadzenie do Scilab: macierze

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Temat zajęć: Tworzenie skryptów powłoki systemu operacyjnego.

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

Matlab Składnia + podstawy programowania

do MATLABa programowanie WYKŁAD Piotr Ciskowski

PętlaforwOctave. Roman Putanowicz 13 kwietnia 2008

Autor: dr inż. Katarzyna Rudnik

1 Powtórzenie wiadomości

Programowanie w języku Python. Grażyna Koba

zajęcia 2 Definiowanie wektorów:

Matlab, zajęcia 3. Jeszcze jeden przykład metoda eliminacji Gaussa dla macierzy 3 na 3

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

lekcja 8a Gry komputerowe MasterMind

Powtórka algorytmów. Wprowadzenie do języka Java.

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Kiedy i czy konieczne?

Wstęp do Programowania, laboratorium 02

Programowanie strukturalne i obiektowe

Ćwiczenie 3. MatLab: Algebra liniowa. Rozwiązywanie układów liniowych

Cw.12 JAVAScript w dokumentach HTML

Warszawa dnia 2 stycznia 2011 r. Zbiór zadań z programowania w języku C do samodzielnego wykonania

Ćwiczenie 3. Iteracja, proste metody obliczeniowe

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Metody numeryczne. Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet Zielonogórski

1 Przygotował: mgr inż. Maciej Lasota

Język C, tablice i funkcje (laboratorium, EE1-DI)

Język C, tablice i funkcje (laboratorium)

Ćwiczenie 4 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

- wszystkie elementy - wszystkie elementy

JAVAScript w dokumentach HTML (1)

Podstawowe operacje na macierzach, operacje we/wy


Warsztaty dla nauczycieli

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Zanim zaczniemy GNU Octave

Ćwiczenie 3: Wprowadzenie do programu Matlab

Transkrypt:

Metody numeryczne Laboratorium 2 1. Tworzenie i uruchamianie skryptów Środowisko MATLAB/GNU Octave daje nam możliwość tworzenia skryptów czyli zapisywania grup poleceń czy funkcji w osobnym pliku i uruchamiania ich wszystkich z jednym momencie przez uruchomienie skryptu. Pliki skryptu mają rozszerzenie.m, np.: mnozenie.m. Plik taki uruchamiamy podając jego nazwę w linii kom bez rozszerzenia, np. mnozenie. W skryptach mogą znajdować się komentarze zaczynające się od znaku %. Wyświetlanie napisów Przydatne jest wyświetlanie różnych informacji, nie tylko wartości zmiennych. Funkcja disp() Przykłady: imie = 'Tomasz'; wiek = 25; disp('jakiś napis...'); disp(k) k disp(imie); disp(a); % wyświetla napis: Jakiś napis... % wyświetla wartość zmiennej k % również wyświetla wartość zmiennej k ale inaczej % wyświetla wartość zmiennej znakowej % wyświetla macierz A, jeśli taka istnieje Funkcja fprintf() Szablon wyświetlanej treści zawiera pola do uzupełnienia. Pole zaczyna się znakiem % i znaku pola. Najważniejsze typy pól: %d, %i liczba całkowita ze znakiem w formacie dziesiętnym (pi: 3) %x, %X liczby całkowite bez znaku, format szesnastkowy %u liczba całkowita bez znaku w formacie dziesiętnym %e, %E liczba zmiennoprzecinkowa w zapisie naukowym (pi: 3.14e0) %g, %G liczba zmiennoprzecinkowa z automatycznie dobieranym formatem dziesiętnym %f liczba zmiennoprzecinkowa w zapisie dziesiętnym (pi: 3.14) %s łańcuch tekstowy %c znak tekstowy, bajt Inne znaki specjalne: \n przejście do nowej linii \t tabulacja fprintf("liczba pi: %i\n", pi); % wyświetla: Liczba pi: 3 % W miejsce %i oczekiwana jest wartość liczby całkowitej podanej jako drugi parametr fprintf("liczba pi: %f\n", pi); % wyświetla: Liczba pi: 3.141593 fprintf("liczba pi: %e\n", pi); % wyświetla: Liczba pi: 3.141593e+00 fprintf("liczba pi: %.33f\n", pi); % wyświetla: 33 cyfry po przecinku dla liczby pi fprintf('%d+%d=%d\n', 2, 3, 2+3); % wyświetla wyrażenie z dodawaniem dwóch liczb fprintf('%s ma %d lat.\n',imie,wiek); % wyświetla informację o osobie i jej wieku x=65:126; fprintf('%c', x); % wyświetla zakres kodów ASCII od znaku 65 do 126

Ćwiczenia 1.1. Napisać skrypt test.m, w którym utworzymy macierz A=[1 2 3; 4 7 0]. Do zmiennej roza przypiszemy jej rozmiar (funkcja size()). Po uruchomieniu skrypt powinien wyświetlić: Macierz A 1 2 3 4 7 0 Rozmiar macierzy A 2 3 2. Proste konstrukcje programistyczne instrukcje warunkowe Instrukcja warunkowa pozwala wykonać jakąś operację tylko, jeśli wystąpią określone warunki. Trzy rodzaje składni: % najprostsza składnia, tylko if if (warunek) instrukcje wykonywane gdy warunek jest spełniony % zwyczajna składnia, jest warunek (if) i blok alternatywy () if (warunek) instrukcje wykonywane gdy warunek jest spełniony instrukcje wykonywane gdy warunek nie jest spełniony % pełna składnia, wiele różnych warunków (if, if), jedna alternatywa () if (warunek1) instrukcje wykonywane gdy warunek1 jest spełniony if(warunek2) instrukcje wykonywane gdy warunek2 jest spełniony if(warunek3) instrukcje wykonywane gdy warunek3 jest spełniony... instrukcje wykonywane gdy żaden wcześniejszy warunek nie jest spełniony Przykłady: if( max(x)>100 ) disp('wektor x ma wartość większą od 100.'); x = x/10; % dzielimy wartości w x przez 10 x = x + 3; % zwiększamy elementy wektora x o 3

if( size(a,2)==3 ) disp('macierz A ma 3 kolumny.'); if( (a+b>c) && (a+c>b) && (b+c>a) ) disp('boki a, b i c pozwalają na zbudowanie trojkata.') if( a^2+b^2==c^2 ) disp('trojkat jest prostokatny'); disp('boki a, b i c NIE pozwalają na zbudowanie trojkata.') if (a>0) disp('a jest dodatnie'); if(a<0) disp('a jest ujemne'); if(a==0) disp('a jest równe 0'); disp('chyba coś tutaj nie gra...'); 3. Proste konstrukcje programistyczne pętle Mamy do wyboru dwa rodzaje pętli: pętla for i pętla while. Pętla for wykonuje zawarte w niej instrukcje n razy, za każdym razem dla innej wartości przyjmowanej przez indeks. Pętla while wykonuje się dopóki spełniony jest warunek określony przez wyrażenie. for indeks = wartości while wyrażenie

Przykłady: for k=1:10 % wyświetli liczby od 1 do 10 disp(k); for k=[1, -4.3, 5, 12, pi] fprintf('%f\t', k); % wyświetli 5 liczb w zapisie zmiennoprzecinkowym % oddzielonych tabulacją (\t) disp('wartości funkcji sinus:'); % wyświetli ładny opis :) for a=0:0.1:2*pi % pętla zaczyna od wartości 0 i kończy na 2*pi % wyświetlane jest nazwa funkcji sin, wartość argumentu i wartość funkcji printf('sin(%f)=%f\n', a, sin(a) ); A= [1 2 3; 4 5 6; 0 8 1; -2 8 4]; for a=a disp(a); % wyświetli macierz kolumna po kolumnie disp(''); % po wyświetleniu jednej kolumny wyświetlenie pustej linii A= [1 2 3; 4 5 6; 0 8 1]; N=size(A,1); % liczba wierszy M=size(A,2); % liczba kolumn for i = 1:N % i to indeks wiersza for j=1:m % j to indeks kolumny % mnożymy każdy element macierzy przez liczbę 5 A(i,j) = A(i,j) * 5; A % wyświetlamy całą macierz A po wymnożeniu każdego wiersza %dane A=[1,4; -3,0]; B=[-1,1; 4,-2]; %macierz wynikowa - zdefiniowanie rozmiaru C=[2,2]; disp("wynik oczekiwany"); disp(a*b); %mnożenie macierzy A*B -> wynik zapisany w macierzy C for i=1:2 for j=1:2 C(i,j)=A(i,1)*B(1,j)+A(i,2)*B(2,j); ; ;

a=8; % pętla wyświetla liczby: 8, 7, 6, 5,, 1 while a>0 % warunek zakończenia, bardzo ważne disp(a); % wyświetlanie aktualnej wartości zmiennej a a= a - 1; % zmniejszanie a o 1 Ćwiczenia 3.1. Korzystając z pętli for wyświetlić 20 razy napis 'n. Będę się pilnie uczył.' gdzie zamiast n powinien być numer wyświetlanej linii (od 1 do 20). A= [ 1 8 3 2 1 0 9 0 8 ] Ćwiczenia wykonać w skrypcie macierz.m. 3.2. Korzystając z pętli for utworzyć macierz B zwiększając każdy element macierzy A o 3. Porównaj macierz B wynikiem operacji A+3. 3.3. Korzystając z pętli for utworzyć macierz C podnosząc do potęgi 2 wszystkie elementy leżące na głównej przekątnej (taki sam indeks wiersza i kolumny). Sprawdzić wynik. 3.4. Korzystając z pętli for utworzyć macierz D równą sumie macierzy B i C. Porównać macierz B z wynikiem operacji B+C. 3.5. Mnożenie macierzy. Korzystając z potrójnej pętli for wyznaczyć macierz E będącą iloczynem macierzy B i C. Porównać macierz E z wynikiem operacji B*C. 4. Definiowanie własnych funkcji W plikach ze skryptami możemy tworzyć sobie własne funkcje. Pierwsza funkcja w pliku musi mieć taką samą nazwę jak plik! Utworzoną funkcję wywołujemy tak samo jak te zdefiniowane. Ogólny schemat definicji funkcji: function [y1,, yn] = mojafunkcja(x1,, xn) % funkcja bez zwracanej wartości, bez parametrów function mojafunkcja() % funkcja z dwoma parametrami, która jednak nic nie zwraca function mojafunkcja(x1, x2)

% funkcja z jednym parametrem (argumentem), zwracająca trzy wartości function [y1, y2, y3] = mojafunkcja(x1) Przykłady: function asdf() disp('asdf - asdf'); % funkcja tylko wyświetla podany, ustalony napis % Funkcja wyświetla napis 'Uwielbiam ' z odpowiednią wartością zmiennej a. % Jeśli parametr x jest wektorem kolumnowym, to wyświetla napis tyle razy, % ile elementów ma wektor x. function uwielbiam(x) for a=x disp(['uwielbiam metody numeryczne po raz ', num2str(a)]); % funkcja wylicza średnią i ją zwraca, przyjmuje jeden parametr, % który powinien być wektorem kolumnowym function wyn = srednia(x) % określenie wartości zwracanej wyn = 0; for k=x wyn = wyn +k; % liczenie sumy elementów wektora wyn = wyn / length(x); % policzenie i średniej % funkcja ma dwa parametry i dwie wartości zwracane function [suma, iloczyn] = operacje(x1, x2) suma=x1+x2; % liczymy sumę dwóch liczb iloczyn=x1*x2; % liczymy iloczyn tych samych liczb function inna() % funkcja wywołuje inne nasze funkcje zm=magic(3); % utworznie macierzy 3x3 uwielbiam(zm(1,:)); % wywołanie funkcji uwielbiam() dla 3-elem. wektora aa = srednia([1 2 3 4]); disp(aa); % wywołanie funkcji srednia() % wyświetlenie zwróconej wartości [s, il] = operacje(3, 5); % wywołanie funkcji operacje() dla liczb 3 i 5 printf('suma: %d, iloczyn: %d\n', s, il); % wyświetlenie dwóch zmiennych

Ćwiczenia 4.1. Utworzyć plik hello.m. W pliku utworzyć funkcję hello(), która wyświetli napis: 'Witaj roku akademicki!'. Przetestować działanie. 4.2. W tym samym pliku poniżej utworzyć funkcję suma() z jednym parametrem będącym macierzą 3x3, która policzy sumę wszystkich elementów macierzy i zwróci ją. Funkcję dla macierzy magic(3) wywołać w funkcji hello() i wyświetlić zwróconą wartość. 4.3. Napisać funkcję o nazwie wyznacznik2(), która policzy wyznacznik dowolnej macierzy o rozmiarze 2x2 i zwróci wynik. Funkcję uruchomić i przetestować dla przykładowej macierzy PM w funkcji hello(). Porównać wynik z wynikiem operacji det(pm). 4.4. Napisać funkcję o nazwie wyznacznik3(), która policzy wyznacznik dowolnej macierzy o rozmiarze 3x3 i zwróci wynik. Funkcję uruchomić, przetestować, porównać z det(pm). Ćwiczenia inne Inne ciekawe pomysły na funkcje: 2.1. W skrypcie trojkat2.m utworzyć trzy zmienne (a, b, c) mające dowolne długości, reprezentujące boki trójkąta. Wykorzystać instrukcję warunkową do sprawdzenia czy z boków o podanych długościach można zbudować trójkąt. Dla obu możliwych rozwiązań wyświetlić właściwą informację. 2.2. W odniesieniu do zadania 2.1.: jeśli można utworzyć trójkąt, to proszę go narysować. 3.6. Korzystając z pętli, instrukcji warunkowej i funkcji isprime() sprawdzającej czy podana liczbą jest liczbą pierwszą, wyświetlić wszystkie liczby pierwsze mniejsze od 100. Zadanie rozwiązać na dwa sposoby, za pomocą pętli for i pętli while. Porównaj wynik z poleceniem: primes(100). 3.7. Korzystając z pętli for i funkcji fprintf() wyświetlić tabliczkę mnożenia, mniej więcej taką: 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100 3.8. Utworzyć macierz F o rozmiarze 5x5 zawierającą kolejne 25 pierwszych liczb pierwszych. 4.5. Utworzyć funkcję transponuj(), która przyjmuje jeden parametr będący macierzą i zwraca macierz transponowaną. Oczywiście trzeba używać pętli for, nie można użyć samego operatora transponowania czyli '. http://www.naukowiec.org/wiedza/matematyka/macierz-odwrotna_607.html 4.6. Utworzyć funkcję odwrotna2(), która policzy macierz odwrotną dla macierzy 2x2. 4.7. Utworzyć funkcję odwrotna3(), która policzy macierz odwrotną dla macierzy 3x3.