Operacje na wektorach i macierzach.

Podobne dokumenty
WEKTORY I MACIERZE. Strona 1 z 11. Lekcja 7.

Wprowadzenie do programu Mathcad 15 cz. 1

Ćwiczenie 1. Wprowadzenie do programu Octave

Ćwiczenie 1. Wprowadzenie do programu Octave

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

1 Podstawy c++ w pigułce.

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

Przetwarzanie sygnałów

Metody numeryczne Laboratorium 2

Zapis algorytmów: schematy blokowe i pseudokod 1

Matlab Składnia + podstawy programowania

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

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

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Programowanie - wykład 4

1 Podstawy c++ w pigułce.

Konstrukcje warunkowe Pętle

Podstawy Programowania C++

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Modelowanie rynków finansowych z wykorzystaniem pakietu R

4. Funkcje. Przykłady

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

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

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

Zmienne i struktury dynamiczne

Proste programy w C++ zadania

lekcja 8a Gry komputerowe MasterMind

Programowanie w języku Python. Grażyna Koba

Programowanie obiektowe - zadania

Instrukcje sterujące

Obliczenia iteracyjne

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Zaprojektować i zaimplementować algorytm realizujący następujące zadanie.

JAVAScript w dokumentach HTML (2)

=jeżeli(warunek;prawda;fałsz)

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Programowanie w języku C++ Grażyna Koba

EXCEL Prowadzący: dr hab. inż. Marek Jaszczur Poziom: początkujący

Wprowadzenie do Mathcada 1

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

Programowanie dynamiczne

Liczby losowe i pętla while w języku Python

Język C, tablice i funkcje (laboratorium)

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ć

MACIERZE. Sobiesiak Łukasz Wilczyńska Małgorzata

Ćwiczenie 3. Iteracja, proste metody obliczeniowe

WHILE (wyrażenie) instrukcja;

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

3. Instrukcje warunkowe

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

Laboratorium nr 1. i 2.

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Pętle. Programowanie komputerowe

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

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

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

Matlab Składnia + podstawy programowania

Rozwiązywanie problemów z użyciem Solvera programu Excel

MATHCAD elementy programowania

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

1,3,4,2,3,4,0,1,4,5,0. Wówczas największa suma trzech kolejnych liczb (zaznaczone na czerwono) wynosi:

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

Metody i analiza danych

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

WHILE (wyrażenie) instrukcja;

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

Zadeklarowanie tablicy przypomina analogiczną operację dla zwykłych (skalarnych) zmiennych. Może zatem wyglądać na przykład tak:

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

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

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Przykładowo, jeśli współrzędna x zmienia się od 0 do 8 co 1, a współrzędna y od 12 co 2 do 25, to punkty powinny wyglądać następująco:

Pytania sprawdzające wiedzę z programowania C++

for - instrukcja pętli "dla" umożliwia wielokrotne obliczenie sekwencji wyrażeń s s + k s while z j

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

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

Część XVII C++ Funkcje. Funkcja bezargumentowa Najprostszym przypadkiem funkcji jest jej wersja bezargumentowa. Spójrzmy na przykład.

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

Bloki anonimowe w PL/SQL

Wstęp do informatyki Ćwiczenia. Piotr Fulmański

Elementy projektowania inzynierskiego Przypomnienie systemu Mathcad

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

Pętle. Dodał Administrator niedziela, 14 marzec :27

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.

Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne

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

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

LibreOffice Calc VBA

1. Indeksy/indeksowanie : Do elementów wektora, list, macierzy czy ramek, można się odwołać na kilka sposobów.

*W uproszczeniu: jest dziewięciu sędziów przyznających po dwie noty: za wartość techniczną i artystyczną (skala od 0.0 do 6.0)

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Warsztaty dla nauczycieli

Wprowadzenie do formuł i funkcji

PAKIET MathCad - Ćzęść II

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

Uniwersytet Kazimierza Wielkiego w Bydgoszczy Zespół Szkół nr 5 Mistrzostwa Sportowego XV Liceum Ogólnokształcące w Bydgoszczy

Warunki logiczne instrukcja if

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

Odczyt danych z klawiatury Operatory w Javie

Excel formuły i funkcje

Transkrypt:

