155GIT1 / 8. cvičení: Porovnání verzí

Z GeoWikiCZ
Skočit na navigaci Skočit na vyhledávání
mBez shrnutí editace
mBez shrnutí editace
 
(Není zobrazeno 19 mezilehlých verzí od 2 dalších uživatelů.)
Řádek 1: Řádek 1:
{{Geoinformatika}}
{{Geoinformatika}}
{{Cvičení|155GIT1|8|2. test - algoritmizace a funkce}}
{{Cvičení|155GIT1|8|Uživatelské funkce}}


; Zadání testu
== Náplň ==
* http://moodle-vyuka.cvut.cz/course/view.php?id=183


; Výsledky
# drobné úlohy
* [https://docs.google.com/spreadsheets/d/1We6CEro7T5q766HukoxxTLYYTlvEdsV0i1B1VcHUD6s/edit?usp=sharing souhrnné výsledky]


== Ukázky ==
=== Drobné úlohy ===
'''Funkce pro výpočet nekonečné řady do zadané přesnosti (příklad iterativního výpočtu)'''
např. výpočet funkce arctg(), viz {{wikipedia|Taylorova řada}}:
<source lang=octave>
function arctgx = arctg(x,mez)
% vypocet funkce arctg rozvojem v radu do zadane presnosti
% IN:  x      ... vektor argumentu funkce
%      mez    ... zadana presnost vypoctu
% OUT: arctgx ... vektor vypoctenych uhlu z intervalu <-pi/2,pi/2>
if any(x > 1) | any(x < -1)
    error('arctg: Vstupni hodnoty musi byt z intervalu <-1,1>.')
end
if nargin < 2
    mez = 1e-10;
end
% výpočet pro každý prvek daného vektoru samostatně
for i=1:length(x)
    % start iterace pro i-tý vstupní prvek
    y0 = 100;  % vkládám fiktivní hodnotu, kterou x na vstupu nikdy nemůže nabýt
    % 1.iterace
    n = 1;
    y = x(i);
    while  abs( y-y0 ) > mez
        % n-ta iterace
        n = n+1;
        y0 = y;
        y = y0 + (-1)^(n+1) *  x(i)^(2*n-1)  / (2*n-1);
    end
    % uložení vypočtené hodnoty do výstupní proměnné
    arctgx(i) = y;
    fprintf('Pocet iteraci vypoctu: %d\n',n)
end
</source>
<source lang=octave>
function arctgx = arctg(x,mez)
% vypocet funkce arctg rozvojem v radu do zadane presnosti
% IN:  x      ... matice argumentu funkce
%      mez    ... zadana presnost vypoctu
% OUT: arctgx ... matice vypoctenych uhlu z intervalu <-pi/2,pi/2>
if any(any(x > 1)) | any(any(x < -1))
    error('arctg: Vstupni hodnoty musi byt z intervalu <-1,1>.')
end
if nargin < 2
    mez = 1e-10;
end
% výpočet pro každý prvek dané matice samostatně
for i=1:size(x,1)
    for j=1:size(x,2)
        % start iterace pro i,j-tý vstupní prvek
        y0 = 100;  % vkládám fiktivní hodnotu, kterou x na vstupu nikdy nemůže nabýt
        % 1.iterace
        n = 1;
        y = x(i,j);
        while  abs( y-y0 ) > mez
            % n-ta iterace
            n = n+1;
            y0 = y;
            y = y0 + (-1)^(n+1) *  x(i,j)^(2*n-1)  / (2*n-1);
        end
        % uložení vypočtené hodnoty do výstupní proměnné
        arctgx(i,j) = y;
        fprintf('Pocet iteraci vypoctu: %d\n',n)
    end
end
</source>
== Úlohy ==
* [[155GIT1 / 8. cvičení / Příklady|8. cvičení - příklady]]
<!--
<!--
{{Cvičení|155GIT1|8|Python - Úvod, datové typy, formátování řetězců}}
== Náplň ==
* [https://geo.fsv.cvut.cz/vyuka/155git1/python/git1-python-01-uvod.pdf přednáška]
== Ukázky ==
* [https://gitlab.com/ctu-k155-lectures/155git1-cviceni/-/blob/master/python/cv1/cv1.ipynb notebook]
-->
-->
<!-- -->

Aktuální verze z 24. 4. 2023, 19:07

předchozí cvičenístránky předmětudalší cvičení

Uživatelské funkce

Náplň

  1. drobné úlohy

Ukázky

Drobné úlohy

Funkce pro výpočet nekonečné řady do zadané přesnosti (příklad iterativního výpočtu)

např. výpočet funkce arctg(), viz Taylorova řada:

 function arctgx = arctg(x,mez)
 % vypocet funkce arctg rozvojem v radu do zadane presnosti
 % IN:  x      ... vektor argumentu funkce
 %      mez    ... zadana presnost vypoctu
 % OUT: arctgx ... vektor vypoctenych uhlu z intervalu <-pi/2,pi/2>

 if any(x > 1) | any(x < -1)
     error('arctg: Vstupni hodnoty musi byt z intervalu <-1,1>.')
 end

 if nargin < 2
     mez = 1e-10;
 end

 % výpočet pro každý prvek daného vektoru samostatně
 for i=1:length(x)
     % start iterace pro i-tý vstupní prvek
     y0 = 100;   % vkládám fiktivní hodnotu, kterou x na vstupu nikdy nemůže nabýt
     % 1.iterace
     n = 1;
     y = x(i);
     while  abs( y-y0 ) > mez
         % n-ta iterace
         n = n+1;
         y0 = y;
         y = y0 + (-1)^(n+1) *  x(i)^(2*n-1)  / (2*n-1);
     end
     % uložení vypočtené hodnoty do výstupní proměnné
     arctgx(i) = y;
     fprintf('Pocet iteraci vypoctu: %d\n',n)
 end
 function arctgx = arctg(x,mez)
 % vypocet funkce arctg rozvojem v radu do zadane presnosti
 % IN:  x      ... matice argumentu funkce
 %      mez    ... zadana presnost vypoctu
 % OUT: arctgx ... matice vypoctenych uhlu z intervalu <-pi/2,pi/2>

 if any(any(x > 1)) | any(any(x < -1))
     error('arctg: Vstupni hodnoty musi byt z intervalu <-1,1>.')
 end

 if nargin < 2
     mez = 1e-10;
 end

 % výpočet pro každý prvek dané matice samostatně
 for i=1:size(x,1)
     for j=1:size(x,2)
         % start iterace pro i,j-tý vstupní prvek
         y0 = 100;   % vkládám fiktivní hodnotu, kterou x na vstupu nikdy nemůže nabýt
         % 1.iterace
         n = 1;
         y = x(i,j);
         while  abs( y-y0 ) > mez
             % n-ta iterace
             n = n+1;
             y0 = y;
             y = y0 + (-1)^(n+1) *  x(i,j)^(2*n-1)  / (2*n-1);
         end
         % uložení vypočtené hodnoty do výstupní proměnné
         arctgx(i,j) = y;
         fprintf('Pocet iteraci vypoctu: %d\n',n)
     end
 end

Úlohy