155GIT1 / 5. cvičení / Příklady: Porovnání verzí

Z GeoWikiCZ
mBez shrnutí editace
mBez shrnutí editace
Řádek 2: Řádek 2:
{{toc|right}}
{{toc|right}}


== Výpočet směrníku ==
* Vytvořte a otestujte funkci na výpočet faktoriálu zadaného čísla.
 
* Vytvořte a otestujte funkci pro převod čísla z formátu [stupně, minuty, vteřiny] na stupně (zapsány jako desetinné číslo).
K dispozici je textový soubor seznamu souřadnic [http://geo102.fsv.cvut.cz/vyuka/155GIT1/data/body.txt body.txt] ve formátu:
* Vytvořte a otestujte funkci pro převod stupňů (desetinné číslo) na stupně, minuty, vteřiny.
cb Y X
* Vytvořte a otestujte funkci, která bude pro zadané koeficienty ''a'', ''b'', ''c'' kvadratické rovnice <math>ax^2 + bx + c = 0</math> udávat její řešení <math>x_1</math>, <math>x_2</math>. Funkce bude testovat, zda parametr ''a'' je nenulový (v opačném případě se nejedná o kvadratickou rovnici a volání funkce skončí chybovou hláškou bez provedení výpočtu). Nebude-li mít kvadratická rovnice reálné řešení (záporný diskriminant <math>D = b^2 - 4ac</math>), funkce vypíše na standartní výstup (tj. do Command Window) oznámení, že vypočtené kořeny jsou imaginární čísla. Funkce bude také testovat, zda kvadratická rovnice nemá právě jedno řešení (<math>x_1 = x_2</math>, resp. nulový diskriminant). V tom případě bude na standartní výstup také podáno příslušné hlášení.
Vypočítejte směrníky všech bodů ze stanoviska o souřadnicích (''730288.89'', ''1054582.63''). Směrníky udejte v grádové míře. Postup výpočtu zapište do souboru ''smernik.m''.
* Vytvořte a otestujte funkci, která bude pro zadané souřadnice stanoviska a zadaný seznam souřadnic podrobných bodů počítat směrníky všech podrobných bodů z daného stanoviska. Uživatel si bude moci zvolit, zda bude chtít vypočtené směrníky v grádové či stupňové míře nebo v radiánech. Výsledné směrníky budou udány v intervalu <0; 400> gon, resp. <0;360> °, resp. <0; 2<math>\pi</math>> rad.
 
* Vytvořte a otestujte funkci na výpočet sférického trojúhelníka zadaného třemi stranami. Výstupem budou vnitřní úhly sférického trojúhelníka protilehlé k jednotlivým stranám v pořadí podle vstupních proměnných.
* Směrníky převeďte do intervalu <0; 400> gon.
* Vytvořte a otestujte funkci na výpočet sférického trojúhelníka zadaného třemi vnitřními úhly. Výstupem budou strany sférického trojúhelníka protilehlé k jednotlivým vnitřním úhlům v pořadí podle vstupních proměnných.
* Do výstupního souboru ''body_vystup.txt'' zapište na každý řádek:
* Vytvořte a otestujte funkci pro výpočet funkce hyperbolický sinus (''sinh x''). Pro tuto funkci platí rozvoj v nekonečnou řadu, který má tvar
 
cb Y X smernik
 
 
== Hvězdy 1 ==
 
K dispozici je textový soubor [ftp://athena.fsv.cvut.cz/ZFG/GIT1/stars1.txt stars1.txt] <!--[http://geo102.fsv.cvut.cz/vyuka/155GIT1/data/stars1.txt stars1.txt]--> ve formátu:
cislo_jevu  zenitova_vzdalenost[gon]  cas_jevu[hod min]
Soubor obsahuje v řádcích zenitové vzdálenosti poloh hvězd a časy, kdy tyto pozice hvězd v daný den nastanou (např. se může jednat o polohu, kdy je hvězda v daný den nejvýše nad obzorem apod.). Určete:
 
* které z jevů nastanou v noci;
* které z jevů nastanou ve dne;
* které z jevů budou pozorovatelné (pozorovatelné jevy hvězd jsou takové, které jsou nad obzorem a nastanou v noci).
 
Uvažujte, že den začíná v 6 hodin a končí v 18 hodin.
 
Jevy, které vyhovují zadané podmínce, vždy vypište na standardní výstup (Command Window).
 
 
== Hvězdy 2 ==
 
K dispozici je textový soubor [ftp://athena.fsv.cvut.cz/ZFG/GIT1/stars2.txt stars2.txt] <!--[http://geo102.fsv.cvut.cz/vyuka/155GIT1/data/stars2.txt stars2.txt]--> ve formátu:
cislo_jevu  zenitova_vzdalenost[gon]  cas_jevu[hod min]  zacatek_dne[hod min]  konec_dne[hod min]
Soubor obsahuje v řádcích zenitové vzdálenosti poloh hvězd, časy, kdy tyto pozice hvězd v daný den nastanou (např. se může jednat o polohu, kdy je hvězda v daný den nejvýše nad obzorem apod.) a časy začátku dne [hod min] a konce dne [hod min] pro datum příslušného jevu. Určete:
 
* které z jevů nastanou v noci;
* které z jevů nastanou ve dne;
* které z jevů budou pozorovatelné (pozorovatelné jevy hvězd jsou takové, které jsou nad obzorem a nastanou v noci).
 
Jevy, které vyhovují zadané podmínce, vždy vypište na standardní výstup (Command Window).
 
Pozn.: Každý jev je uvažován pro jiné datum, proto jsou v datech ke každému jevu uvedeny jiné začátky a konce dne pro příslušné datum.
 
 
== Výpočet výměr ==
 
K dispozici je textový soubor seznamu souřadnic [http://geo102.fsv.cvut.cz/vyuka/155GIT1/data/body.txt body.txt] ve formátu:
cb y x
Vypočítejte výměru parcely ohraničené body seznamu. Postup výpočtu zapište do souboru ''vymera.m''.
 
Pozn.: Pro výpočet lze použít L´Huillierovy vzorce, viz {{wikipedia| Výpočet plochy pomocí L´Huillierových vzorců}}


<dd>
<math>
<math>
P = \sum\limits_{i=1}^\frac{x_i(y_{i+1} - y_{i-1})}{2}
sinh x = x + \frac{x^3}{3!} + \frac{x^5}{5!} + ... = \sum\limits_{n=1}^\infin \frac{x^{2n-1}}{(2n-1)!}
</math>
</math>


nebo:
Rozvoj je definován pro všechna <math>|x| < +\infin</math>. Výpočet proveďte pro předem zadanou přesnost. Pro kontrolu můžete využít definiční vztah funkce ''sinh x'', který je


<math>
<math>
P = \sum\limits_{i=1}^N  \frac{y_i(x_{i-1} - x_{i+1})}{2}
sinh x = \frac{e^x - e^{-x}}{2},
</math>
</math>


kde <math>N</math> je počet vrcholů plochy (pro <math>i=1</math> je <math>y_{i-1} = y_N</math> a pro <math>i=N</math> je <math>y_{i+1} = y_1</math>; analogicky pro <math>x</math>).
viz {{wikipedia | Hyperbolické funkce}}
 
</dd>
Pozn.: Pro výpočet výměry musejí být lomové body parcely seřazeny za sebou po obvodu parcely (jinak vyjde výměra špatně), a to správným směrem (jinak vyjde výměra záporně). V podkladových souborech ''body.txt'' a ''body2.txt'' jsou body seřazeny správně.
 
[[Image:Body.svg|center]]
 
Dále proveďte:
 
# Vypočtenou výměru ve skriptu zaokrouhlete na celé metry čtvereční a vypište na obrazovku.
# Ověřte správnost postupu výpočtu výměr - vytvořte nový datový soubor s několika málo body, které budou ohraničovat oblast, jejíž výměra je evidentní (např. čtverec: 0 0, 0 1, 1 1, 1 0).
# Doplňte do skriptu test na nedostatečný počet vstupních bodů (pokud počet bodů bude menší než 3, skript vypíše příslušné upozornění a skončí).
 
Jako rozšíření úlohy lze volitelně provést další výpočet (postup uložte do souboru ''vymery.m'').
 
K dispozici je textový soubor [http://geo102.fsv.cvut.cz/vyuka/155GIT1/data/body2.txt body2.txt], který obsahuje parcelní čísla a souřadnice lomových bodů několika parcel.
 
Formát souboru je následující:
 
<pre>
čp1      % parcelní číslo
čb1 y1 x1 % číslo bodu, souřadnice y, x 1.bodu
čb2 y2 x2
...
čbN yN xN
prázdný řádek
další parcela, nebo konec souboru
</pre>
 
Pro představu je k dispozici [http://geo102.fsv.cvut.cz/vyuka/155GIT1/data/nacrt.pdf náčrt] (ve formátu pdf, orientace os S-JTSK).
Vypočítejte výměry všech parcel a zapište je do textového souboru ''vymery.txt'' ve formátu:
 
<pre>
čp1 výměra1
čp2 výměra2
...
celková výměra
</pre>
 
Pozn.: Výměry zapište do souboru zaokrouhlené na celé metry čtvereční.
 
Pro kontrolu výpočtu je k dispozici protokol o hromadném výpočtu výměr vytvořený v programu Kokeš: [http://geo102.fsv.cvut.cz/vyuka/155GIT1/data/vymeryKokes.txt vymeryKokes.txt].

Verze z 12. 3. 2020, 11:06

  • Vytvořte a otestujte funkci na výpočet faktoriálu zadaného čísla.
  • Vytvořte a otestujte funkci pro převod čísla z formátu [stupně, minuty, vteřiny] na stupně (zapsány jako desetinné číslo).
  • Vytvořte a otestujte funkci pro převod stupňů (desetinné číslo) na stupně, minuty, vteřiny.
  • Vytvořte a otestujte funkci, která bude pro zadané koeficienty a, b, c kvadratické rovnice udávat její řešení , . Funkce bude testovat, zda parametr a je nenulový (v opačném případě se nejedná o kvadratickou rovnici a volání funkce skončí chybovou hláškou bez provedení výpočtu). Nebude-li mít kvadratická rovnice reálné řešení (záporný diskriminant ), funkce vypíše na standartní výstup (tj. do Command Window) oznámení, že vypočtené kořeny jsou imaginární čísla. Funkce bude také testovat, zda kvadratická rovnice nemá právě jedno řešení (, resp. nulový diskriminant). V tom případě bude na standartní výstup také podáno příslušné hlášení.
  • Vytvořte a otestujte funkci, která bude pro zadané souřadnice stanoviska a zadaný seznam souřadnic podrobných bodů počítat směrníky všech podrobných bodů z daného stanoviska. Uživatel si bude moci zvolit, zda bude chtít vypočtené směrníky v grádové či stupňové míře nebo v radiánech. Výsledné směrníky budou udány v intervalu <0; 400> gon, resp. <0;360> °, resp. <0; 2> rad.
  • Vytvořte a otestujte funkci na výpočet sférického trojúhelníka zadaného třemi stranami. Výstupem budou vnitřní úhly sférického trojúhelníka protilehlé k jednotlivým stranám v pořadí podle vstupních proměnných.
  • Vytvořte a otestujte funkci na výpočet sférického trojúhelníka zadaného třemi vnitřními úhly. Výstupem budou strany sférického trojúhelníka protilehlé k jednotlivým vnitřním úhlům v pořadí podle vstupních proměnných.
  • Vytvořte a otestujte funkci pro výpočet funkce hyperbolický sinus (sinh x). Pro tuto funkci platí rozvoj v nekonečnou řadu, který má tvar
Rozvoj je definován pro všechna . Výpočet proveďte pro předem zadanou přesnost. Pro kontrolu můžete využít definiční vztah funkce sinh x, který je viz Hyperbolické funkce