(C) -8 by B.Gudowski & J. Wąs & L.Dutkiewicz Operacje na wektorach i macierzach. Ponieważ wymiary wektorów i macierzy w MathCADzie są w pełni dynamiczne często zachodzi potrzeba ich ustalenia np. przy konstrukcji pętli. Oto lista najczęściej stosowanych funkcji: cols(m) - zwraca liczbę kolumn macierzy M rows(m) - zwraca liczbę wierszy macierzy M length(v) - zwraca długość wektora v (rozumianą jako ilość składowych wektora!) last(v) - zwraca indeks ostatniego elementu wektora Przykłady: w M 7 8 9 length( w) = last( w) = cols( M) = rows( M) = bo wektor w posiada składowe wynik zwracany przez funkcję last() jest uzależniony od długości wektora (ilości elementów składowych wektora) oraz od wartości zmiennej ORIGIN Rozmiary macierzy i wektorów w MathCADzie nie są stałe. Użytkownik w razie potrzeby może dodawać wiersze i/lub kolumny do macierzy oraz składowe wektorów dynamicznie (programistycznie): jeżeli przy odczycie wartości elementu wektora/macierzy podamy indeks nieistniejącego elementu (indeks poza zakresem) MathCAD zgłosi błąd natomiast przy zapisie wartości do elementu wektora/macierzy podamy indeks poza zakresem MathCAD automatycznie powiększy wektor/macierz tak aby nowy element należał do tablicy - pola których wartości MathCAD "nie zna" zostaną automatycznie wypełnione zerami Przykłady: M M = M A 8.8, M =, M = A = 8.8 ŹLE: próbujemy odczytać wartości nieistniejących elementów macierzy DOBRZE: co prawda macierz ma tylko dwie kolumny a my próbujemy zmienić kolumnę czwartą ale przypisanie jej wektora (wektor musi być pionowy i musi mieć tyle elementów ile wierszy ma macierz) powoduje automatyczne powiększenie macierzy o dodatkowe dwie kolumny; następnie trzecia kolumna zostaje wypełniona zerami a do czwartej zostaje wstawiony podany przez nas wektor! Ten przykład pokazuje, że używając opisanego powyżej mechanizmu możemy tworzyć nowe macierze od podstaw: w tym przypadky zmienna A nie była w ogóle wcześniej zdefiniowana! Tutaj nakazujemy MathCADowi przypisać wartość 8.8 elementowi jeszcze nieistniejącej macierzy znajdującemu się na przecięciu -go wiersza i -tej kolumny (ORIGIN jest równy!). Zatem MathCAD stworzy dla nas macierz zerową o wymiarach na i przypisze wartość 8.8 ostatniemu elementowi tej macierzy - -

(C) -8 by B.Gudowski & J. Wąs & L.Dutkiewicz Ten sam mechanizm działa także w przypadku wektor wektor = wektorów (w końcu wektor to szczególny przypadek macierzy). Definiowanie funkcji i interfejs programistyczny w MathCADzie W MathCADzie możemy definiować własne funkcje. Rozróżniamy funkcje proste, które składają się z pojedynczego wyrażenia artytmetyczno-logicznego, oraz funkcje złożone, które zbudowane są z sekwencji wyrażeń arytmetyczno logicznych. W przypadku funkcji złożonej pionową kreskę uzyskujemy wybierając Add Line z menu Programming funkcja_prosta( a, b) a + b funkcja_prosta(, ) = przykład dwuargumentowej funkcji prostej zwracającej jako wynik sumę podanych argumentów funkcja_zlozona( a, b, c) tymczasowa a + b c tymczasowa funkcja_zlozona(,, ) = przykład funkcji złożonej liczącej (w sztucznie skomplikowany sposób) iloczyn sumy dwóch pierwszych argumentów i trzeciego argumentu Wartością zwracaną przez funkcję jest wartość ostatnio wykonanego wyrażenia funkcji. Zazwyczaj jest to po prostu ostatnie wyrażenie w funkcji. W przypadku bardziej skomplikowanych funkcji złożonych, w których występują wyrażenia warunkowe można wymusić wcześniejsze zakończenie funkcji z jednoczesnym zwróceniem wartości za pomocą instrukcji return: funkcja_zlozona( a, b) losowa rnd( ) a + b + losowa funkcja_zlozona( a, b) return if b = losowa rnd( ) a + losowa b tutaj return jest niepotrzebny, wartość wyrażenia a+b+losowa jest wartością zwracaną przez funkcję w tym przypadku jeśli b jest równe natychmiast wychodzimy z funkcji z wartością, natomiast w przeciwnym razie zwracana jest wartość ostatniego wyrażenia W powyższej funkcji złożonej najpierw należy wybrać z menu Programming instrukcję if, a następnie użyć return z tego samego menu Wewnątrz funkcji można używać zarówno zmiennych globalnych, tj. takich które zostały zdefiniowane przed definicją funkcji, oraz zmiennych lokalnych, tj. takich które zostały zdefiniowane wewnątrz funkcji i są widoczne tylko i wyłącznie wewnątrz funkcji. Uwaga: argumenty funkcji są zmiennymi lokalnymi. a fx ( ) x + ff( x) t x + a t a jest zmienną globalną x jest zmienną lokalną x oraz t są zmiennymi lokalnymi, natomiast a jest zmienną globalną - -

