Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
p:ki:machinelearning3 [2024/04/22 09:55] – [3. Schrittweise dem Ziel entgegen] Ralf Kretzschmarp:ki:machinelearning3 [2024/05/02 08:57] (aktuell) Tscherter, Vincent
Zeile 31: Zeile 31:
   - Wie gross ist die Steigung beim Minimum (beim kleinsten Wert) der Funktion? {{gem/match?0=N4IgTgpg5hAeAOIBcIAUAGAPgOQK4Bt9MAtCMAewEoQAaEAM3wEMoBnZEASxAF8g#1a9be108e7ddb9ff}}   - Wie gross ist die Steigung beim Minimum (beim kleinsten Wert) der Funktion? {{gem/match?0=N4IgTgpg5hAeAOIBcIAUAGAPgOQK4Bt9MAtCMAewEoQAaEAM3wEMoBnZEASxAF8g#1a9be108e7ddb9ff}}
   - Überlege dir, wie du mithilfe der Steigung das Minimum z.B. einer Fehlerfunktion finden kannst. Lese danach direkt nach diesem Auftrag weiter (dort findest du eine Antwort auf diese Frage).   - Überlege dir, wie du mithilfe der Steigung das Minimum z.B. einer Fehlerfunktion finden kannst. Lese danach direkt nach diesem Auftrag weiter (dort findest du eine Antwort auf diese Frage).
-{{exorciser/jspg?javascript=%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20CONSTANTS%20AND%20GLOBAL%20VARIABLES%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%2F%2F%20Canvas%20coordinates%20are%20X%2C%20Y%2C%20function%20values%20are%20x%2C%20y%0A%0A%2F%2F%20constants%0Aconst%20xMIN%20%3D%20-2.0%3B%0Aconst%20xMAX%20%3D%202.0%3B%0Aconst%20X_CANVAS_SIZE%20%3D%20200%3B%0Aconst%20Y_CANVAS_SIZE%20%3D%20200%3B%0Aconst%20XSHIFT%20%3D%20X_CANVAS_SIZE%20%2F%202%3B%0Aconst%20YSHIFT%20%3D%20Y_CANVAS_SIZE%20%2a%200.9%3B%0Aconst%20XSCALE%20%3D%20X_CANVAS_SIZE%20%2a%200.2%3B%0Aconst%20YSCALE%20%3D%20Y_CANVAS_SIZE%20%2a%200.2%3B%0Aconst%20GRAPH_GRANULARITY%20%3D%200.01%3B%0Aconst%20TEXT_SIZE%20%3D%2020%3B%0Aconst%20LEARNINGRATE%20%3D%201%3B%0A%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20FUNCTIONS%20FOR%20CALCULATION%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20function%20value%20y%20given%20x%0A%2F%2F%0Afunction%20func%28x%29%20%7B%0A%09return%20x%20%2a%2a%202%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20derivate%20of%20function%20value%20y%20given%20x%0A%2F%2F%0Afunction%20deriv%28x%29%20%7B%0A%09return%202%20%2a%20x%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20gradient%20value%20given%20x%20of%20the%20gradient%20line%20through%20point%20xOrigin%0A%2F%2F%0Afunction%20grad%28xOrigin%2C%20x%29%20%7B%0A%09return%20deriv%28xOrigin%29%20%2a%20%28x%20-%20xOrigin%29%20%2B%20func%28xOrigin%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20x%20of%20the%20endpoint%20of%20the%20gradient%20vector%20that%20starts%20at%20the%20point%0A%2F%2F%20xOrigin%20and%20has%20the%20length%20length%0A%2F%2F%0Afunction%20xOfGrad%28xOrigin%2C%20length%29%20%7B%0A%09if%20%28deriv%28xOrigin%29%20%3E%3D%200%29%20%7B%0A%09%09return%20xOrigin%20-%20length%20%2F%20Math.sqrt%28deriv%28xOrigin%29%20%2a%2a%202%20%2B%201%29%3B%0A%09%7D%20else%20%7B%0A%09%09return%20xOrigin%20%2B%20length%20%2F%20Math.sqrt%28deriv%28xOrigin%29%20%2a%2a%202%20%2B%201%29%3B%0A%09%7D%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20transform%20x%20value%20into%20canvas%20X%20coordinate%0A%2F%2F%0Afunction%20XGetCoord%28x%29%20%7B%0A%09return%20XSCALE%20%2a%20x%20%2B%20XSHIFT%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20y%20value%20into%20canvas%20Y%20coordinate%0A%2F%2F%0Afunction%20YGetCoord%28y%29%20%7B%0A%09return%20YSHIFT%20-%20YSCALE%20%2a%20y%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20canvas%20X%20coordinate%20into%20x%20value%0A%2F%2F%0Afunction%20xGetVal%28X%29%20%7B%0A%09return%20%28X%20-%20XSHIFT%29%20%2F%20XSCALE%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20canvas%20Y%20coordinate%20into%20x%20value%0A%2F%2F%0Afunction%20yGetVal%28Y%29%20%7B%0A%09return%20%28YSHIFT%20-%20Y%29%20%2F%20YSCALE%3B%0A%7D%0A%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20FUNCTIONS%20FOR%20VISUALISATION%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20get%20position%20in%20graph%0A%2F%2F%0Afunction%20getMouseValue%28%29%20%7B%0A%09let%20xPosition%20%3D%20xGetVal%28mouseX%29%3B%0A%09%2F%2F%20stop%20motion%20at%20edges%0A%09if%20%28xPosition%20%3C%20xMIN%29%20%7B%0A%09%09xPosition%20%3D%20xMIN%3B%0A%09%7D%0A%09if%20%28xPosition%20%3E%20xMAX%29%20%7B%0A%09%09xPosition%20%3D%20xMAX%3B%0A%09%7D%0A%09return%20xPosition%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20graph%0A%2F%2F%0Afunction%20drawGraph%28%29%20%7B%0A%09stroke%28%22red%22%29%3B%0A%09strokeWeight%282%29%3B%0A%09for%20%28let%20x%20%3D%20xMIN%3B%20x%20%3C%3D%20xMAX%3B%20x%20%3D%20x%20%2B%20GRAPH_GRANULARITY%29%20%7B%0A%09%09point%28XGetCoord%28x%29%2C%20YGetCoord%28func%28x%29%29%29%3B%0A%09%7D%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20gradient%20vector%0A%2F%2F%0Afunction%20drawGradientLine%28xOrigin%29%20%7B%0A%09%2F%2F%20draw%20line%0A%09stroke%28%22blue%22%29%3B%0A%09line%280%2C%0A%09%09YGetCoord%28grad%28xOrigin%2C%20xGetVal%280%29%29%29%2C%20X_CANVAS_SIZE%2C%20YGetCoord%28grad%28xOrigin%2C%20xGetVal%28X_CANVAS_SIZE%29%29%29%29%3B%0A%09%2F%2F%20draw%20intersection%20point%0A%09stroke%28%22blue%22%29%3B%0A%09fill%28%22red%22%29%3B%0A%09circle%28XGetCoord%28xOrigin%29%2C%20YGetCoord%28func%28xOrigin%29%29%2C%206%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20write%20text%20output%0A%2F%2F%0Afunction%20writeTextOutput%28xOrigin%29%20%7B%0A%09noStroke%28%29%3B%0A%09fill%28%22black%22%29%3B%0A%09text%28%22Steigung%22%2C%20X_CANVAS_SIZE%20%2F%202%2C%205%20%2a%20TEXT_SIZE%20%2F%204%29%3B%0A%09text%28deriv%28xOrigin%29.toFixed%282%29%2C%20X_CANVAS_SIZE%20%2F%202%2C%2011%20%2a%20TEXT_SIZE%20%2F%204%29%3B%0A%7D%0A%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20MAIN%20PROGRAM%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20p5.js%20setup%28%29%0A%2F%2F%0Afunction%20setup%28%29%20%7B%0A%0A%09%2F%2F%20create%20canvas%20%0A%09createCanvas%28X_CANVAS_SIZE%2C%20Y_CANVAS_SIZE%29%3B%0A%0A%09%2F%2F%20set%20text%20properties%0A%09textSize%28TEXT_SIZE%29%3B%0A%09textAlign%28CENTER%2C%20CENTER%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20p5.js%20draw%28%29%0A%2F%2F%0Afunction%20draw%28%29%20%7B%0A%0A%09%2F%2F%20clear%20everything%0A%09background%28%22white%22%29%3B%0A%09%2F%2F%20draw%20frame%0A%09stroke%28%22black%22%29%3B%0A%09strokeWeight%281%29%3B%0A%09noFill%28%29%3B%0A%09rect%280%2C%200%2C%20X_CANVAS_SIZE%2C%20Y_CANVAS_SIZE%29%3B%0A%0A%09%2F%2F%20get%20x%20value%20of%20mouse%20position%20in%20graph%0A%09let%20xPosition%20%3D%20getMouseValue%28%29%3B%0A%0A%09%2F%2F%20draw%20everything%0A%09drawGraph%28%29%3B%0A%09drawGradientLine%28xPosition%29%3B%0A%09writeTextOutput%28xPosition%29%3B%0A%7D&css=undefined&html=%3Cscript%20src%3D%22https%3A%2F%2Fcdn.jsdelivr.net%2Fnpm%2Fp5%22%3E%3C%2Fscript%3E&height=360px#Steigung}}+{{exorciser/jspg?javascript=%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20CONSTANTS%20AND%20GLOBAL%20VARIABLES%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%2F%2F%20Canvas%20coordinates%20are%20X%2C%20Y%2C%20function%20values%20are%20x%2C%20y%0A%0A%2F%2F%20constants%0Aconst%20xMIN%20%3D%20-2.0%3B%0Aconst%20xMAX%20%3D%202.0%3B%0Aconst%20X_CANVAS_SIZE%20%3D%20200%3B%0Aconst%20Y_CANVAS_SIZE%20%3D%20200%3B%0Aconst%20XSHIFT%20%3D%20X_CANVAS_SIZE%20%2F%202%3B%0Aconst%20YSHIFT%20%3D%20Y_CANVAS_SIZE%20%2a%200.9%3B%0Aconst%20XSCALE%20%3D%20X_CANVAS_SIZE%20%2a%200.2%3B%0Aconst%20YSCALE%20%3D%20Y_CANVAS_SIZE%20%2a%200.2%3B%0Aconst%20GRAPH_GRANULARITY%20%3D%200.01%3B%0Aconst%20TEXT_SIZE%20%3D%2020%3B%0Aconst%20LEARNINGRATE%20%3D%201%3B%0A%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20FUNCTIONS%20FOR%20CALCULATION%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20function%20value%20y%20given%20x%0A%2F%2F%0Afunction%20func%28x%29%20%7B%0A%09return%20x%20%2a%2a%202%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20derivate%20of%20function%20value%20y%20given%20x%0A%2F%2F%0Afunction%20deriv%28x%29%20%7B%0A%09return%202%20%2a%20x%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20gradient%20value%20given%20x%20of%20the%20gradient%20line%20through%20point%20xOrigin%0A%2F%2F%0Afunction%20grad%28xOrigin%2C%20x%29%20%7B%0A%09return%20deriv%28xOrigin%29%20%2a%20%28x%20-%20xOrigin%29%20%2B%20func%28xOrigin%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20x%20of%20the%20endpoint%20of%20the%20gradient%20vector%20that%20starts%20at%20the%20point%0A%2F%2F%20xOrigin%20and%20has%20the%20length%20length%0A%2F%2F%0Afunction%20xOfGrad%28xOrigin%2C%20length%29%20%7B%0A%09if%20%28deriv%28xOrigin%29%20%3E%3D%200%29%20%7B%0A%09%09return%20xOrigin%20-%20length%20%2F%20Math.sqrt%28deriv%28xOrigin%29%20%2a%2a%202%20%2B%201%29%3B%0A%09%7D%20else%20%7B%0A%09%09return%20xOrigin%20%2B%20length%20%2F%20Math.sqrt%28deriv%28xOrigin%29%20%2a%2a%202%20%2B%201%29%3B%0A%09%7D%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20transform%20x%20value%20into%20canvas%20X%20coordinate%0A%2F%2F%0Afunction%20XGetCoord%28x%29%20%7B%0A%09return%20XSCALE%20%2a%20x%20%2B%20XSHIFT%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20y%20value%20into%20canvas%20Y%20coordinate%0A%2F%2F%0Afunction%20YGetCoord%28y%29%20%7B%0A%09return%20YSHIFT%20-%20YSCALE%20%2a%20y%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20canvas%20X%20coordinate%20into%20x%20value%0A%2F%2F%0Afunction%20xGetVal%28X%29%20%7B%0A%09return%20%28X%20-%20XSHIFT%29%20%2F%20XSCALE%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20canvas%20Y%20coordinate%20into%20x%20value%0A%2F%2F%0Afunction%20yGetVal%28Y%29%20%7B%0A%09return%20%28YSHIFT%20-%20Y%29%20%2F%20YSCALE%3B%0A%7D%0A%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20FUNCTIONS%20FOR%20VISUALISATION%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20get%20position%20in%20graph%0A%2F%2F%0Afunction%20getMouseValue%28%29%20%7B%0A%09let%20xPosition%20%3D%20xGetVal%28mouseX%29%3B%0A%09%2F%2F%20stop%20motion%20at%20edges%0A%09if%20%28xPosition%20%3C%20xMIN%29%20%7B%0A%09%09xPosition%20%3D%20xMIN%3B%0A%09%7D%0A%09if%20%28xPosition%20%3E%20xMAX%29%20%7B%0A%09%09xPosition%20%3D%20xMAX%3B%0A%09%7D%0A%09return%20xPosition%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20graph%0A%2F%2F%0Afunction%20drawGraph%28%29%20%7B%0A%09stroke%28%22red%22%29%3B%0A%09strokeWeight%282%29%3B%0A%09for%20%28let%20x%20%3D%20xMIN%3B%20x%20%3C%3D%20xMAX%3B%20x%20%3D%20x%20%2B%20GRAPH_GRANULARITY%29%20%7B%0A%09%09point%28XGetCoord%28x%29%2C%20YGetCoord%28func%28x%29%29%29%3B%0A%09%7D%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20gradient%20vector%0A%2F%2F%0Afunction%20drawGradientLine%28xOrigin%29%20%7B%0A%09%2F%2F%20draw%20line%0A%09stroke%28%22blue%22%29%3B%0A%09line%280%2C%0A%09%09YGetCoord%28grad%28xOrigin%2C%20xGetVal%280%29%29%29%2C%20X_CANVAS_SIZE%2C%20YGetCoord%28grad%28xOrigin%2C%20xGetVal%28X_CANVAS_SIZE%29%29%29%29%3B%0A%09%2F%2F%20draw%20intersection%20point%0A%09stroke%28%22blue%22%29%3B%0A%09fill%28%22red%22%29%3B%0A%09circle%28XGetCoord%28xOrigin%29%2C%20YGetCoord%28func%28xOrigin%29%29%2C%206%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20write%20text%20output%0A%2F%2F%0Afunction%20writeTextOutput%28xOrigin%29%20%7B%0A%09noStroke%28%29%3B%0A%09fill%28%22black%22%29%3B%0A%09text%28%22Steigung%22%2C%20X_CANVAS_SIZE%20%2F%202%2C%205%20%2a%20TEXT_SIZE%20%2F%204%29%3B%0A%09text%28deriv%28xOrigin%29.toFixed%282%29%2C%20X_CANVAS_SIZE%20%2F%202%2C%2011%20%2a%20TEXT_SIZE%20%2F%204%29%3B%0A%7D%0A%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20MAIN%20PROGRAM%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20p5.js%20setup%28%29%0A%2F%2F%0Afunction%20setup%28%29%20%7B%0A%0A%09%2F%2F%20create%20canvas%20%0A%09createCanvas%28X_CANVAS_SIZE%2C%20Y_CANVAS_SIZE%29%3B%0A%0A%09%2F%2F%20set%20text%20properties%0A%09textSize%28TEXT_SIZE%29%3B%0A%09textAlign%28CENTER%2C%20CENTER%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20p5.js%20draw%28%29%0A%2F%2F%0Afunction%20draw%28%29%20%7B%0A%0A%09%2F%2F%20clear%20everything%0A%09background%28%22white%22%29%3B%0A%09%2F%2F%20draw%20frame%0A%09stroke%28%22black%22%29%3B%0A%09strokeWeight%281%29%3B%0A%09noFill%28%29%3B%0A%09rect%280%2C%200%2C%20X_CANVAS_SIZE%2C%20Y_CANVAS_SIZE%29%3B%0A%0A%09%2F%2F%20get%20x%20value%20of%20mouse%20position%20in%20graph%0A%09let%20xPosition%20%3D%20getMouseValue%28%29%3B%0A%0A%09%2F%2F%20draw%20everything%0A%09drawGraph%28%29%3B%0A%09drawGradientLine%28xPosition%29%3B%0A%09writeTextOutput%28xPosition%29%3B%0A%7D&css=undefined&html=%3Cscript%20src%3D%22https%3A%2F%2Fapp.exorciser.ch%2Flib%2Fp5.js%22%3E%3C%2Fscript%3E&height=360px#Steigung}}
 </WRAP> </WRAP>
 \\  \\ 
Zeile 81: Zeile 81:
 {{gem/plain?0=N4XyA#bb1993deecc6bf61}} {{gem/plain?0=N4XyA#bb1993deecc6bf61}}
  
-{{exorciser/jspg?javascript=%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20CONSTANTS%20AND%20GLOBAL%20VARIABLES%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%2F%2F%20Canvas%20coordinates%20are%20X%2C%20Y%2C%20function%20values%20are%20x%2C%20y%0A%0A%2F%2F%20constants%0Aconst%20xMIN%20%3D%20-4.0%3B%0Aconst%20xMAX%20%3D%204.0%3B%0Aconst%20X_CANVAS_SIZE%20%3D%20400%3B%0Aconst%20Y_CANVAS_SIZE%20%3D%20200%3B%0Aconst%20XSHIFT%20%3D%20X_CANVAS_SIZE%20%2a%200.55%3B%0Aconst%20YSHIFT%20%3D%20Y_CANVAS_SIZE%20%2a%200.85%3B%0Aconst%20XSCALE%20%3D%20X_CANVAS_SIZE%20%2a%200.1%3B%0Aconst%20YSCALE%20%3D%20Y_CANVAS_SIZE%20%2a%200.2%3B%0Aconst%20GRAPH_GRANULARITY%20%3D%200.02%3B%0Aconst%20TEXT_SIZE%20%3D%2018%3B%0A%0A%2F%2F%20global%20variables%0Alet%20slider%3B%0Alet%20xPosition%3B%0Alet%20learningrate%3B%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20FUNCTIONS%20FOR%20CALCULATION%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20function%20value%20y%20given%20x%0A%2F%2F%0Afunction%20func%28x%29%20%7B%0A%09return%20x%20%2a%2a%202%20%2F%204%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20derivate%20of%20function%20value%20y%20given%20x%0A%2F%2F%0Afunction%20deriv%28x%29%20%7B%0A%09return%20x%20%2F%202%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20gradient%20value%20given%20x%20of%20the%20gradient%20line%20through%20point%20xOrigin%0A%2F%2F%0Afunction%20grad%28xOrigin%2C%20x%29%20%7B%0A%09return%20deriv%28xOrigin%29%20%2a%20%28x%20-%20xOrigin%29%20%2B%20func%28xOrigin%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20x%20of%20the%20gradient%20vector%20that%20starts%20at%20the%20point%0A%2F%2F%20xOrigin%20given%20y%20of%20this%20gradient%20vector%0A%2F%2F%0Afunction%20inverseGrad%28xOrigin%2C%20y%29%20%7B%0A%09return%20%28y%20-%20func%28xOrigin%29%29%20%2F%20deriv%28xOrigin%29%20%2B%20xOrigin%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20x%20of%20the%20endpoint%20of%20the%20gradient%20vector%20that%20starts%20at%20the%20point%0A%2F%2F%20xOrigin%20and%20has%20the%20length%20length%0A%2F%2F%0Afunction%20xOfGrad%28xOrigin%2C%20length%29%20%7B%0A%09if%20%28deriv%28xOrigin%29%20%3E%3D%200%29%20%7B%0A%09%09return%20xOrigin%20-%20length%20%2F%20Math.sqrt%28deriv%28xOrigin%29%20%2a%2a%202%20%2B%201%29%3B%0A%09%7D%20else%20%7B%0A%09%09return%20xOrigin%20%2B%20length%20%2F%20Math.sqrt%28deriv%28xOrigin%29%20%2a%2a%202%20%2B%201%29%3B%0A%09%7D%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20transform%20x%20value%20into%20canvas%20X%20coordinate%0A%2F%2F%0Afunction%20XGetCoord%28x%29%20%7B%0A%09return%20XSCALE%20%2a%20x%20%2B%20XSHIFT%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20y%20value%20into%20canvas%20Y%20coordinate%0A%2F%2F%0Afunction%20YGetCoord%28y%29%20%7B%0A%09return%20YSHIFT%20-%20YSCALE%20%2a%20y%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20canvas%20X%20coordinate%20into%20x%20value%0A%2F%2F%0Afunction%20xGetVal%28X%29%20%7B%0A%09return%20%28X%20-%20XSHIFT%29%20%2F%20XSCALE%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20canvas%20Y%20coordinate%20into%20x%20value%0A%2F%2F%0Afunction%20yGetVal%28Y%29%20%7B%0A%09return%20%28YSHIFT%20-%20Y%29%20%2F%20YSCALE%3B%0A%7D%0A%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20FUNCTIONS%20FOR%20VISUALISATION%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20get%20position%20in%20graph%0A%2F%2F%0Afunction%20getMouseXValue%28%29%20%7B%0A%09let%20xPosition%20%3D%20xGetVal%28mouseX%29%3B%0A%09%2F%2F%20stop%20motion%20at%20edges%0A%09if%20%28xPosition%20%3C%20xMIN%29%20%7B%0A%09%09xPosition%20%3D%20xMIN%3B%0A%09%7D%0A%09if%20%28xPosition%20%3E%20xMAX%29%20%7B%0A%09%09xPosition%20%3D%20xMAX%3B%0A%09%7D%0A%09return%20xPosition%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20axes%0A%2F%2F%0Afunction%20drawAxes%28%29%20%7B%0A%09stroke%28%22black%22%29%3B%0A%09fill%28%22black%22%29%3B%0A%09strokeWeight%282%29%3B%0A%09line%28X_CANVAS_SIZE%20%2a%200.1%2C%20Y_CANVAS_SIZE%20%2a%200.95%2C%20X_CANVAS_SIZE%20%2a%200.95%2C%20Y_CANVAS_SIZE%20%2a%200.95%29%3B%0A%09line%28X_CANVAS_SIZE%20%2a%200.1%2C%20Y_CANVAS_SIZE%20%2a%200.05%2C%20X_CANVAS_SIZE%20%2a%200.1%2C%20Y_CANVAS_SIZE%20%2a%200.95%29%3B%0A%09%2F%2F%20add%20labels%0A%09strokeWeight%281%29%3B%0A%09text%28%22J%22%2C%20X_CANVAS_SIZE%20%2a%200.05%2C%20Y_CANVAS_SIZE%20%2a%200.1%29%0A%09text%28%22w%22%2C%20X_CANVAS_SIZE%20%2a%200.9%2C%20Y_CANVAS_SIZE%20%2a%200.85%29%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20graph%0A%2F%2F%0Afunction%20drawGraph%28%29%20%7B%0A%09stroke%28%22red%22%29%3B%0A%09strokeWeight%282%29%3B%0A%09for%20%28let%20x%20%3D%20xMIN%3B%20x%20%3C%3D%20xMAX%3B%20x%20%3D%20x%20%2B%20GRAPH_GRANULARITY%29%20%7B%0A%09%09point%28XGetCoord%28x%29%2C%20YGetCoord%28func%28x%29%29%29%3B%0A%09%7D%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20gradient%20vector%0A%2F%2F%0Afunction%20drawGradientVector%28xOrigin%29%20%7B%0A%09%2F%2F%20get%20gradient%20vector%20length%0A%09let%20length%20%3D%20learningrate%20%2a%20Math.abs%28deriv%28xOrigin%29%29%3B%0A%09%2F%2F%20draw%20line%0A%09stroke%28%22blue%22%29%3B%0A%09if%20%28YGetCoord%28grad%28xOrigin%2C%20xOfGrad%28xOrigin%2C%20length%29%29%29%20%3C%20Y_CANVAS_SIZE%20%2a%200.95%29%20%7B%0A%09%09line%28XGetCoord%28xOrigin%29%2C%0A%09%09%09YGetCoord%28func%28xOrigin%29%29%2C%20XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20YGetCoord%28grad%28xOrigin%2C%20xOfGrad%28xOrigin%2C%20length%29%29%29%29%3B%0A%09%7D%20else%20%7B%0A%09%09line%28XGetCoord%28xOrigin%29%2C%0A%09%09%09YGetCoord%28func%28xOrigin%29%29%2C%20XGetCoord%28inverseGrad%28xOrigin%2C%20yGetVal%28Y_CANVAS_SIZE%20%2a%200.95%29%29%29%2C%20Y_CANVAS_SIZE%20%2a%200.95%29%3B%0A%09%7D%0A%09%2F%2F%20draw%20intersection%20point%0A%09stroke%28%22blue%22%29%3B%0A%09fill%28%22red%22%29%3B%0A%09circle%28XGetCoord%28xOrigin%29%2C%20YGetCoord%28func%28xOrigin%29%29%2C%206%29%3B%0A%09%2F%2F%20draw%20end%20point%0A%09fill%28%22blue%22%29%3B%0A%09if%20%28YGetCoord%28grad%28xOrigin%2C%20xOfGrad%28xOrigin%2C%20length%29%29%29%20%3C%20Y_CANVAS_SIZE%20%2a%200.95%29%20%7B%0A%09%09circle%28XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20YGetCoord%28grad%28xOrigin%2C%20xOfGrad%28xOrigin%2C%20length%29%29%29%2C%203%29%3B%0A%09%7D%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20gradient%20vector%0A%2F%2F%0Afunction%20drawLearningStep%28xOrigin%29%20%7B%0A%09%2F%2F%20get%20gradient%20vector%20length%0A%09let%20length%20%3D%20learningrate%20%2a%20Math.abs%28deriv%28xOrigin%29%29%3B%0A%09%2F%2F%20indicate%20weight%20at%20intersection%20point%0A%09stroke%28%22black%22%29%3B%0A%09strokeWeight%281%29%3B%0A%09fill%28%22black%22%29%3B%0A%09drawingContext.setLineDash%28%5BY_CANVAS_SIZE%20%2a%200.9%20%2F%2019%2C%20Y_CANVAS_SIZE%20%2a%200.9%20%2F%2019%5D%29%3B%0A%09line%28XGetCoord%28xOrigin%29%2C%20Y_CANVAS_SIZE%20%2a%200.05%2C%20XGetCoord%28xOrigin%29%2C%20Y_CANVAS_SIZE%20%2a%200.95%29%3B%0A%09drawingContext.setLineDash%28%5B0%2C%200%5D%29%3B%0A%09text%28%22w%5B0%5D%22%2C%20XGetCoord%28xOrigin%29%2C%20Y_CANVAS_SIZE%2a1.01%29%3B%0A%09%2F%2F%20indicate%20weight%20at%20end%20point%0A%09line%28XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20Y_CANVAS_SIZE%20%2a%200.95%2C%20XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20Y_CANVAS_SIZE%20%2a%200.05%29%3B%0A%09text%28%22w%5B1%5D%22%2C%20XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20Y_CANVAS_SIZE%2a1.11%29%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20write%20text%20output%0A%2F%2F%0Afunction%20writeTextOutput%28xOrigin%29%20%7B%0A%09noStroke%28%29%3B%0A%09fill%28%22blue%22%29%3B%0A%09text%28%22Gradient%20%E2%88%87%22%2C%20XGetCoord%280%29%2C%202%20%2a%20TEXT_SIZE%20%2F%204%29%3B%0A%09text%28deriv%28xOrigin%29.toFixed%282%29%2C%20XGetCoord%280%29%2C%207%20%2a%20TEXT_SIZE%20%2F%204%29%3B%0A%09text%28%22Lernrate%20%CE%BC%22%2C%20XGetCoord%280%29%2C%2012%20%2a%20TEXT_SIZE%20%2F%204%29%3B%0A%09text%28learningrate.toFixed%281%29%2C%20XGetCoord%280%29%2C%2017%20%2a%20TEXT_SIZE%20%2F%204%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20adjust%20learningrate%0A%2F%2F%0Afunction%20adjustLearningrate%28%29%20%7B%0A%09learningrate%20%3D%20slider.value%28%29%3B%0A%7D%0A%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20MAIN%20PROGRAM%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20p5.js%20setup%28%29%0A%2F%2F%0Afunction%20setup%28%29%20%7B%0A%09%2F%2F%20defaults%0A%09learningrate%20%3D%201.0%3B%0A%09xPosition%20%3D%20xMIN%3B%0A%0A%09%2F%2F%20create%20canvas%20%0A%09createCanvas%28X_CANVAS_SIZE%2C%201.3%20%2a%20Y_CANVAS_SIZE%29%3B%0A%0A%09%2F%2F%20set%20text%20properties%0A%09textSize%28TEXT_SIZE%29%3B%0A%09textAlign%28CENTER%2C%20CENTER%29%3B%0A%0A%09%2F%2F%20create%20Slider%0A%09slider%20%3D%20createSlider%280.5%2C%205%2C%201%2C%200.1%29%3B%0A%09slider.position%28X_CANVAS_SIZE%20%2a%200.15%2C%20Y_CANVAS_SIZE%20%2B%2040%29%3B%20%2F%2F%20x%20and%20y%0A%09slider.size%28X_CANVAS_SIZE%20%2a%200.8%2C%2030%29%3B%20%2F%2F%20width%20and%20height%0A%09%2F%2F%20add%20slider%20functionality%0A%09slider.input%28adjustLearningrate%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20p5.js%20draw%28%29%0A%2F%2F%0Afunction%20draw%28%29%20%7B%0A%0A%09%2F%2F%20clear%20everything%0A%09background%28%22white%22%29%3B%0A%0A%09%2F%2F%20get%20x%20value%20of%20mouse%20position%20in%20graph%0A%09if%20%28mouseY%20%3C%3D%20%20Y_CANVAS_SIZE%2a0.95%29%20%7B%0A%09%09xPosition%20%3D%20getMouseXValue%28%29%3B%0A%09%7D%0A%0A%09%2F%2F%20draw%20everything%0A%09drawAxes%28%29%3B%0A%09drawGraph%28%29%3B%0A%09drawGradientVector%28xPosition%29%3B%0A%09drawLearningStep%28xPosition%29%3B%0A%09writeTextOutput%28xPosition%29%3B%0A%7D&css=undefined&html=%3Cscript%20src%3D%22https%3A%2F%2Fcdn.jsdelivr.net%2Fnpm%2Fp5%22%3E%3C%2Fscript%3E&height=430px#Gradient1}}+{{exorciser/jspg?javascript=%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20CONSTANTS%20AND%20GLOBAL%20VARIABLES%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%2F%2F%20Canvas%20coordinates%20are%20X%2C%20Y%2C%20function%20values%20are%20x%2C%20y%0A%0A%2F%2F%20constants%0Aconst%20xMIN%20%3D%20-4.0%3B%0Aconst%20xMAX%20%3D%204.0%3B%0Aconst%20X_CANVAS_SIZE%20%3D%20400%3B%0Aconst%20Y_CANVAS_SIZE%20%3D%20200%3B%0Aconst%20XSHIFT%20%3D%20X_CANVAS_SIZE%20%2a%200.55%3B%0Aconst%20YSHIFT%20%3D%20Y_CANVAS_SIZE%20%2a%200.85%3B%0Aconst%20XSCALE%20%3D%20X_CANVAS_SIZE%20%2a%200.1%3B%0Aconst%20YSCALE%20%3D%20Y_CANVAS_SIZE%20%2a%200.2%3B%0Aconst%20GRAPH_GRANULARITY%20%3D%200.02%3B%0Aconst%20TEXT_SIZE%20%3D%2018%3B%0A%0A%2F%2F%20global%20variables%0Alet%20slider%3B%0Alet%20xPosition%3B%0Alet%20learningrate%3B%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20FUNCTIONS%20FOR%20CALCULATION%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20function%20value%20y%20given%20x%0A%2F%2F%0Afunction%20func%28x%29%20%7B%0A%09return%20x%20%2a%2a%202%20%2F%204%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20derivate%20of%20function%20value%20y%20given%20x%0A%2F%2F%0Afunction%20deriv%28x%29%20%7B%0A%09return%20x%20%2F%202%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20gradient%20value%20given%20x%20of%20the%20gradient%20line%20through%20point%20xOrigin%0A%2F%2F%0Afunction%20grad%28xOrigin%2C%20x%29%20%7B%0A%09return%20deriv%28xOrigin%29%20%2a%20%28x%20-%20xOrigin%29%20%2B%20func%28xOrigin%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20x%20of%20the%20gradient%20vector%20that%20starts%20at%20the%20point%0A%2F%2F%20xOrigin%20given%20y%20of%20this%20gradient%20vector%0A%2F%2F%0Afunction%20inverseGrad%28xOrigin%2C%20y%29%20%7B%0A%09return%20%28y%20-%20func%28xOrigin%29%29%20%2F%20deriv%28xOrigin%29%20%2B%20xOrigin%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20x%20of%20the%20endpoint%20of%20the%20gradient%20vector%20that%20starts%20at%20the%20point%0A%2F%2F%20xOrigin%20and%20has%20the%20length%20length%0A%2F%2F%0Afunction%20xOfGrad%28xOrigin%2C%20length%29%20%7B%0A%09if%20%28deriv%28xOrigin%29%20%3E%3D%200%29%20%7B%0A%09%09return%20xOrigin%20-%20length%20%2F%20Math.sqrt%28deriv%28xOrigin%29%20%2a%2a%202%20%2B%201%29%3B%0A%09%7D%20else%20%7B%0A%09%09return%20xOrigin%20%2B%20length%20%2F%20Math.sqrt%28deriv%28xOrigin%29%20%2a%2a%202%20%2B%201%29%3B%0A%09%7D%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20transform%20x%20value%20into%20canvas%20X%20coordinate%0A%2F%2F%0Afunction%20XGetCoord%28x%29%20%7B%0A%09return%20XSCALE%20%2a%20x%20%2B%20XSHIFT%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20y%20value%20into%20canvas%20Y%20coordinate%0A%2F%2F%0Afunction%20YGetCoord%28y%29%20%7B%0A%09return%20YSHIFT%20-%20YSCALE%20%2a%20y%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20canvas%20X%20coordinate%20into%20x%20value%0A%2F%2F%0Afunction%20xGetVal%28X%29%20%7B%0A%09return%20%28X%20-%20XSHIFT%29%20%2F%20XSCALE%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20canvas%20Y%20coordinate%20into%20x%20value%0A%2F%2F%0Afunction%20yGetVal%28Y%29%20%7B%0A%09return%20%28YSHIFT%20-%20Y%29%20%2F%20YSCALE%3B%0A%7D%0A%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20FUNCTIONS%20FOR%20VISUALISATION%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20get%20position%20in%20graph%0A%2F%2F%0Afunction%20getMouseXValue%28%29%20%7B%0A%09let%20xPosition%20%3D%20xGetVal%28mouseX%29%3B%0A%09%2F%2F%20stop%20motion%20at%20edges%0A%09if%20%28xPosition%20%3C%20xMIN%29%20%7B%0A%09%09xPosition%20%3D%20xMIN%3B%0A%09%7D%0A%09if%20%28xPosition%20%3E%20xMAX%29%20%7B%0A%09%09xPosition%20%3D%20xMAX%3B%0A%09%7D%0A%09return%20xPosition%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20axes%0A%2F%2F%0Afunction%20drawAxes%28%29%20%7B%0A%09stroke%28%22black%22%29%3B%0A%09fill%28%22black%22%29%3B%0A%09strokeWeight%282%29%3B%0A%09line%28X_CANVAS_SIZE%20%2a%200.1%2C%20Y_CANVAS_SIZE%20%2a%200.95%2C%20X_CANVAS_SIZE%20%2a%200.95%2C%20Y_CANVAS_SIZE%20%2a%200.95%29%3B%0A%09line%28X_CANVAS_SIZE%20%2a%200.1%2C%20Y_CANVAS_SIZE%20%2a%200.05%2C%20X_CANVAS_SIZE%20%2a%200.1%2C%20Y_CANVAS_SIZE%20%2a%200.95%29%3B%0A%09%2F%2F%20add%20labels%0A%09strokeWeight%281%29%3B%0A%09text%28%22J%22%2C%20X_CANVAS_SIZE%20%2a%200.05%2C%20Y_CANVAS_SIZE%20%2a%200.1%29%0A%09text%28%22w%22%2C%20X_CANVAS_SIZE%20%2a%200.9%2C%20Y_CANVAS_SIZE%20%2a%200.85%29%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20graph%0A%2F%2F%0Afunction%20drawGraph%28%29%20%7B%0A%09stroke%28%22red%22%29%3B%0A%09strokeWeight%282%29%3B%0A%09for%20%28let%20x%20%3D%20xMIN%3B%20x%20%3C%3D%20xMAX%3B%20x%20%3D%20x%20%2B%20GRAPH_GRANULARITY%29%20%7B%0A%09%09point%28XGetCoord%28x%29%2C%20YGetCoord%28func%28x%29%29%29%3B%0A%09%7D%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20gradient%20vector%0A%2F%2F%0Afunction%20drawGradientVector%28xOrigin%29%20%7B%0A%09%2F%2F%20get%20gradient%20vector%20length%0A%09let%20length%20%3D%20learningrate%20%2a%20Math.abs%28deriv%28xOrigin%29%29%3B%0A%09%2F%2F%20draw%20line%0A%09stroke%28%22blue%22%29%3B%0A%09if%20%28YGetCoord%28grad%28xOrigin%2C%20xOfGrad%28xOrigin%2C%20length%29%29%29%20%3C%20Y_CANVAS_SIZE%20%2a%200.95%29%20%7B%0A%09%09line%28XGetCoord%28xOrigin%29%2C%0A%09%09%09YGetCoord%28func%28xOrigin%29%29%2C%20XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20YGetCoord%28grad%28xOrigin%2C%20xOfGrad%28xOrigin%2C%20length%29%29%29%29%3B%0A%09%7D%20else%20%7B%0A%09%09line%28XGetCoord%28xOrigin%29%2C%0A%09%09%09YGetCoord%28func%28xOrigin%29%29%2C%20XGetCoord%28inverseGrad%28xOrigin%2C%20yGetVal%28Y_CANVAS_SIZE%20%2a%200.95%29%29%29%2C%20Y_CANVAS_SIZE%20%2a%200.95%29%3B%0A%09%7D%0A%09%2F%2F%20draw%20intersection%20point%0A%09stroke%28%22blue%22%29%3B%0A%09fill%28%22red%22%29%3B%0A%09circle%28XGetCoord%28xOrigin%29%2C%20YGetCoord%28func%28xOrigin%29%29%2C%206%29%3B%0A%09%2F%2F%20draw%20end%20point%0A%09fill%28%22blue%22%29%3B%0A%09if%20%28YGetCoord%28grad%28xOrigin%2C%20xOfGrad%28xOrigin%2C%20length%29%29%29%20%3C%20Y_CANVAS_SIZE%20%2a%200.95%29%20%7B%0A%09%09circle%28XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20YGetCoord%28grad%28xOrigin%2C%20xOfGrad%28xOrigin%2C%20length%29%29%29%2C%203%29%3B%0A%09%7D%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20gradient%20vector%0A%2F%2F%0Afunction%20drawLearningStep%28xOrigin%29%20%7B%0A%09%2F%2F%20get%20gradient%20vector%20length%0A%09let%20length%20%3D%20learningrate%20%2a%20Math.abs%28deriv%28xOrigin%29%29%3B%0A%09%2F%2F%20indicate%20weight%20at%20intersection%20point%0A%09stroke%28%22black%22%29%3B%0A%09strokeWeight%281%29%3B%0A%09fill%28%22black%22%29%3B%0A%09drawingContext.setLineDash%28%5BY_CANVAS_SIZE%20%2a%200.9%20%2F%2019%2C%20Y_CANVAS_SIZE%20%2a%200.9%20%2F%2019%5D%29%3B%0A%09line%28XGetCoord%28xOrigin%29%2C%20Y_CANVAS_SIZE%20%2a%200.05%2C%20XGetCoord%28xOrigin%29%2C%20Y_CANVAS_SIZE%20%2a%200.95%29%3B%0A%09drawingContext.setLineDash%28%5B0%2C%200%5D%29%3B%0A%09text%28%22w%5B0%5D%22%2C%20XGetCoord%28xOrigin%29%2C%20Y_CANVAS_SIZE%2a1.01%29%3B%0A%09%2F%2F%20indicate%20weight%20at%20end%20point%0A%09line%28XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20Y_CANVAS_SIZE%20%2a%200.95%2C%20XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20Y_CANVAS_SIZE%20%2a%200.05%29%3B%0A%09text%28%22w%5B1%5D%22%2C%20XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20Y_CANVAS_SIZE%2a1.11%29%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20write%20text%20output%0A%2F%2F%0Afunction%20writeTextOutput%28xOrigin%29%20%7B%0A%09noStroke%28%29%3B%0A%09fill%28%22blue%22%29%3B%0A%09text%28%22Gradient%20%E2%88%87%22%2C%20XGetCoord%280%29%2C%202%20%2a%20TEXT_SIZE%20%2F%204%29%3B%0A%09text%28deriv%28xOrigin%29.toFixed%282%29%2C%20XGetCoord%280%29%2C%207%20%2a%20TEXT_SIZE%20%2F%204%29%3B%0A%09text%28%22Lernrate%20%CE%BC%22%2C%20XGetCoord%280%29%2C%2012%20%2a%20TEXT_SIZE%20%2F%204%29%3B%0A%09text%28learningrate.toFixed%281%29%2C%20XGetCoord%280%29%2C%2017%20%2a%20TEXT_SIZE%20%2F%204%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20adjust%20learningrate%0A%2F%2F%0Afunction%20adjustLearningrate%28%29%20%7B%0A%09learningrate%20%3D%20slider.value%28%29%3B%0A%7D%0A%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20MAIN%20PROGRAM%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20p5.js%20setup%28%29%0A%2F%2F%0Afunction%20setup%28%29%20%7B%0A%09%2F%2F%20defaults%0A%09learningrate%20%3D%201.0%3B%0A%09xPosition%20%3D%20xMIN%3B%0A%0A%09%2F%2F%20create%20canvas%20%0A%09createCanvas%28X_CANVAS_SIZE%2C%201.3%20%2a%20Y_CANVAS_SIZE%29%3B%0A%0A%09%2F%2F%20set%20text%20properties%0A%09textSize%28TEXT_SIZE%29%3B%0A%09textAlign%28CENTER%2C%20CENTER%29%3B%0A%0A%09%2F%2F%20create%20Slider%0A%09slider%20%3D%20createSlider%280.5%2C%205%2C%201%2C%200.1%29%3B%0A%09slider.position%28X_CANVAS_SIZE%20%2a%200.15%2C%20Y_CANVAS_SIZE%20%2B%2040%29%3B%20%2F%2F%20x%20and%20y%0A%09slider.size%28X_CANVAS_SIZE%20%2a%200.8%2C%2030%29%3B%20%2F%2F%20width%20and%20height%0A%09%2F%2F%20add%20slider%20functionality%0A%09slider.input%28adjustLearningrate%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20p5.js%20draw%28%29%0A%2F%2F%0Afunction%20draw%28%29%20%7B%0A%0A%09%2F%2F%20clear%20everything%0A%09background%28%22white%22%29%3B%0A%0A%09%2F%2F%20get%20x%20value%20of%20mouse%20position%20in%20graph%0A%09if%20%28mouseY%20%3C%3D%20%20Y_CANVAS_SIZE%2a0.95%29%20%7B%0A%09%09xPosition%20%3D%20getMouseXValue%28%29%3B%0A%09%7D%0A%0A%09%2F%2F%20draw%20everything%0A%09drawAxes%28%29%3B%0A%09drawGraph%28%29%3B%0A%09drawGradientVector%28xPosition%29%3B%0A%09drawLearningStep%28xPosition%29%3B%0A%09writeTextOutput%28xPosition%29%3B%0A%7D&css=undefined&html=%3Cscript%20src%3D%22https%3A%2F%2Fapp.exorciser.ch%2Flib%2Fp5.js%22%3E%3C%2Fscript%3E&height=430px#Gradient1}}
 ++++Unsere Kommentare dazu (zum Öffnen hier klicken)| ++++Unsere Kommentare dazu (zum Öffnen hier klicken)|
 \\  \\ 
Zeile 147: Zeile 147:
 {{gem/plain?0=N4XyA#51489842d9f30d1f}} {{gem/plain?0=N4XyA#51489842d9f30d1f}}
  
-{{exorciser/jspg?javascript=%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20CONSTANTS%20AND%20GLOBAL%20VARIABLES%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%2F%2F%20Canvas%20coordinates%20are%20X%2C%20Y%2C%20function%20values%20are%20x%2C%20y%0A%0A%2F%2F%20constants%0Aconst%20xMIN%20%3D%201.61%3B%0Aconst%20xMAX%20%3D%206.55%3B%0Aconst%20X_CANVAS_SIZE%20%3D%20400%3B%0Aconst%20Y_CANVAS_SIZE%20%3D%20200%3B%0Aconst%20XSHIFT%20%3D%20-X_CANVAS_SIZE%20%2a%200.1%3B%0Aconst%20YSHIFT%20%3D%20Y_CANVAS_SIZE%3B%0Aconst%20XSCALE%20%3D%20X_CANVAS_SIZE%20%2a%200.15%3B%0Aconst%20YSCALE%20%3D%20Y_CANVAS_SIZE%20%2a%200.3%3B%0Aconst%20GRAPH_GRANULARITY%20%3D%200.001%3B%0Aconst%20TEXT_SIZE%20%3D%2018%3B%0A%0A%2F%2F%20global%20variables%0Alet%20slider%3B%0Alet%20xPosition%3B%0Alet%20learningrate%3B%0Alet%20learningStep%3B%0Alet%20xAnimation%3B%0A%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20FUNCTIONS%20FOR%20CALCULATION%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20function%20value%20y%20given%20x%0A%2F%2F%0Afunction%20func%28x%29%20%7B%0A%09return%20%280.5%20%2a%20x%20%2a%2a%204%20-%208%20%2a%20x%20%2a%2a%203%20%2B%2045%20%2a%20x%20%2a%2a%202%20-%20104.5%20%2a%20x%20%2B%2088%29%2F2%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20derivate%20of%20function%20value%20y%20given%20x%0A%2F%2F%0Afunction%20deriv%28x%29%20%7B%0A%09return%20%282%20%2a%20x%20%2a%2a%203%20-%2024%20%2a%20x%20%2a%2a%202%20%2B%2090%20%2a%20x%20-%20104.5%29%2F2%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20gradient%20value%20given%20x%20of%20the%20gradient%20line%20through%20point%20xOrigin%0A%2F%2F%0Afunction%20grad%28xOrigin%2C%20x%29%20%7B%0A%09return%20deriv%28xOrigin%29%20%2a%20%28x%20-%20xOrigin%29%20%2B%20func%28xOrigin%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20x%20of%20the%20endpoint%20of%20the%20gradient%20vector%20that%20starts%20at%20the%20point%0A%2F%2F%20xOrigin%20and%20has%20the%20length%20length%0A%2F%2F%0Afunction%20xOfGrad%28xOrigin%2C%20length%29%20%7B%0A%09if%20%28deriv%28xOrigin%29%20%3E%3D%200%29%20%7B%0A%09%09return%20xOrigin%20-%20length%20%2F%20Math.sqrt%28deriv%28xOrigin%29%20%2a%2a%202%20%2B%201%29%3B%0A%09%7D%20else%20%7B%0A%09%09return%20xOrigin%20%2B%20length%20%2F%20Math.sqrt%28deriv%28xOrigin%29%20%2a%2a%202%20%2B%201%29%3B%0A%09%7D%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20transform%20x%20value%20into%20canvas%20X%20coordinate%0A%2F%2F%0Afunction%20XGetCoord%28x%29%20%7B%0A%09return%20XSCALE%20%2a%20x%20%2B%20XSHIFT%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20y%20value%20into%20canvas%20Y%20coordinate%0A%2F%2F%0Afunction%20YGetCoord%28y%29%20%7B%0A%09return%20YSHIFT%20-%20YSCALE%20%2a%20y%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20canvas%20X%20coordinate%20into%20x%20value%0A%2F%2F%0Afunction%20xGetVal%28X%29%20%7B%0A%09return%20%28X%20-%20XSHIFT%29%20%2F%20XSCALE%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20canvas%20Y%20coordinate%20into%20x%20value%0A%2F%2F%0Afunction%20yGetVal%28Y%29%20%7B%0A%09return%20%28YSHIFT%20-%20Y%29%20%2F%20YSCALE%3B%0A%7D%0A%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20FUNCTIONS%20FOR%20VISUALISATION%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20get%20position%20in%20graph%0A%2F%2F%0Afunction%20getMouseXValue%28%29%20%7B%0A%09let%20xPosition%20%3D%20xGetVal%28mouseX%29%3B%0A%09%2F%2F%20stop%20motion%20at%20edges%0A%09if%20%28xPosition%20%3C%20xMIN%29%20%7B%0A%09%09xPosition%20%3D%20xMIN%3B%0A%09%7D%0A%09if%20%28xPosition%20%3E%20xMAX%29%20%7B%0A%09%09xPosition%20%3D%20xMAX%3B%0A%09%7D%0A%09return%20xPosition%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20axes%0A%2F%2F%0Afunction%20drawAxes%28%29%20%7B%0A%09stroke%28%22black%22%29%3B%0A%09fill%28%22black%22%29%3B%0A%09strokeWeight%282%29%3B%0A%09line%28X_CANVAS_SIZE%20%2a%200.1%2C%20Y_CANVAS_SIZE%20%2a%200.95%2C%20X_CANVAS_SIZE%20%2a%200.95%2C%20Y_CANVAS_SIZE%20%2a%200.95%29%3B%0A%09line%28X_CANVAS_SIZE%20%2a%200.1%2C%20Y_CANVAS_SIZE%20%2a%200.05%2C%20X_CANVAS_SIZE%20%2a%200.1%2C%20Y_CANVAS_SIZE%20%2a%200.95%29%3B%0A%09%2F%2F%20add%20labels%0A%09strokeWeight%281%29%3B%0A%09text%28%22J%22%2C%20X_CANVAS_SIZE%20%2a%200.05%2C%20Y_CANVAS_SIZE%20%2a%200.1%29%0A%09text%28%22w%22%2C%20X_CANVAS_SIZE%20%2a%200.9%2C%20Y_CANVAS_SIZE%20%2a%200.85%29%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20graph%0A%2F%2F%0Afunction%20drawGraph%28%29%20%7B%0A%09stroke%28%22red%22%29%3B%0A%09strokeWeight%282%29%3B%0A%09for%20%28let%20x%20%3D%20xMIN%3B%20x%20%3C%3D%20xMAX%3B%20x%20%3D%20x%20%2B%20GRAPH_GRANULARITY%29%20%7B%0A%09%09point%28XGetCoord%28x%29%2C%20YGetCoord%28func%28x%29%29%29%3B%0A%09%7D%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20y%3Df%28x%29%0A%2F%2F%0Afunction%20drawPointOnFunction%28x%2C%20diameter%29%20%7B%0A%09%2F%2F%20draw%20point%0A%09stroke%28%22blue%22%29%3B%0A%09fill%28%22red%22%29%3B%0A%09circle%28XGetCoord%28x%29%2C%20YGetCoord%28func%28x%29%29%2C%20diameter%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20indicate%20weight%0A%2F%2F%0Afunction%20indicateWeight%28label%2C%20x%2C%20isLabel%2C%20isDashed%29%20%7B%0A%09%2F%2F%20indicate%20weight%0A%09stroke%28%22black%22%29%3B%0A%09strokeWeight%281%29%3B%0A%09fill%28%22black%22%29%3B%0A%09if%20%28isDashed%29%20%7B%0A%09%09drawingContext.setLineDash%28%5BY_CANVAS_SIZE%20%2a%200.9%20%2F%2019%2C%20Y_CANVAS_SIZE%20%2a%200.9%20%2F%2019%5D%29%3B%0A%09%7D%0A%09line%28XGetCoord%28x%29%2C%20Y_CANVAS_SIZE%20%2a%200.05%2C%20XGetCoord%28x%29%2C%20Y_CANVAS_SIZE%2a0.95%20%29%3B%0A%09if%20%28isLabel%29%20%7B%0A%09%09text%28label%2C%20XGetCoord%28x%29%2C%20Y_CANVAS_SIZE%2B2%29%3B%0A%09%7D%0A%09drawingContext.setLineDash%28%5B0%2C%200%5D%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20write%20slope%20at%20point%20x%0A%2F%2F%0Afunction%20writeLearningrate%28x%29%20%7B%0A%09%2F%2F%20draw%20point%0A%09noStroke%28%29%3B%0A%09fill%28%22black%22%29%3B%0A%09text%28%22Lernrate%3A%22%2C%20X_CANVAS_SIZE%20%2F%202%20-%201.5%20%2a%20TEXT_SIZE%2C%20Y_CANVAS_SIZE%20%2a%201.15%29%3B%0A%09text%28slider.value%28%29.toFixed%282%29.padStart%285%2C%20%22%20%22%29%2C%20X_CANVAS_SIZE%20%2F%202%20%2B%201.5%20%2a%20TEXT_SIZE%2C%20Y_CANVAS_SIZE%20%2a%201.15%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20gradient%20vector%0A%2F%2F%0Afunction%20drawGradientVector%28xOrigin%29%20%7B%0A%09%2F%2F%20get%20gradient%20vector%20length%0A%09let%20length%20%3D%20learningrate%20%2a%20Math.abs%28deriv%28xOrigin%29%29%3B%0A%09%2F%2F%20draw%20line%0A%09stroke%28%22blue%22%29%3B%0A%09strokeWeight%282%29%3B%0A%09line%28XGetCoord%28xOrigin%29%2C%0A%09%09YGetCoord%28func%28xOrigin%29%29%2C%20XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20YGetCoord%28grad%28xOrigin%2C%20xOfGrad%28xOrigin%2C%20length%29%29%29%29%3B%0A%09%2F%2F%20draw%20intersection%20point%0A%09stroke%28%22blue%22%29%3B%0A%09fill%28%22red%22%29%3B%0A%09circle%28XGetCoord%28xOrigin%29%2C%20YGetCoord%28func%28xOrigin%29%29%2C%206%29%3B%0A%09%2F%2F%20draw%20end%20point%0A%09fill%28%22blue%22%29%3B%0A%09circle%28XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20YGetCoord%28grad%28xOrigin%2C%20xOfGrad%28xOrigin%2C%20length%29%29%29%2C%203%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20adjust%20learningrate%0A%2F%2F%0Afunction%20adjustLearningrate%28%29%20%7B%0A%09learningrate%20%3D%20slider.value%28%29%3B%0A%7D%0A%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20MAIN%20PROGRAM%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20p5.js%20setup%28%29%0A%2F%2F%0Afunction%20setup%28%29%20%7B%0A%09%2F%2F%20defaults%0A%09learningrate%20%3D%200.25%0A%09xPosition%20%3D%20xMIN%3B%0A%09learningStep%20%3D%200%3B%0A%0A%09%2F%2F%20create%20canvas%20%0A%09createCanvas%28X_CANVAS_SIZE%2C%201.4%20%2a%20Y_CANVAS_SIZE%29%3B%0A%0A%09%2F%2F%20set%20text%20properties%0A%09textSize%28TEXT_SIZE%29%3B%0A%09textAlign%28CENTER%2C%20CENTER%29%3B%0A%0A%09%2F%2F%20create%20Slider%0A%09slider%20%3D%20createSlider%280.1%2C%201%2C%200.25%2C%200.05%29%3B%0A%09slider.position%28X_CANVAS_SIZE%20%2a%200.15%2C%20Y_CANVAS_SIZE%20%2a%201.25%29%3B%20%2F%2F%20x%20and%20y%0A%09slider.size%28X_CANVAS_SIZE%20%2a%200.8%2C%2030%29%3B%20%2F%2F%20width%20and%20height%0A%09%2F%2F%20add%20slider%20functionality%0A%09slider.input%28adjustLearningrate%29%3B%0A%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20p5.js%20draw%28%29%0A%2F%2F%0Afunction%20draw%28%29%20%7B%0A%0A%09%2F%2F%20clear%20everything%0A%09background%28%22white%22%29%3B%0A%0A%09%2F%2F%20get%20x%20value%20of%20mouse%20position%20in%20graph%0A%09if%20%28mouseY%20%3C%3D%20Y_CANVAS_SIZE%20%2a%200.95%29%20%7B%0A%09%09xPosition%20%3D%20getMouseXValue%28%29%3B%0A%09%7D%0A%0A%09%2F%2F%20draw%20axes%20and%20graph%0A%09drawAxes%28%29%3B%0A%09drawGraph%28%29%3B%0A%0A%09%2F%2F%2010.%20stop%20animation%20at%20w%5B5%5D%0A%09if%20%28learningStep%20%3D%3D%3D%2016%29%20%7B%0A%09%09xAnimation%20%3D%20xOfGrad%28xAnimation%2C%20learningrate%20%2a%20Math.abs%28deriv%28xAnimation%29%29%29%3B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B5%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09noStroke%28%29%3B%0A%09%09text%28%22Klicke%20auf%20%27Run%27%20f%C3%BCr%20einen%20Neustart.%22%2C%20X_CANVAS_SIZE%20%2F%202%2C%20Y_CANVAS_SIZE%20%2a%201.15%29%3B%0A%09%09frameRate%280%29%3B%0A%09%7D%0A%09%2F%2F%209.add%20new%20weight%20w%5B5%5D%0A%09if%20%28learningStep%20%3D%3D%3D%2015%29%20%7B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B4%5D%22%2C%20xAnimation%2C%20false%2C%20true%29%3B%0A%09%09indicateWeight%28%22w%5B5%5D%22%2C%20xOfGrad%28xAnimation%2C%20learningrate%20%2a%20Math.abs%28deriv%28xAnimation%29%29%29%2C%20true%2C%20false%29%3B%0A%09%09drawGradientVector%28xAnimation%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%2016%3B%0A%09%7D%0A%09%2F%2F%208.%20draw%20gradient%20from%20w%5B4%5D%0A%09if%20%28learningStep%20%3D%3D%3D%2014%29%20%7B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B4%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09drawGradientVector%28xAnimation%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%2015%3B%0A%09%7D%0A%09%2F%2F%207.%20start%20animation%20at%20w%5B4%5D%0A%09if%20%28learningStep%20%3D%3D%3D%2013%29%20%7B%0A%09%09xAnimation%20%3D%20xOfGrad%28xAnimation%2C%20learningrate%20%2a%20Math.abs%28deriv%28xAnimation%29%29%29%3B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B4%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%2014%3B%0A%09%7D%09%2F%2F%209.add%20new%20weight%20w%5B4%5D%0A%09if%20%28learningStep%20%3D%3D%3D%2012%29%20%7B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B3%5D%22%2C%20xAnimation%2C%20false%2C%20true%29%3B%0A%09%09indicateWeight%28%22w%5B4%5D%22%2C%20xOfGrad%28xAnimation%2C%20learningrate%20%2a%20Math.abs%28deriv%28xAnimation%29%29%29%2C%20true%2C%20false%29%3B%0A%09%09drawGradientVector%28xAnimation%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%2013%3B%0A%09%7D%0A%09%2F%2F%208.%20draw%20gradient%20from%20w%5B3%5D%0A%09if%20%28learningStep%20%3D%3D%3D%2011%29%20%7B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B3%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09drawGradientVector%28xAnimation%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%2012%3B%0A%09%7D%0A%09%2F%2F%207.%20start%20animation%20at%20w%5B3%5D%0A%09if%20%28learningStep%20%3D%3D%3D%20%2010%29%20%7B%0A%09%09xAnimation%20%3D%20xOfGrad%28xAnimation%2C%20learningrate%20%2a%20Math.abs%28deriv%28xAnimation%29%29%29%3B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B3%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%2011%3B%0A%09%7D%09%2F%2F%209.add%20new%20weight%20w%5B3%5D%0A%09if%20%28learningStep%20%3D%3D%3D%209%29%20%7B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B2%5D%22%2C%20xAnimation%2C%20false%2C%20true%29%3B%0A%09%09indicateWeight%28%22w%5B3%5D%22%2C%20xOfGrad%28xAnimation%2C%20learningrate%20%2a%20Math.abs%28deriv%28xAnimation%29%29%29%2C%20true%2C%20false%29%3B%0A%09%09drawGradientVector%28xAnimation%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%2010%3B%0A%09%7D%0A%09%2F%2F%208.%20draw%20gradient%20from%20w%5B2%5D%0A%09if%20%28learningStep%20%3D%3D%3D%208%29%20%7B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B2%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09drawGradientVector%28xAnimation%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%209%3B%0A%09%7D%0A%09%2F%2F%207.%20start%20animation%20at%20w%5B2%5D%0A%09if%20%28learningStep%20%3D%3D%3D%207%29%20%7B%0A%09%09xAnimation%20%3D%20xOfGrad%28xAnimation%2C%20learningrate%20%2a%20Math.abs%28deriv%28xAnimation%29%29%29%3B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B2%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%208%3B%0A%09%7D%0A%09%2F%2F%206.add%20new%20weight%20w%5B2%5D%0A%09if%20%28learningStep%20%3D%3D%3D%206%29%20%7B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B1%5D%22%2C%20xAnimation%2C%20false%2C%20true%29%3B%0A%09%09indicateWeight%28%22w%5B2%5D%22%2C%20xOfGrad%28xAnimation%2C%20learningrate%20%2a%20Math.abs%28deriv%28xAnimation%29%29%29%2C%20true%2C%20false%29%3B%0A%09%09drawGradientVector%28xAnimation%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%207%3B%0A%09%7D%0A%09%2F%2F%205.%20draw%20gradient%20from%20w%5B1%5D%0A%09if%20%28learningStep%20%3D%3D%3D%205%29%20%7B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B1%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09drawGradientVector%28xAnimation%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%206%3B%0A%09%7D%0A%09%2F%2F%204.%20start%20animation%20at%20w%5B1%5D%0A%09if%20%28learningStep%20%3D%3D%3D%204%29%20%7B%0A%09%09xAnimation%20%3D%20xOfGrad%28xAnimation%2C%20learningrate%20%2a%20Math.abs%28deriv%28xAnimation%29%29%29%3B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B1%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%205%3B%0A%09%7D%0A%09%2F%2F%203.add%20new%20weight%20w%E2%82%81%0A%09if%20%28learningStep%20%3D%3D%3D%203%29%20%7B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B0%5D%22%2C%20xAnimation%2C%20false%2C%20true%29%3B%0A%09%09indicateWeight%28%22w%5B1%5D%22%2C%20xOfGrad%28xAnimation%2C%20learningrate%20%2a%20Math.abs%28deriv%28xAnimation%29%29%29%2C%20true%2C%20false%29%3B%0A%09%09drawGradientVector%28xAnimation%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%204%3B%0A%09%7D%0A%09%2F%2F%202.%20draw%20gradient%20from%20w%5B0%5D%0A%09if%20%28learningStep%20%3D%3D%3D%202%29%20%7B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B0%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09drawGradientVector%28xAnimation%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%203%3B%0A%09%7D%0A%09%2F%2F%201.%20start%20animation%20at%20w%5B0%5D%0A%09if%20%28learningStep%20%3D%3D%3D%201%29%20%7B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B0%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%202%3B%0A%09%7D%0A%09%2F%2F%200.%20Choose%20w%5B0%5D%0A%09if%20%28learningStep%20%3D%3D%3D%200%29%20%7B%0A%09%09frameRate%2860%29%3B%0A%09%09drawPointOnFunction%28xPosition%2C%206%29%3B%0A%09%09if%20%28mouseIsPressed%20%26%26%20mouseY%20%3C%3D%20Y_CANVAS_SIZE%20%2a%200.95%29%20%7B%0A%09%09%09xAnimation%20%3D%20xPosition%3B%0A%09%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B0%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09%09learningStep%20%3D%201%3B%0A%09%09%09fill%28%22black%22%29%3B%0A%09%09%09noStroke%28%29%3B%0A%09%09%09text%28%22Starte%20Animation.%22%2C%20X_CANVAS_SIZE%20%2F%202%2C%20Y_CANVAS_SIZE%20%2a%201.15%29%3B%0A%09%09%09frameRate%281%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09writeLearningrate%28%29%3B%0A%09%09%7D%0A%09%7D%0A%7D&css=undefined&html=%3Cscript%20src%3D%22https%3A%2F%2Fcdn.jsdelivr.net%2Fnpm%2Fp5%22%3E%3C%2Fscript%3E&height=450px#Gradient2}}+{{exorciser/jspg?javascript=%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20CONSTANTS%20AND%20GLOBAL%20VARIABLES%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%2F%2F%20Canvas%20coordinates%20are%20X%2C%20Y%2C%20function%20values%20are%20x%2C%20y%0A%0A%2F%2F%20constants%0Aconst%20xMIN%20%3D%201.61%3B%0Aconst%20xMAX%20%3D%206.55%3B%0Aconst%20X_CANVAS_SIZE%20%3D%20400%3B%0Aconst%20Y_CANVAS_SIZE%20%3D%20200%3B%0Aconst%20XSHIFT%20%3D%20-X_CANVAS_SIZE%20%2a%200.1%3B%0Aconst%20YSHIFT%20%3D%20Y_CANVAS_SIZE%3B%0Aconst%20XSCALE%20%3D%20X_CANVAS_SIZE%20%2a%200.15%3B%0Aconst%20YSCALE%20%3D%20Y_CANVAS_SIZE%20%2a%200.3%3B%0Aconst%20GRAPH_GRANULARITY%20%3D%200.001%3B%0Aconst%20TEXT_SIZE%20%3D%2018%3B%0A%0A%2F%2F%20global%20variables%0Alet%20slider%3B%0Alet%20xPosition%3B%0Alet%20learningrate%3B%0Alet%20learningStep%3B%0Alet%20xAnimation%3B%0A%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20FUNCTIONS%20FOR%20CALCULATION%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20function%20value%20y%20given%20x%0A%2F%2F%0Afunction%20func%28x%29%20%7B%0A%09return%20%280.5%20%2a%20x%20%2a%2a%204%20-%208%20%2a%20x%20%2a%2a%203%20%2B%2045%20%2a%20x%20%2a%2a%202%20-%20104.5%20%2a%20x%20%2B%2088%29%2F2%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20derivate%20of%20function%20value%20y%20given%20x%0A%2F%2F%0Afunction%20deriv%28x%29%20%7B%0A%09return%20%282%20%2a%20x%20%2a%2a%203%20-%2024%20%2a%20x%20%2a%2a%202%20%2B%2090%20%2a%20x%20-%20104.5%29%2F2%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20gradient%20value%20given%20x%20of%20the%20gradient%20line%20through%20point%20xOrigin%0A%2F%2F%0Afunction%20grad%28xOrigin%2C%20x%29%20%7B%0A%09return%20deriv%28xOrigin%29%20%2a%20%28x%20-%20xOrigin%29%20%2B%20func%28xOrigin%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20returns%20x%20of%20the%20endpoint%20of%20the%20gradient%20vector%20that%20starts%20at%20the%20point%0A%2F%2F%20xOrigin%20and%20has%20the%20length%20length%0A%2F%2F%0Afunction%20xOfGrad%28xOrigin%2C%20length%29%20%7B%0A%09if%20%28deriv%28xOrigin%29%20%3E%3D%200%29%20%7B%0A%09%09return%20xOrigin%20-%20length%20%2F%20Math.sqrt%28deriv%28xOrigin%29%20%2a%2a%202%20%2B%201%29%3B%0A%09%7D%20else%20%7B%0A%09%09return%20xOrigin%20%2B%20length%20%2F%20Math.sqrt%28deriv%28xOrigin%29%20%2a%2a%202%20%2B%201%29%3B%0A%09%7D%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20transform%20x%20value%20into%20canvas%20X%20coordinate%0A%2F%2F%0Afunction%20XGetCoord%28x%29%20%7B%0A%09return%20XSCALE%20%2a%20x%20%2B%20XSHIFT%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20y%20value%20into%20canvas%20Y%20coordinate%0A%2F%2F%0Afunction%20YGetCoord%28y%29%20%7B%0A%09return%20YSHIFT%20-%20YSCALE%20%2a%20y%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20canvas%20X%20coordinate%20into%20x%20value%0A%2F%2F%0Afunction%20xGetVal%28X%29%20%7B%0A%09return%20%28X%20-%20XSHIFT%29%20%2F%20XSCALE%3B%0A%7D%0A%0A%2F%2F%0A%2F%2F%20transform%20canvas%20Y%20coordinate%20into%20x%20value%0A%2F%2F%0Afunction%20yGetVal%28Y%29%20%7B%0A%09return%20%28YSHIFT%20-%20Y%29%20%2F%20YSCALE%3B%0A%7D%0A%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20FUNCTIONS%20FOR%20VISUALISATION%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20get%20position%20in%20graph%0A%2F%2F%0Afunction%20getMouseXValue%28%29%20%7B%0A%09let%20xPosition%20%3D%20xGetVal%28mouseX%29%3B%0A%09%2F%2F%20stop%20motion%20at%20edges%0A%09if%20%28xPosition%20%3C%20xMIN%29%20%7B%0A%09%09xPosition%20%3D%20xMIN%3B%0A%09%7D%0A%09if%20%28xPosition%20%3E%20xMAX%29%20%7B%0A%09%09xPosition%20%3D%20xMAX%3B%0A%09%7D%0A%09return%20xPosition%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20axes%0A%2F%2F%0Afunction%20drawAxes%28%29%20%7B%0A%09stroke%28%22black%22%29%3B%0A%09fill%28%22black%22%29%3B%0A%09strokeWeight%282%29%3B%0A%09line%28X_CANVAS_SIZE%20%2a%200.1%2C%20Y_CANVAS_SIZE%20%2a%200.95%2C%20X_CANVAS_SIZE%20%2a%200.95%2C%20Y_CANVAS_SIZE%20%2a%200.95%29%3B%0A%09line%28X_CANVAS_SIZE%20%2a%200.1%2C%20Y_CANVAS_SIZE%20%2a%200.05%2C%20X_CANVAS_SIZE%20%2a%200.1%2C%20Y_CANVAS_SIZE%20%2a%200.95%29%3B%0A%09%2F%2F%20add%20labels%0A%09strokeWeight%281%29%3B%0A%09text%28%22J%22%2C%20X_CANVAS_SIZE%20%2a%200.05%2C%20Y_CANVAS_SIZE%20%2a%200.1%29%0A%09text%28%22w%22%2C%20X_CANVAS_SIZE%20%2a%200.9%2C%20Y_CANVAS_SIZE%20%2a%200.85%29%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20graph%0A%2F%2F%0Afunction%20drawGraph%28%29%20%7B%0A%09stroke%28%22red%22%29%3B%0A%09strokeWeight%282%29%3B%0A%09for%20%28let%20x%20%3D%20xMIN%3B%20x%20%3C%3D%20xMAX%3B%20x%20%3D%20x%20%2B%20GRAPH_GRANULARITY%29%20%7B%0A%09%09point%28XGetCoord%28x%29%2C%20YGetCoord%28func%28x%29%29%29%3B%0A%09%7D%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20y%3Df%28x%29%0A%2F%2F%0Afunction%20drawPointOnFunction%28x%2C%20diameter%29%20%7B%0A%09%2F%2F%20draw%20point%0A%09stroke%28%22blue%22%29%3B%0A%09fill%28%22red%22%29%3B%0A%09circle%28XGetCoord%28x%29%2C%20YGetCoord%28func%28x%29%29%2C%20diameter%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20indicate%20weight%0A%2F%2F%0Afunction%20indicateWeight%28label%2C%20x%2C%20isLabel%2C%20isDashed%29%20%7B%0A%09%2F%2F%20indicate%20weight%0A%09stroke%28%22black%22%29%3B%0A%09strokeWeight%281%29%3B%0A%09fill%28%22black%22%29%3B%0A%09if%20%28isDashed%29%20%7B%0A%09%09drawingContext.setLineDash%28%5BY_CANVAS_SIZE%20%2a%200.9%20%2F%2019%2C%20Y_CANVAS_SIZE%20%2a%200.9%20%2F%2019%5D%29%3B%0A%09%7D%0A%09line%28XGetCoord%28x%29%2C%20Y_CANVAS_SIZE%20%2a%200.05%2C%20XGetCoord%28x%29%2C%20Y_CANVAS_SIZE%2a0.95%20%29%3B%0A%09if%20%28isLabel%29%20%7B%0A%09%09text%28label%2C%20XGetCoord%28x%29%2C%20Y_CANVAS_SIZE%2B2%29%3B%0A%09%7D%0A%09drawingContext.setLineDash%28%5B0%2C%200%5D%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20write%20slope%20at%20point%20x%0A%2F%2F%0Afunction%20writeLearningrate%28x%29%20%7B%0A%09%2F%2F%20draw%20point%0A%09noStroke%28%29%3B%0A%09fill%28%22black%22%29%3B%0A%09text%28%22Lernrate%3A%22%2C%20X_CANVAS_SIZE%20%2F%202%20-%201.5%20%2a%20TEXT_SIZE%2C%20Y_CANVAS_SIZE%20%2a%201.15%29%3B%0A%09text%28slider.value%28%29.toFixed%282%29.padStart%285%2C%20%22%20%22%29%2C%20X_CANVAS_SIZE%20%2F%202%20%2B%201.5%20%2a%20TEXT_SIZE%2C%20Y_CANVAS_SIZE%20%2a%201.15%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20draw%20gradient%20vector%0A%2F%2F%0Afunction%20drawGradientVector%28xOrigin%29%20%7B%0A%09%2F%2F%20get%20gradient%20vector%20length%0A%09let%20length%20%3D%20learningrate%20%2a%20Math.abs%28deriv%28xOrigin%29%29%3B%0A%09%2F%2F%20draw%20line%0A%09stroke%28%22blue%22%29%3B%0A%09strokeWeight%282%29%3B%0A%09line%28XGetCoord%28xOrigin%29%2C%0A%09%09YGetCoord%28func%28xOrigin%29%29%2C%20XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20YGetCoord%28grad%28xOrigin%2C%20xOfGrad%28xOrigin%2C%20length%29%29%29%29%3B%0A%09%2F%2F%20draw%20intersection%20point%0A%09stroke%28%22blue%22%29%3B%0A%09fill%28%22red%22%29%3B%0A%09circle%28XGetCoord%28xOrigin%29%2C%20YGetCoord%28func%28xOrigin%29%29%2C%206%29%3B%0A%09%2F%2F%20draw%20end%20point%0A%09fill%28%22blue%22%29%3B%0A%09circle%28XGetCoord%28xOfGrad%28xOrigin%2C%20length%29%29%2C%20YGetCoord%28grad%28xOrigin%2C%20xOfGrad%28xOrigin%2C%20length%29%29%29%2C%203%29%3B%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20adjust%20learningrate%0A%2F%2F%0Afunction%20adjustLearningrate%28%29%20%7B%0A%09learningrate%20%3D%20slider.value%28%29%3B%0A%7D%0A%0A%0A%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%2F%2F%20MAIN%20PROGRAM%0A%2F%2F%20%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%2a%0A%0A%0A%2F%2F%0A%2F%2F%20p5.js%20setup%28%29%0A%2F%2F%0Afunction%20setup%28%29%20%7B%0A%09%2F%2F%20defaults%0A%09learningrate%20%3D%200.25%0A%09xPosition%20%3D%20xMIN%3B%0A%09learningStep%20%3D%200%3B%0A%0A%09%2F%2F%20create%20canvas%20%0A%09createCanvas%28X_CANVAS_SIZE%2C%201.4%20%2a%20Y_CANVAS_SIZE%29%3B%0A%0A%09%2F%2F%20set%20text%20properties%0A%09textSize%28TEXT_SIZE%29%3B%0A%09textAlign%28CENTER%2C%20CENTER%29%3B%0A%0A%09%2F%2F%20create%20Slider%0A%09slider%20%3D%20createSlider%280.1%2C%201%2C%200.25%2C%200.05%29%3B%0A%09slider.position%28X_CANVAS_SIZE%20%2a%200.15%2C%20Y_CANVAS_SIZE%20%2a%201.25%29%3B%20%2F%2F%20x%20and%20y%0A%09slider.size%28X_CANVAS_SIZE%20%2a%200.8%2C%2030%29%3B%20%2F%2F%20width%20and%20height%0A%09%2F%2F%20add%20slider%20functionality%0A%09slider.input%28adjustLearningrate%29%3B%0A%0A%7D%0A%0A%0A%2F%2F%0A%2F%2F%20p5.js%20draw%28%29%0A%2F%2F%0Afunction%20draw%28%29%20%7B%0A%0A%09%2F%2F%20clear%20everything%0A%09background%28%22white%22%29%3B%0A%0A%09%2F%2F%20get%20x%20value%20of%20mouse%20position%20in%20graph%0A%09if%20%28mouseY%20%3C%3D%20Y_CANVAS_SIZE%20%2a%200.95%29%20%7B%0A%09%09xPosition%20%3D%20getMouseXValue%28%29%3B%0A%09%7D%0A%0A%09%2F%2F%20draw%20axes%20and%20graph%0A%09drawAxes%28%29%3B%0A%09drawGraph%28%29%3B%0A%0A%09%2F%2F%2010.%20stop%20animation%20at%20w%5B5%5D%0A%09if%20%28learningStep%20%3D%3D%3D%2016%29%20%7B%0A%09%09xAnimation%20%3D%20xOfGrad%28xAnimation%2C%20learningrate%20%2a%20Math.abs%28deriv%28xAnimation%29%29%29%3B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B5%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09noStroke%28%29%3B%0A%09%09text%28%22Klicke%20auf%20%27Run%27%20f%C3%BCr%20einen%20Neustart.%22%2C%20X_CANVAS_SIZE%20%2F%202%2C%20Y_CANVAS_SIZE%20%2a%201.15%29%3B%0A%09%09frameRate%280%29%3B%0A%09%7D%0A%09%2F%2F%209.add%20new%20weight%20w%5B5%5D%0A%09if%20%28learningStep%20%3D%3D%3D%2015%29%20%7B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B4%5D%22%2C%20xAnimation%2C%20false%2C%20true%29%3B%0A%09%09indicateWeight%28%22w%5B5%5D%22%2C%20xOfGrad%28xAnimation%2C%20learningrate%20%2a%20Math.abs%28deriv%28xAnimation%29%29%29%2C%20true%2C%20false%29%3B%0A%09%09drawGradientVector%28xAnimation%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%2016%3B%0A%09%7D%0A%09%2F%2F%208.%20draw%20gradient%20from%20w%5B4%5D%0A%09if%20%28learningStep%20%3D%3D%3D%2014%29%20%7B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B4%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09drawGradientVector%28xAnimation%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%2015%3B%0A%09%7D%0A%09%2F%2F%207.%20start%20animation%20at%20w%5B4%5D%0A%09if%20%28learningStep%20%3D%3D%3D%2013%29%20%7B%0A%09%09xAnimation%20%3D%20xOfGrad%28xAnimation%2C%20learningrate%20%2a%20Math.abs%28deriv%28xAnimation%29%29%29%3B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B4%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%2014%3B%0A%09%7D%09%2F%2F%209.add%20new%20weight%20w%5B4%5D%0A%09if%20%28learningStep%20%3D%3D%3D%2012%29%20%7B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B3%5D%22%2C%20xAnimation%2C%20false%2C%20true%29%3B%0A%09%09indicateWeight%28%22w%5B4%5D%22%2C%20xOfGrad%28xAnimation%2C%20learningrate%20%2a%20Math.abs%28deriv%28xAnimation%29%29%29%2C%20true%2C%20false%29%3B%0A%09%09drawGradientVector%28xAnimation%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%2013%3B%0A%09%7D%0A%09%2F%2F%208.%20draw%20gradient%20from%20w%5B3%5D%0A%09if%20%28learningStep%20%3D%3D%3D%2011%29%20%7B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B3%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09drawGradientVector%28xAnimation%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%2012%3B%0A%09%7D%0A%09%2F%2F%207.%20start%20animation%20at%20w%5B3%5D%0A%09if%20%28learningStep%20%3D%3D%3D%20%2010%29%20%7B%0A%09%09xAnimation%20%3D%20xOfGrad%28xAnimation%2C%20learningrate%20%2a%20Math.abs%28deriv%28xAnimation%29%29%29%3B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B3%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%2011%3B%0A%09%7D%09%2F%2F%209.add%20new%20weight%20w%5B3%5D%0A%09if%20%28learningStep%20%3D%3D%3D%209%29%20%7B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B2%5D%22%2C%20xAnimation%2C%20false%2C%20true%29%3B%0A%09%09indicateWeight%28%22w%5B3%5D%22%2C%20xOfGrad%28xAnimation%2C%20learningrate%20%2a%20Math.abs%28deriv%28xAnimation%29%29%29%2C%20true%2C%20false%29%3B%0A%09%09drawGradientVector%28xAnimation%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%2010%3B%0A%09%7D%0A%09%2F%2F%208.%20draw%20gradient%20from%20w%5B2%5D%0A%09if%20%28learningStep%20%3D%3D%3D%208%29%20%7B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B2%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09drawGradientVector%28xAnimation%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%209%3B%0A%09%7D%0A%09%2F%2F%207.%20start%20animation%20at%20w%5B2%5D%0A%09if%20%28learningStep%20%3D%3D%3D%207%29%20%7B%0A%09%09xAnimation%20%3D%20xOfGrad%28xAnimation%2C%20learningrate%20%2a%20Math.abs%28deriv%28xAnimation%29%29%29%3B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B2%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%208%3B%0A%09%7D%0A%09%2F%2F%206.add%20new%20weight%20w%5B2%5D%0A%09if%20%28learningStep%20%3D%3D%3D%206%29%20%7B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B1%5D%22%2C%20xAnimation%2C%20false%2C%20true%29%3B%0A%09%09indicateWeight%28%22w%5B2%5D%22%2C%20xOfGrad%28xAnimation%2C%20learningrate%20%2a%20Math.abs%28deriv%28xAnimation%29%29%29%2C%20true%2C%20false%29%3B%0A%09%09drawGradientVector%28xAnimation%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%207%3B%0A%09%7D%0A%09%2F%2F%205.%20draw%20gradient%20from%20w%5B1%5D%0A%09if%20%28learningStep%20%3D%3D%3D%205%29%20%7B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B1%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09drawGradientVector%28xAnimation%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%206%3B%0A%09%7D%0A%09%2F%2F%204.%20start%20animation%20at%20w%5B1%5D%0A%09if%20%28learningStep%20%3D%3D%3D%204%29%20%7B%0A%09%09xAnimation%20%3D%20xOfGrad%28xAnimation%2C%20learningrate%20%2a%20Math.abs%28deriv%28xAnimation%29%29%29%3B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B1%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%205%3B%0A%09%7D%0A%09%2F%2F%203.add%20new%20weight%20w%E2%82%81%0A%09if%20%28learningStep%20%3D%3D%3D%203%29%20%7B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B0%5D%22%2C%20xAnimation%2C%20false%2C%20true%29%3B%0A%09%09indicateWeight%28%22w%5B1%5D%22%2C%20xOfGrad%28xAnimation%2C%20learningrate%20%2a%20Math.abs%28deriv%28xAnimation%29%29%29%2C%20true%2C%20false%29%3B%0A%09%09drawGradientVector%28xAnimation%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%204%3B%0A%09%7D%0A%09%2F%2F%202.%20draw%20gradient%20from%20w%5B0%5D%0A%09if%20%28learningStep%20%3D%3D%3D%202%29%20%7B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B0%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09drawGradientVector%28xAnimation%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%203%3B%0A%09%7D%0A%09%2F%2F%201.%20start%20animation%20at%20w%5B0%5D%0A%09if%20%28learningStep%20%3D%3D%3D%201%29%20%7B%0A%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B0%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09writeLearningrate%28%29%3B%0A%09%09learningStep%20%3D%202%3B%0A%09%7D%0A%09%2F%2F%200.%20Choose%20w%5B0%5D%0A%09if%20%28learningStep%20%3D%3D%3D%200%29%20%7B%0A%09%09frameRate%2860%29%3B%0A%09%09drawPointOnFunction%28xPosition%2C%206%29%3B%0A%09%09if%20%28mouseIsPressed%20%26%26%20mouseY%20%3C%3D%20Y_CANVAS_SIZE%20%2a%200.95%29%20%7B%0A%09%09%09xAnimation%20%3D%20xPosition%3B%0A%09%09%09drawPointOnFunction%28xAnimation%2C%206%29%3B%0A%09%09indicateWeight%28%22w%5B0%5D%22%2C%20xAnimation%2C%20true%2C%20false%29%3B%0A%09%09%09learningStep%20%3D%201%3B%0A%09%09%09fill%28%22black%22%29%3B%0A%09%09%09noStroke%28%29%3B%0A%09%09%09text%28%22Starte%20Animation.%22%2C%20X_CANVAS_SIZE%20%2F%202%2C%20Y_CANVAS_SIZE%20%2a%201.15%29%3B%0A%09%09%09frameRate%281%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09writeLearningrate%28%29%3B%0A%09%09%7D%0A%09%7D%0A%7D&css=undefined&html=%3Cscript%20src%3D%22https%3A%2F%2Fapp.exorciser.ch%2Flib%2Fp5.js%22%3E%3C%2Fscript%3E&height=450px#Gradient2}}
 ++++Unsere Kommentare dazu (zum Öffnen hier klicken)| ++++Unsere Kommentare dazu (zum Öffnen hier klicken)|
 \\  \\