Základy programování (IZP)

Podobné dokumenty
Základy programování (IZP)

Základy programování (IZP)

Základy programování (IZP)

Základy programování (IZP)

Iterační výpočty Projekt č. 2

Základy programování (IZP)

Základy programování (IZP)

Základy programování (IZP)

Základy programování (IZP)

Základy programování (IZP)

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004

Základy programování (IZP)

Základy programování (IZP)

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Programování v C++ 1, 1. cvičení

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

Základy programování (IZP)

Úvod do programování - Java. Cvičení č.4

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Algoritmizace a programování

Programování v C++ 1, 14. cvičení

Programování v jazyce C pro chemiky (C2160) 12. Specifické problémy při vývoji vědeckého softwaru

Základy programování (IZP)

Iterační výpočty. Dokumentace k projektu pro předměty IZP a IUS. 22. listopadu projekt č. 2

Programování v C++, 2. cvičení

Dynamicky vázané metody. Pozdní vazba, virtuální metody

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:

Iterační výpočty. Dokumentace k projektu pro předměty IZP a IUS. projekt č listopadu 2008

Matematická analýza ve Vesmíru. Jiří Bouchala

Střední průmyslová škola strojnická Olomouc, tř.17. listopadu 49

Základy programování (IZP)

Rekurze. Jan Hnilica Počítačové modelování 12

Diskrétní matematika. DiM /01, zimní semestr 2017/2018

POSLOUPNOSTI A ŘADY INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ. Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

POSLOUPNOSTI A ŘADY INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ

Jednoduché cykly

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

Wolfram Alpha. v podobě html stránky, samotný výsledek je často doplněn o další informace (např. graf, jiné možné zobrazení výsledku a

Požadavky k opravným zkouškám z matematiky školní rok

Rekurze. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Úvod do programování 7. hodina

Zimní semestr akademického roku 2015/ ledna 2016

Elektronika pro informační technologie (IEL)

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. December 7, 2016

Úvod do programování. Lekce 5

3. ledna list a odevzdejte tento zvláštní list (listy) i všechny ostatní listy, které jste při řešení

Programy a algoritmy pracující s čísly. IB111 Úvod do programování skrze Python

Základy programování (IZP)

Lekce 01 Úvod do algoritmizace

Diferenciální rovnice 1

I. TAYLORŮV POLYNOM. 2. a) x x3, b) x x3 + x5, c) 1 + 2x x2 2x 4, f (4) (0) = 48, d) x , c)

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

Náplň. v Jednoduché příklady na práci s poli v C - Vlastnosti třídění - Způsoby (algoritmy) třídění

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Poslední nenulová číslice faktoriálu

Vyhledávání. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 21.

I. Kalkulátor Rebell SC2040 manuál s příklady Tlačítko: MODE CLR

Martin Flusser. November 1, 2016

ZÁPOČTOVÝ TEST. Zpracoval Vilém Závodný, #include "stdafx.h" #include "stdio.h"

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

X36UNX 16. Numerické výpočty v sh příkazy expr, bc, dc. Zdeněk Sojka

11MAMY LS 2017/2018. Úvod do Matlabu. 21. února Skupina 01. reseni2.m a tak dále + M souborem zadané funkce z příkladu 3 + souborem skupina.

Projekt OPVK - CZ.1.07/1.1.00/ Matematika pro všechny. Univerzita Palackého v Olomouci

Projekt OPVK - CZ.1.07/1.1.00/ Matematika pro všechny. Univerzita Palackého v Olomouci

Základy algoritmizace a programování

Příklad 1. Řešení 1a Máme vyšetřit lichost či sudost funkce ŘEŠENÉ PŘÍKLADY Z M1A ČÁST 3

- jak udělat konstantu long int: L long velka = 78L;

Matematika III. Miroslava Dubcová, Daniel Turzík, Drahoslava Janovská. Ústav matematiky

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

3 Co je algoritmus? Trocha historie Definice algoritmu Vlastnosti algoritmu... 3

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

Digitální učební materiál

Řídicí struktury. alg3 1

CVIČNÝ TEST 10. OBSAH I. Cvičný test 2. Mgr. Renáta Koubková. II. Autorské řešení 6 III. Klíč 17 IV. Záznamový list 19

Jak v Javě primitivní datové typy a jejich reprezentace. BD6B36PJV 002 Fakulta elektrotechnická České vysoké učení technické

Numerické algoritmy KAPITOLA 11. Vyhledávání nulových bodů funkcí

Posloupnosti a řady. a n+1 = a n + 4, a 1 = 5 a n+1 = a n + 5, a 1 = 5. a n+1 = a n+1 = n + 1 n a n, a 1 = 1 2

12. Automatické vyhodnocení derivací. jaro 2012

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Rozvinutí funkce do Maclaurinova rozvoje

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: Předmět: ZAP

Komplexní čísla, Kombinatorika, pravděpodobnost a statistika, Posloupnosti a řady

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

Otázky z kapitoly Posloupnosti

Tato tematika je zpracována v Záznamy přednášek: str

Algoritmizace a programování

Desetinná čísla. pro celá čísla jsme používali typ int. pro desetinná čísla používáme typ double

4.2.5 Orientovaný úhel II

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Úvod do programování. Lekce 3

11. Číselné a mocninné řady

. je zlomkem. Ten je smysluplný pro jakýkoli jmenovatel různý od nuly. Musí tedy platit = 0

Úvod do programování. Lekce 1

Požadavky k opravným zkouškám z matematiky školní rok

Zimní semestr akademického roku 2014/ prosince 2014

Výčtový typ strana 67

Příklad 1. Řešení 1a Máme řešit rovnici ŘEŠENÉ PŘÍKLADY Z M1A ČÁST 1. Řešte v R rovnice: = = + c) = f) +6 +8=4 g) h)

Transkript:

Základy programování (IZP) Sedmé počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 2018/2019, 8. týden

Důležité informace Můj profil: http://www.fit.vutbr.cz/~iveigend/ Kancelář: A221 Konzultační hodiny: po domluvě emailem Karta Výuka odkaz na osobní stránky Komunikace: email prosím používejte předmět: IZP - <předmět emailu> IZP cvičení 7 2

Důležité informace Příští týden 16. 11. 2018 Půlsemestrální zkouška IZP cvičení 7 3

Náplň cvičení Seznámení se zadáním druhého projektu Iterační výpočty IZP cvičení 7 4

SEZNÁMENÍ S DRUHÝM PROJEKTEM IZP cvičení 7 5

Implementační detaily Použití hlavičkového souboru math.h je zakázáno, kromě povolených: Funkcí log(), pow(), isnan(), isinf() Konstant NAN, INFINITY Nezapomeňte důkladně testovat na merlinovi!!! Pozor na ošetření vstupních hodnot IZP cvičení 7 6

ITERAČNÍ VÝPOČTY IZP cvičení 7 7

Rekurentní problémy Rekurentní problém: výpočet nové hodnoty závisí na hodnotě výpočtu z předcházejícího kroku Rekurentní vztah obecně: Y i+1 = F(Y i ) Pro výpočet hodnoty Y i+1 je nutné zjistit hodnotu Y i IZP cvičení 7 8

Rekurentní problémy Musí být dána počáteční hodnota Y 0 Co musí platit pro hodnoty získané posloupnosti Y i+1 = F(Y i ) pro y 0 Y i Y j pro všechna i j Y i pro i < N nesplňuje podmínky požadované hodnoty Y N splňuje podmínky hledané hodnoty IZP cvičení 7 9

Posloupnosti Algoritmické schéma posloupnosti Y = y0; // Y proměnná, y0 počáteční hodnota while( B(Y)) // dokud není splněna koncová podmínka Y = F(Y); // budeme počítat další prvek // posloupnosti IZP cvičení 7 10

Posloupnosti Algoritmické schéma posloupnosti Y = y0; // Y proměnná, y0 počáteční hodnota while( B(Y)) // dokud není splněna koncová podmínka Y = F(Y); Zápis v C může vypadat např. // budeme počítat další prvek // posloupnosti IZP cvičení 7 11

Posloupnosti Algoritmické schéma posloupnosti Y = y0; // Y proměnná, y0 počáteční hodnota while( B(Y)) // dokud není splněna koncová podmínka Y = F(Y); Zápis v C může vypadat např. double y = y0; // budeme počítat další prvek // posloupnosti while(!b(y)) // dokud není splněna koncová podmínka return y; y = f(y); // budeme počítat další prvek // posloupnosti IZP cvičení 7 12

Ukončovací podmínka Běžně se iterační výpočet ukončí, pokud Y i Y i 1 EPS To se dá v C zapsat např. Algoritmické schéma lze použít pro výpočet číselných řad (Taylorův rozvoj), kterými lze aproximovat funkce IZP cvičení 7 13

Ukončovací podmínka Běžně se iterační výpočet ukončí, pokud Y i Y i 1 EPS To se dá v C zapsat např. double y = y0; // aktuální člen double yp; // předchozí člen do { yp = y; // uložíme hodnotu předchozího členu y = f(y); // vypočítáme další člen } while (fabs(y - yp) > eps); Algoritmické schéma lze použít pro výpočet číselných řad (Taylorův rozvoj), kterými lze aproximovat funkce IZP cvičení 7 14

Druhá odmocnina Newtonovou metodou Implementujte funkci, která vypočítá druhou odmocninu x Newtonovou metodou y i+1 = 1 2 x y i + y i Prototyp funkce si vhodně zvolte Můžete použít funkci sqrt(x) pro ověření funkčnosti řešení IZP cvičení 7 15

Algoritmické schéma double y = y0; // aktuální člen double yp; // předchozí člen do { yp = y; // uložíme hodnotu předchozího členu y = f(y); // vypočítáme další člen } while (fabs(y - yp) > eps); y i+1 = 1 2 x y i + y i eps=0.00001 sqrt(x) Jako y0 použijte x, místo ½ použijte 0.5 IZP cvičení 7 16

Continued Fractions ZŘETĚZENÉ ZLOMKY IZP cvičení 7 17

Algoritmické schéma double cf = 1.0; // nebo 0.0 double a, b, k = n; // n maximální úroveň zanoření for (; k >= 1; k--) { a = fa(k); b = fb(k); cf = b / ( a + cf ); } return a0 + cf; IZP cvičení 7 18

Zřetězené zlomky Implementujte výpočet čísla π pomocí zřetězeného zlomku: 4 π = 1 + 1 2 + 2 + 9 25 2 + 49 2 + IZP cvičení 7 19

Zřetězené zlomky Implementujte výpočet čísla π pomocí zřetězeného zlomku: 4 π = 1 + 1 2 + 2 + 9 25 2 + 49 2 + n = 4 IZP cvičení 7 20

Zřetězené zlomky Implementujte výpočet čísla π pomocí zřetězeného zlomku: n = 3 4 π = 1 + 1 2 + n = 4 2 + 9 25 2 + 49 2 + IZP cvičení 7 21

Zřetězené zlomky Implementujte výpočet čísla π pomocí zřetězeného zlomku: n = 2 n = 3 4 π = 1 + 1 2 + n = 4 2 + 9 25 2 + 49 2 + IZP cvičení 7 22

Zřetězené zlomky Implementujte výpočet čísla π pomocí zřetězeného zlomku: n = 1 n = 2 n = 3 4 π = 1 + 1 2 + n = 4 2 + 9 25 2 + 49 2 + IZP cvičení 7 23

Zřetězené zlomky Implementujte výpočet čísla π pomocí zřetězeného zlomku: n = 0 n = 1 n = 2 n = 3 4 π = 1 + 1 2 + n = 4 2 + 9 25 2 + 49 2 + IZP cvičení 7 24

Zřetězené zlomky (výpočet π) 4 π = 1 + 1 9 2 + 25 2 + 2 + 49 2 + double cf = 1.0; // nebo 0.0 double a, b, k = n; // n maximální úroveň zanoření for (; k >= 1; k--) { } a = fa(k); b = fb(k); cf = b / ( a + cf ); return a0 + cf; // pouze pravá strana IZP cvičení 7 25

ČÁSTEČNÉ SOUČTY (ŘADY) IZP cvičení 7 26

Řady (částečné součty) K výpočtu řad se používají částečné součty Pro řadu t 0, t 1, t 2, t 3,, kde t i = f t i 1 můžeme napsat řadu částečných součtů s 0, s 1, s 2, s 3,, kde s i = Můžeme je opět řešit rekurentně: s 0 = t 0 s 1 = s 0 + t 1 = t 0 + t 1 i j=0 s i = s i 1 + t i částečný součet pro aktuální člen je částečný součet pro předchozí člen + hodnota aktuálního členu t j IZP cvičení 7 27

