Newton-Fraktal: Matlab < Numerik < Hochschule < Mathe < Vorhilfe
|
Hallo Mathe-Raum,
ich versuche verzweifelt mit Matlab ein Programm zur Berechnung von Newton-Fraktalen zu schreiben.
Leider finde ich meinen Fehler nicht. Kann mir jemand weiterhelfen?
Mein Code:
clc;
clear;
close all;
funk = [mm] inline('x^3-1'); [/mm]
abl = [mm] inline('3*x^2'); [/mm]
n = 1000;
k = zeros(n,n);
l = zeros(n,n);
m = zeros(n,n);
x = linspace(-5,5,n);
y = linspace(-5,5,n);
[X,Y] = meshgrid(x,y);
tol = 1e-3;
for u=1:n
for v=1:n
l(u,v)=x(v)+1i*y(n+1-u);
t=(l(u,v));
while abs(funk(t)) > tol
t=t-((funk(t)/abl(t)));
m(u,v)=imag(t);
if m(u,v)<tol && m(u,v)>-tol
m(u,v)=0;
end
k(u,v)=k(u,v)+1
end
end
end
pcolor(X,Y,k);
colorbar;
colormap jet;
shading interp;
|
|
|
|
Ich habe den Code ein wenig abgewandelt und deine maximale Anzahl an Iterationen eingefügt:
Zwei Fragen:
a) Wie bekomme ich es hin, dass die Einfärbung so ist, wie bei Newton-Fraktalen üblich, also das jede Nullstelle eine Farbe bekommt und die Helligkeit über die Anzahl an Iterationen Auskunft gibt?
b) Stimmt der Code überhaupt ?
clc;
clear;
close all;
funk = [mm] inline('x^3-1'); [/mm]
abl = [mm] inline('3*x^2'); [/mm]
n = 1000;
k = zeros(n,n);
l = zeros(n,n);
m = zeros(n,n);
x = linspace(-1,1,n);
y = linspace(-1,1,n);
[X,Y] = meshgrid(x,y);
tol = 1e-3;
maxIter = 250;
for u=1:n
for v=1:n
l(u,v)=x(v)+1i*y(n+1-u);
t=(l(u,v));
while abs(funk(t)) > tol && k(u,v) < maxIter
t=t-((funk(t)/abl(t)));
m(u,v)=imag(t);
if m(u,v)<tol && m(u,v)>-tol
m(u,v)=0;
end
k(u,v)=k(u,v)+1
end
end
end
pcolor(X,Y,k);
colorbar;
colormap jet;
shading interp;
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:20 Sa 10.09.2016 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 09:20 Sa 10.09.2016 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|