Anzahl der Knoten und Flächen [gelöst]

Neue Frage »

Ulrich Ruhnau Auf diesen Beitrag antworten »
Anzahl der Knoten und Flächen [gelöst]
Wie man unschwer erkennt, sind die beiden Kreisstrukturen aus zufällig gefärbten Dreiecken zusammengesetzt. Die linke Struktur entspricht dem Radius und die rechte Struktur entspricht dem Radius . Gesucht sind zwei Formeln, einmal für die Anzahl der Knotenpunkte und einmal für die Anzahl der Dreiecksflächen jeweils als Funktion vom Radius .
[attach]52357[/attach][attach]52358[/attach]
mYthos Auf diesen Beitrag antworten »

Anzahl der Flächen:
(Es sind jeweils arithmetische Reihen mit m Gliedern, d = 2)
Ulrich Ruhnau Auf diesen Beitrag antworten »

Zitat:
Original von mYthos
Anzahl der Flächen:

Das ist richtig!



Damit ist die erste Hälfte des Rätsels gelöst. Jetzt geht es nur noch darum, eine Formel für die Anzahl der Knoten zu finden.
HAL 9000 Auf diesen Beitrag antworten »

Die Anzahl der Kanten bekommt man so raus:

Dreiecke haben insgesamt Kanten. Die äußeren 6m Kanten werden einfach gezählt, der Rest aber doppelt, somit ist die tatsächliche Kantenanzahl.

Die Knotenanzahl bekommt man dann über den Eulerschen Polyedersatz , d.h., es ist .



Man bekommt auch auf anderem Weg heraus, indem man die einzelnen Knotentypen unterscheidet nach der Anzahl der Dreiecke, die jeweils angrenzen:

Von den Knoten am Rand grenzen genau 6 an jeweils 2 Dreiecke, die anderen an jeweils drei Dreiecke. Die inneren (K-6m) Knoten grenzen an jeweils 6 Dreiecke. (*)

Das ergibt summa summarum , umgestellt dann ebenfalls wieder (was sonst Augenzwinkern ).

Allerdings scheint mir (*) schwerer begründbar zu sein als das oben mit den Kanten, daher ziehe ich doch den ersten Weg vor. Augenzwinkern
Ulrich Ruhnau Auf diesen Beitrag antworten »

Zitat:
Original von HAL 9000
Die Knotenanzahl bekommt man dann über den Eulerschen Polyedersatz , d.h., es ist .

Wunderbar hergeleitet, schön! Und weil's so schön war, habe ich noch einen Kreis mit m=20 generiert (2400 Dreiecke und 1261 Knoten).



[attach]52423[/attach]

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
function [a,l] = kreis3(m)
%Punkte gleichmäßig auf einen Kreis verteilen
% m = Anzahl der Stufen Mitte-Rand (Radius in Kantenlaengen)
nmax = (m+1)^3-m^3; % Anzahl der Knotenpunkte der Kreisstruktur
fmax = 6*m^2;       % Anzahl der Flaechen der Kreisstruktur
x = zeros(nmax,1);  % x-koordinaten der Flaechen
y = zeros(nmax,1);  % y-koordinaten der Flaechen
a = zeros(fmax,3);  % Dreiecksflaechen beschrieben durch Knotenpunktnummern
l = 1;              % Knotenpunktzaehler
f = 1;              % Flaechenzaehler
l1 = 1;             % erster innerer Anfangsknoten
k1 = 2;             % erster aeusserer Anfangsknoten
for j = 1:m         % alle Abstaende vom Zentrum durchgehen (Mitte -> Rand)
    j6 = 6 * j;     % Anzahl verschiedener Winkel eines (inneren) Kreises
    w = (2*pi/j6)*[0:j6-1]; % Winkel
    x(l+1:l+j6) = j*cos(w); % Knoten-x-Wert
    y(l+1:l+j6) = j*sin(w); % Knoten-y-Wert
    l = l + j6;             % Knotenzaehler anpasssen
    l2 = l1;                % Rundenanfang (vom Knoten im inneren Kreis)
    k2 = k1;                % Rundenanfang (vom Knoten im aeusseren Kreis)
    for i = 1:6         % 6 Kanten abklappern (von einer Dreiecksstruktur)
        for k = 1:j     % die inneren Knoten einer Kante abklappern
            a(f,:) = [l1,k1,k1+1]; % Dreieck aussen abspeichern
            f = f + 1;      % Flaechennummer hochzaehlen
            k1 = k1 + 1;    % aeusserer Knotenzaehler
            if k == j       % 
                break
            end
            a(f,:) = [l1,k1,l1+1]; % Dreieck innen abspeichern
            f = f + 1;      % Flaechenzaehler hochzaehlen
            l1 = l1 + 1;    % innerer Knotenzaehler
        end
    end
    a(f-1,1) = l2;  % Korrektur nach einer Runde (linker Knoten)
    a(f-1,3) = k2;  % Korrektur nach einer Runde (rechter Knoten)
    if j > 1
        a(f-2,3) = l2;  % Korrektur nach einer Runde (linker Knoten)
    end
    l1 = k2;        % linker Anfangsknoten fuer die naechste Runde
end
col = rand(fmax,3); % Zufallsfarben für jedes Dreieck
figure(4) 
set(gca,'color',[0.6,0.6,0.6]) % grauer Hintergrund
patch('Faces',a,'Vertices',[x,y],'FaceVertexCData',col,'FaceColor','flat');
% for j=1:l
%     text(x(j),y(j)+0.15,num2str(j),'color','w') %Vertex-Nummer
% end
axis equal
grid on
end
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »