155GIT1 / 8. cvičení: Porovnání verzí
m →Ukázky |
mBez shrnutí editace |
||
(Není zobrazeno 8 mezilehlých verzí od 2 dalších uživatelů.) | |||
Řádek 1: | Řádek 1: | ||
{{Geoinformatika}} | {{Geoinformatika}} | ||
{{Cvičení|155GIT1|8| | {{Cvičení|155GIT1|8|Uživatelské funkce}} | ||
== Náplň == | == Náplň == | ||
# drobné úlohy | |||
== Ukázky == | == 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 == | == Úlohy == | ||
* [[155GIT1 / 8. cvičení / Příklady|8. cvičení - příklady]] | * [[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
Uživatelské funkce
Náplň
- 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