Lösungsdiskussion - Druckversion +- Foren / Forums (https://www.mathekalender.de/wp/forum) +-- Forum: Lösungen / Solutions (https://www.mathekalender.de/wp/forum/forum-161.html) +--- Forum: Aufgabe 21 / Challenge 21 (https://www.mathekalender.de/wp/forum/forum-224.html) +--- Thema: Lösungsdiskussion (/thread-1301.html) |
Lösungsdiskussion - Vegaskid - 12-30-2024 Processing Code zur Lösung dieser Aufgabe: int vNo, vNu; // versteckte Neuronen der zweiten Schicht float z, temp; // z und Merkvariable für größtes z int xPos, yPos; // Krippenposoition void setup() { size(400, 400); // Dimensionen Ausgabefenster noStroke(); // keine Umrandung fill(255, 255, 0); // gelbe Füllung rectMode(CENTER); // Rechteckmodus Mittelpunkt, Seite, Höhe } void draw() { background(0, 0, 255); translate(width/2+100, height/2-200); // Position -1|2 zentrieren // pro Einheit 100 Pixel for (int x = -200; x < 0; x++) // für jede x Position zwischen -2 und 0 for (int y = 100; y < 300; y++) { // für jede y Position zwischen 1 und 3 vNo = max(0, x + 100) * (-1) + // Werte der versteckten Neuronen der max(0, - x -100) * (-1) + // ersten Schicht und zweiten Schicht max(0, y - 200) * (-1) + // berechnen max(0, - y + 200) * (-1) + 100; vNu = max(0, -x + y -300) * (-1) + max(0, x - y + 300) * (-1) + max(0, -x - y + 100) * (-1) + max(0, x + y - 100) * (-1) + sqrt(2) * 100; if (vNo > 0 || vNu > 0) // Skizze des Bereichs in der rect(x, y, 1, 1); // xy-Ebene mit z > 0 visualisieren z = vNo + vNu ; // z für die aktuelle Position berechnen temp = max(temp, z); // größtes z merken if (z == temp) { // Position mit dem größten z merken xPos=x; yPos=y; } } // Ergebnisse ausgeben println("Maximalwert für z:", temp/100); print("Krippenposition : P(", xPos/100, "|", yPos/100, ")"); fill(255, 0, 0); // blaue Füllung ellipse(xPos, yPos, 10, 10); // Krippenposition vergrößert visualisieren noLoop(); } RE: Lösungsdiskussion - pierrot - 12-30-2024 Auch eine wunderbare Aufgabe, den Stern nur mittels Zettel und Stift mit Hilfe von Ungleichungen zu konstruieren, hat echt Spaß gemacht!! Es ergeben sich zwei Qadrate, die aufeinander gelegt, Stern 5 ergeben. Hier mein Lösungsvorschlag: https://www.dropbox.com/scl/fi/ae2o00gkmntd5w0ufnn9o/21_KI_neuronale-Netze-Stern-Martin-Skutella.jpeg?rlkey=3tis2rl2k43y96k6lnlgrp9xz&st=d8dex8d9&dl=0 RE: Lösungsdiskussion - DerAlteHeinz - 12-30-2024 Ja, ging mir genauso! Es hat richtig Spaß gemacht, auch wenn es dann gar nicht so schwer war. Ich hab den gleichen Lösungsweg, aber ich versuche die einzelnen Schritte etwas anschaulicher zu machen: 1. Koordinatentransformation Die 8 Ausdrücke für die Neuronen-Werte lassen erkennen, dass man das Koordinatensystem in die Mitte des erwarteten Sterns verschieben kann: x+1 => x y-2 => y Daraus ergibt sich, dass der Sternmittelpunkt im alten Koordinatensystem bei (-1,2) lag. Und offensichtlich liegt dort auch das Maximum des z-Werts. Die Neuronen-Werte werden dadurch einfacher: max{0,x+1} => max{0,x} max{0,−x−1} => max{0,−x} max{0,y−2} => max{0,y} max{0,−y+2} => max{0,−y} max{0,−x+y−3} => max{0,−(x-y)} max{0,x−y+3} => max{0,x−y} max{0,−x−y+1} => max{0,−(x+y)} max{0,x+y−1} => max{0,x+y} 2. Betragsfunktion Wenn man das paarweise addiert, wie es in den Neutronen der 2. Ebene geschieht, dann ergeben sich 4 Betrags-Funktionen: max{0,x} + max{0,-x} = |x| max{0,y} + max{0,-y} = |y| max{0,x−y} + max{0,-(x−y)} = |x−y| max{0,x+y} + max{0,-(x+y)} = |x+y| Damit sehen die Ausdrücke in den Neutronen der 2. Ebene nun so aus: 1 - (|x|+|y|) SQRT(2) - (|x−y|+|x+y|) Dann gehts weiter wie bei pierrot, das finde ich anschaulich genug. RE: Lösungsdiskussion - MatheJuergen - 01-02-2025 (12-30-2024, 09:24 PM)DerAlteHeinz schrieb: Ja, ging mir genauso! Es hat richtig Spaß gemacht, auch wenn es dann gar nicht so schwer war.Das beschreibt genau, das Problem, das ich mit dieser Aufgabe hatte. So wie die Aufgabe gestellt ist muss nämlich z >=0 gelten, also 1+SQRT(2)-(|x| +|y|+|x-y|+|x+y|)>=0. Das liefert aber nicht die gezeigte Sternabbildung. Der Lösungsstern passt zu folgender Aufgabenstellung: Mindestens ein Neuton 2.Stufe hat einen positiven Wert. Das ergibt nämlich die beiden getrennten Bedingungen (wie oben beschrieben). ==> Zwei verdrehte Quadrate. Der "echte" Lösungsstern ist etwas kleiner. Denn wenn ein Neuronwert größer als 0 und der andere Neutonwert kleiner als 0 ist, kommt es darauf an wer "gewinnt". Ich habe dann natürlich auch den Stern mit den verdrehten Quadraten ausgewählt, denn die eigentliche Lösung kommt leider nicht vor. Trotzdem war es eine wunderschöne Aufgabe. RE: Lösungsdiskussion - Kosakenzipfel - 01-02-2025 Da das output-Neutron ebenfalls die max-funktion anwendet (im Text steht nichts anderes) ist z immer >=0. Es ist z = max(0,n1+n2). An der Begrenzung des Sterns ist Z noch 0, aber der Strich ist eh dicker wie eps und innen ist es dann größer null. RE: Lösungsdiskussion - marac - 01-02-2025 (01-02-2025, 11:47 AM)MatheJuergen schrieb: So wie die Aufgabe gestellt ist muss nämlich z >=0 gelten, also 1+SQRT(2)-(|x| +|y|+|x-y|+|x+y|)>=0. Das liefert aber nicht die gezeigte Sternabbildung. Wie kommst du auf x>=0? Es geht um >0, für x>=0 wäre die komplette Fläche gelb. Du übersiehst, dass die Werte der Neuronen der zweiten versteckten Reihe nach denselben Regeln, wie bei der ersten versteckten Reihe gebildet werden sollten. Das beinhaltet auch, dass auch hier keine negativen Werte auftreten können, da ein Maximum von 0 und dem berechneten Wert gebildet wird. Daher ist z>0 identisch mit "eines der beiden inneren Neuronen der zweiten Spalte ist größer als 0". (01-02-2025, 12:51 PM)Kosakenzipfel schrieb: Da das output-Neutron ebenfalls die max-funktion anwendet (im Text steht nichts anderes) ist z immer >=0. Es ist z = max(0,n1+n2). An der Begrenzung des Sterns ist Z noch 0, aber der Strich ist eh dicker wie eps und innen ist es dann größer null. Nicht ganz... Bei z ist die Regel anders, hier wird in der Aufgabenstellung explizit von der Summe der beiden Neuronen der zweiten Schicht die Rede, keine Max-Funktion. Da es die Summe von zwei Werten >=0 ist, spielt das an dieser Stelle aber auch keine Rolle RE: Lösungsdiskussion - MatheJuergen - 01-02-2025 (01-02-2025, 12:54 PM)marac schrieb:Vielen Dank! Man sollte den Text genauer lesen. Das mit dem Max. hatte ich da nicht mehr auf dem Schirm. Damit ist klar, dass z >=0 immer erfüllt ist.(01-02-2025, 11:47 AM)MatheJuergen schrieb: So wie die Aufgabe gestellt ist muss nämlich z >=0 gelten, also 1+SQRT(2)-(|x| +|y|+|x-y|+|x+y|)>=0. Das liefert aber nicht die gezeigte Sternabbildung. |