středa 22. října 2008

Špatně vypočtené siločáry

Člověk se špatným zrakem vidí namísto vzdálených předmětů barevné šmouhy. Ale člověk s dokonalým zrakem je zase ochuzen o ony šmouhy, a proto by se dalo žíci, že i on je o něco ochuzen. Pokud bych vypočetl zcela přesně siločáry gravitačního pole kolem dvou hmotných bodů, vznikl by celkem nudný obrázek podobný prvnímu přiloženému obrázku. Počítač se ovšem dopouští drobných chyb. Počítají-li se siločáry příliš jemně, vznikne zcela nečekaný obrazec, jak ukazují další přiložené obrázky. Chytré algoritmy se těmto podivnostem umí vyhnout, ale přišlo mě zajímavé si je, než je odstraním, prohlédnout.

b = 1e+1;
N = 500;
x = (-b):(2 * b / N):(+b);
L = length(x);
A = 1 ./ (ones(L, 1) * ((x - b/2) .^ 2) + (ones(L, 1) * ((x - b/2) .^ 2))') + 1 ./ (ones(L, 1) * ((x + b/2) .^ 2) + (ones(L, 1) * ((x + b/2) .^ 2))');
A(find(A == inf)) = 0;
P = 50;

UA = sort(unique(A));
C = ismember(A,UA(find(mod((1:length(UA)), P) < P/2)));
imwrite(A, 'figA.jpg','jpg')
imwrite(C, 'figC.jpg','jpg')




Žádné komentáře: