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

Z GeoWikiCZ
mBez shrnutí editace
mBez shrnutí editace
Řádek 1: Řádek 1:
{{Geoinformatika}}
{{Geoinformatika}}
{{Cvičení|155GIT1|7|Uživatelské funkce}}
{{Cvičení|155GIT1|7|Test Matlab/Octave}}


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


# drobné smíšené úlohy
<!--
 
; Výsledky
== Ukázky ==
* [https://docs.google.com/spreadsheets/d/1We6CEro7T5q766HukoxxTLYYTlvEdsV0i1B1VcHUD6s/edit?usp=sharing souhrnné výsledky]
 
-->
=== 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
 
% vypocet pro kazdy prvek daneho vektoru samostatne
for i=1:length(x)
    % start iterace pro i-ty vstupni prvek
    y0 = 100; % vkladam fiktivni hodnotu, kterou x na vstupu nikdy nemuze nabyt
    % 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
    % ulozeni vypoctene hodnoty do vystupni promenne
    arctgx(i) = y;
    fprintf('Pocet iteraci vypoctu: %d\n',n)
end
</source>
 
'''Funkce pro načtení neformátovaných dat po řádcích'''
 
např. záměna čárky za tečku:
 
<source lang=octave>
function teckazacarku(file)
% vyhleda vsechny carky v souboru a zameni je za tecku
% IN: file ... jmeno vstupniho souboru (textovy retezec)
 
if ischar(file) == 0
    error('Jmeno vstupniho souboru musi byt textovy retezec.');
end
 
vstup = fopen(file,'r');
 
filenew = [file(1:end-4), '_upr', file(end-3:end)];  % jmeno noveho souboru
vystup = fopen(filenew,'w');
 
konec = 0;  % indentifikator konce souboru
while konec==0
    radek = fgets(vstup);  % fgets() nacte 1 radek souboru (se znakem \n)
    for i=1:length(radek)
        if radek(i) == ','
            radek(i) = '.';
        end
    end
    fprintf(vystup,'%s',radek);
    konec = feof(vstup);  % feof() vrati pro konec souboru hodnotu 1, jinak vraci hodnotu 0
end
 
fclose all;
fprintf('Data ulozena do souboru %s\n',filenew);
</source>
 
datový soubor [ftp://athena.fsv.cvut.cz/ZFG/GIT1/carky.txt carky.txt] ke stažení
 
Volání funkce:
 
<source lang=octave>
teckazacarku('carky.txt')
</source>
 
== Úlohy ==
 
* [[155GIT1 / 7. cvičení / Příklady|7. cvičení - příklady]]

Verze z 26. 2. 2020, 17:39