(C) -8 by B.Gudowski & J. Wąs & L.Dutkiewicz Nazwa funkcji czy też nazwa zmiennej to po prostu pewien identyfikator. Podobnie jak w języku C++ identyfikatory w MathCADzie mogą być przesłaniane. Innymi słowy, wewnątrz funkcji możemy używać zmiennej o takiej samej nazwie jak istniejąca zmienna globalna, z tym że lokalna wersja "przesłoni" wersję globalną. Na przykład: wartosc tozsamosc( wartosc) wartosc wartosc = tozsamosc( ) = wartosc = nasza zmienna globalna ma przypisaną wartość definiujemy prostą funkcję tożsamościową, której argument ma taką samą nazwę jak zmienna globalna zatem zmienna wartosc wewnątrz funkcji to zupełnie inna zmienna niż globalna wartosc Wewnątrz funkcji można używać wyrażeń warunkowych if... else. W MathCADzie obok instrukcji if występuje również funkcja if!!! Należy umieć rozróżnić instrukcję if od funkcji if. Instrukcję if możemy wstawić tylko i wyłącznie przy użyciu odpowiedniego paska narzędziowego lub skrótu klawiszowego. Jeżeli wpiszemy z klawiatury "if" MathCAD uzna, że chodzi nam o funkcję if(). Funkcja if(): if(warunek, wyrażenie, wyrażenie) Jeżeli warunek jest różny od zera funkcja zwróci wartość wyrażenia wyrażenie, w przeciwnym wypadku zwrócona zostanie wartość wyrażenia wyrażenie Instrukcja if... otherwise: wyrażenie if warunek [ wyrażenie if warunek ] [ wyrażenien otherwise ] wyrażenie zostanie wykonane tylko wtedy jeżeli warunek jest różny od zera. Wyrażenia podane w nawiasach kwadratowych są opcjonalne. Instruckja otherwise jest odpowiednikiem instrukcji else z języka C/C++ Przykład wykorzystania fukncji if(): moje_minimum( a, b) if( a < b, a, b) moje_minimum(, ) = Przykład wykorzystana instrukcji if: moje_minimum( a, b) a if a < b b otherwise moje_minimum(, ) = MathCAD pozwala na użycie klasycznej pętli for. Zakres iteracji dla pętli for podajemy definiując odpowiedni ciąg artymetyczny (jak zdefiniować ciąg mówiliśmy na pierwszych zajęciach). Podobnie jak inne instrukcje MathCADa, instrukcji for nie można tak po prostu wpisać z klawiatury. Należy posłużyć się paskiem narzędzi albo odpowiednim skrótem klawiszowym. Przykład : zdefiniujemy funkcję tworzącą macierz m na n i wypełniającą poszczególne wiersze macierzy numerem wiersza prosta_macierz( m, n) for wiersz.. m for kolumna.. n macierz wiersz + wiersz, kolumna macierz postac funkcji przy założeniu że ORIGIN - -

(C) -8 by B.Gudowski & J. Wąs & L.Dutkiewicz prosta_macierz( m, n) prosta_macierz(, ) = for wiersz ORIGIN.. ORIGIN + m for kolumna ORIGIN.. ORIGIN + n macierz wiersz + wiersz, kolumna macierz postac funkcji dla dowolnego ORIGIN Przykład : napiszemy funkcję obliczającą średnią artymetyczną elementów składowych wektora podanego jako argument funkcji. srednia( wektor) suma for indeks.. last( wektor) suma suma + wektor indeks suma length( wektor) funkcja przy założeniu że ORIGIN UWAGA: w praktyce zadanie to można wykonać prościej (bez użycia interfejsu programistycznego) w dużo bardziej czytelny i elegancki sposób: SREDNIA( wektor) wektor length( wektor) przy takim zapisie ustawienie ORIGIN jest bez znaczenia! Przykład : Napiszemy dwie wersje funkcji sumującej wszystkie elementy macierzy podanej jako argument. funkcja przy założeniu że ORIGIN cols( M) sumator( M) sumator( M) suma test kolumna = for wiersz.. rows( M) for kolumna.. cols( M) suma M kolumna suma suma + M wiersz, kolumna sumator( test) = sumator( test) = Drugim rodzajem pętli występującym w MathCADzie jest pętla typu while, która jest wykonywana dopóty dopóki spełniony jest podany warunek. W podanym poniżej przykładzie sumujemy liczby losowe z przedziału <; > do chwili aż suma tych liczb będzie większa niż podany argument: - -

(C) -8 by B.Gudowski & J. Wąs & L.Dutkiewicz sumowanie_losowe( maxsuma) suma iteracje while suma maxsuma suma suma + rnd( ) iteracje iteracje + iteracje sumowanie_losowe( ) = za każdym razem ciąg liczb pseudolosowych jest inny i sumowanie_losowe( ) = 7 dlatego za pierwszym razem trzeba było iteracji, a za drugim tylko 7 żeby suma wylosowanych liczb była większa od Przykład rozwiązania prostego zadania programistycznego: Napisz funkcję która utworzy macierz jednostkową ( której wszyskie elementy równe zero z wyjątkiem elementów diagonali równych jeden):. Ustaw parametr ORGIN, aby rozpocząć numerowanie wierszy i kolumn od. Podaj nazwę funkcji i zmienne wejściowe: macierz_jednostkowa(n), gdzie n-rozmiar macierzy. Otwórz menu Programming i wybierz opcję "Add Line" w celu definicji funkcji.. Wybierz pętlę "for" z menu programming w celu definicji elementów macierzy: dla zmiennej i oraz dla zmiennej j (pętla w pętli).. Zainicjalizuj zmienne dla obydwu pętli: "i" oraz "j".. Wskaż zakres zmiennych wykonywania się pętli: z menu Matrix wybierz opcję "m..n".. Utwórz blok instrukcji pod pętlami "for" wybierając opcję "Add Line".. Użyj instrukcji "if" z menu Programming: wartość elementów macierzy A i,j (Polecenie "Subscript" z menu Matrix, zaznacz całość wyrażenia A i,j spacją, operator przypisania strzałka(z menu "Programming"), prawa strona wyrażenia if znak "=" z menu Boolean... Użyj instrukcji "otherwise" z menu Programming. Zwróć macierz A jako wartość funkcji (uwaga: nie A i,j!) ORIGIN macierz_jednostkowa( n) for i.. n for j.. n A if i = j i, j A i, j otherwise A macierz_jednostkowa( ) = ZADANIA DO SAMODZIELNEGO WYKONANIA Zadanie : Napisz funkcję mac(m,n) gdzie parametry m, n określają wymiary macierzy wynikowej, która będzie wypełniona w/g algorytmu: jeśli indeks wiersza jest większy od indeksu kolumny wartością komórki jest indeks wiersza, w przeciwnym wypadku wartością komórki jest indeks kolumny. - -

(C) -8 by B.Gudowski & J. Wąs & L.Dutkiewicz Zadanie : Napisz funkcję hilbert(n) zwracającą wypełnioną macierz Hilberta o rozmiarze n. Definicja macierzy Hilberta znajduje się np. tutaj: http://pl.wikipedia.org/wiki/macierz_hilberta UWAGA: proszę zwrócić baczną uwagę na to od jakiej wartości powinny startować indeksy wierszy i kolumn macierzy Hilberta! Zadanie : Przy użyciu pętli for lub while napisz funkcję fibonacci(n), która będzie zwracała n-elementowy ciąg Fibonacciego (ściślej: funkcja ma zwrócić wektor którego elementy są kolejnymi wyrazami ciągu Fibonacciego). Ciąg Fibonnaciego jest to ciąg, którego pierwsze dwa elementy są równe, zaś każdy następny element ciągu jest równy sumie dwóch poprzednich elementów. Np. pierwszych pięć wyrazów ciągu Fibonacciego wygląda następująco:,,,, Zadanie : Napisz funkcje dolna(m), gorna(m), diagonalna(m), które z podanej jako argument macierzy M będą "wyciągały" macierze odpowiednio: poddiagonalną, naddiagonalną i diagonalną. Zadanie : Napisz funkcje minimum(m) i maksimum(m), które będą zwracały wartość odpowiednio najmniejszego i największego elementu podanej macierzy. Uwaga: w MathCADzie istnieją funkcje min() i max(), które to robią - można ich użyć do sprawdzenia wyniku. Celem ćwiczenia jest napisane własnych wersji tych funkcji. Zadanie : Napisz funkcję macierz_koncentryczna(n), która będzie zwracała macierz kwadratową o wymarach n na n wypełnioną w/g schematu: najbardziej skrajne wiersze i kolumny są wypełnione jedynkami, każdy wewnętrzny "krąg" jest wypełniony wartością o jeden większą. Np. macierz x powinna wyglądać następująco: Zadanie 7: Napisz funkcję eratostenes(n) wyznaczającą wszystkie liczby pierwsze w przedziale <; n> przy użyciu algorytmu sita Eratostenesa. Algorytm sita Eratostenesa jest opisany np. pod tym adresem: http://pl.wikipedia.org/wiki/sito_eratostenesa - -