Řady (částečné součty) Algoritmické schéma T = t0; // první člen řady S = T; // součet = první člen řady while( B(S, T)) { } T = f(t); // vypočítáme nový člen řady S = S + T; // tento člen přičteme k aktuálnímu // částečnému součtu Je nutné si vždy zjistit, jak se od sebe liší jednotlivé členy řady Pozor: Některé řady konvergují nejrychleji jen v omezeném definičním oboru funkce IZP cvičení 7 28

Posloupnosti vs. řady (částečné součty) Y = y0; // Y proměnná, y0 počáteční hodnota while( B(Y)) // dokud není splněna koncová podmínka Y = F(Y); // budeme počítat další prvek // posloupnosti T = t0; // první člen řady S = T; // součet = první člen řady while( B(S, T)) { } T = f(t); // vypočítáme nový člen řady S = S + T; // tento člen přičteme k aktuálnímu // částečnému součtu IZP cvičení 7 29

Částečné součty Pomocí částečných součtů implementuje výpočet exponenciální funkce e x. (Taylorova) řada má následující tvar: e x = 1 + x + x2 2! + x3 3! + x4 4! + Výsledek porovnejte s matematickou knihovnou math.h a obě hodnoty vypište na standardní výstup Nemůžete použít mocninu, faktoriál a funkci exp(x) z matematické knihovny math.h. Můžete použít funkci fabs()pro výpočet absolutní hodnoty a exp(x) pro ověření funkčnosti řešení IZP cvičení 7 30

Částečné součty (66.684 ) x = 4.2; eps = 0.01; e x = 1 + x + x2 2! + x3 3! + x4 4! + double t = t0; // první člen řady double s = t; int i = 1; while (fabs(t) > eps) { // součet = první člen řady // index aktuálního členu řady t = f(t, i); // vypočítáme nový člen řady s = s + t; } return s; // tento člen přičteme k // aktuálnímu částečnému součtu IZP cvičení 7 31

PŘÍKLADY K PROCVIČENÍ IZP cvičení 7 32

Příklad na rozehřátí Implementujte funkci void getmax(int *pole, int len, int *max); která vyhledá v poli maximální hodnotu a vrátí ji přes ukazatel IZP cvičení 7 33

Příklad na rozehřátí Implementujte funkci void getmax(int *pole, int len, int *max); která vyhledá v poli maximální hodnotu a vrátí ji přes ukazatel Jak inicializujeme pole? IZP cvičení 7 34

Příklad na rozehřátí Implementujte funkci void getmax(int *pole, int len, int *max); která vyhledá v poli maximální hodnotu a vrátí ji přes ukazatel Jak inicializujeme pole? int pole[10]={7,2,3,9,15,20,-1,42,100,-75}; IZP cvičení 7 35

Příklad na rozehřátí Implementujte funkci void getmax(int *pole, int len, int *max); která vyhledá v poli maximální hodnotu a vrátí ji přes ukazatel Jak inicializujeme pole? int pole[10]={7,2,3,9,15,20,-1,42,100,-75}; Jak zavoláme funkci getmax()? IZP cvičení 7 36

Příklad na rozehřátí Implementujte funkci void getmax(int *pole, int len, int *max); která vyhledá v poli maximální hodnotu a vrátí ji přes ukazatel Jak inicializujeme pole? int pole[10]={7,2,3,9,15,20,-1,42,100,-75}; Jak zavoláme funkci getmax()? int maximum = 0; getmax(pole, &maximum); IZP cvičení 7 37

Příklad 3: Zřetězené zlomky Implementujte výpočet čísla π pomocí zřetězeného zlomku: 4 π = 1 + 1 2 + Čitatele se vypočítají podle vztahu (2 n 1) 2 9 2 + 25 2 + IZP cvičení 7 38

Příklad 4: práce s řetězci Implementujte si vlastní funkci pro lexikografické porovnání dvou řetězců int strcmpmy(char* s1, char* s2); Funkce vrací: 0 pokud s1 == s2-1 pokud s1 < s2 1 pokud s1 > s2 Vyzkoušejte implementovat i další funkce z knihovny string.h IZP cvičení 7 39

Děkuji Vám za pozornost! IZP cvičení 7 40