Portál AbcLinuxu, 4. května 2025 06:13
function latoocarfian (a, b, c, d, lps)
%priklad: (-1.066, 2.089, 0.765, 0.744, 900000)
scale = 1000.0; % meritko
pan = [400.0, 300.0]; % posun po bitmape
width = 800; % sirka bitmapy
height = 600; % vyska bitmapy
bmp = zeros(height, width);
x1 = 0.1;
y1 = 0.1;
for i = 1:lps
x2 = sin(b*y1)+c*sin(x1*b);
y2 = sin(a*x1)+d*sin(y1*a);
x1 = x2;
y1 = y2;
row = ceil(y1*scale+pan(2))+1;
col = ceil(x1*scale+pan(1))+1;
if (0 < row) & (row <= height) & (0 < col) & (col <= width)
bmp(row, col) += 1;
end
#tady kontroluju min a max
end
imagesc(bmp)
end
Problém je, že místo jakéhokoliv obrazu se mi vykreslí jen pár teček. V poli bmp
mají hodnotu 1 (čímž se vylučují špatné parametry systému - pokud by se např. špatně zaokrouhlovalo a systém běžel jen v těch pár tečkách, měly by vysoké hodnoty). Na okomentovaném místě jsem si kontroloval minima a maxima indexů, zdály se v pořádku. Kde může být chyba? Jinak běží to docela dlouho, pro testování bych doporučil odstranit jednu až dvě nuly z počtu iterací (parametr lps).
Řešení dotazu:
V poli bmp mají hodnotu 1 (čímž se vylučují špatné parametry systému - pokud by se např. špatně zaokrouhlovalo a systém běžel jen v těch pár tečkách, měly by vysoké hodnoty).U mě má na konci po 90000 iteracích prvek bmp(301,401) hodnotu 88409.
bmp(row, col)
?? Ten cyklus je rizeny promenou "i", ale v tom cyklu vubec nic nezavisi na "i"!! Zkuste treba neco ve smyslu x1= linspace(x_min,x_max,n_nodes);
a v cyklu x2=konst*x1(i);
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.