Um Ihre Titelfrage zu beantworten: "Verwendet eine Programmiersprache Variablen wie in Mathematik?": C, C #, Java, C ++ und jede andere Sprache im C-Stil verwenden Variablen so, wie sie in Mathematik verwendet werden.
Sie müssen nur == anstelle von = verwenden.
Wenn ich dein Original nehme
root(square(x)) = abs(x)
Dann kann ich das direkt in C # übersetzen, ohne andere Änderungen als für die Syntax vorzunehmen.
Math.Sqrt(Math.Pow(x,2)) == Math.Abs(x)
Dies wird für jeden Wert von x als wahr ausgewertet, solange x im Quadrat kleiner als das Maximum für den von Ihnen verwendeten Datentyp ist.
(Java wird sehr ähnlich sein, aber ich glaube, der Math-Namespace ist etwas anders)
Dieses nächste Bit kann in C # nicht kompiliert werden, da der Compiler klug genug ist, um zu wissen, dass ich die Rückgabe einer Operation keiner anderen Operation zuweisen kann.
Math.Sqrt(Math.Pow(x,2)) = Math.Abs(x)
Unveränderlichkeit hat damit nichts zu tun. Sie müssen den Wert weiterhin in einer unveränderlichen Sprache zuweisen, und es ist durchaus möglich, dass eine bestimmte Sprache dies mit = als Operator auswählt.
Diese Schleife wird weiter ausgeführt, bis Sie die zulässigen Werte von x erschöpft haben und eine Überlaufausnahme erhalten:
while (Math.Sqrt(Math.Pow(x, 2)) == Math.Abs(x))
{
++x;
System.Console.WriteLine(x);
}
Aus diesem Grund hassen Mathematiker die Verwendung von = für die Zuweisung. Es verwirrt sie. Ich denke, das hat dich dazu gebracht, dich selbst zu verwirren. Nehmen Sie Ihr Beispiel
y = (x**2)**.5
x *= 2
assert y == abs(x)
Wenn ich daraus Algebra mache, bekomme ich folgendes:
abs (2x) = Wurzel (x ^ 2)
Was natürlich nicht für andere Werte als 0 gilt. Die Unveränderlichkeit erspart Ihnen nur den Fehler, den Wert von x zu ändern, wenn Sie zusätzliche Schritte zwischen der Bewertung der linken und rechten Seite der ursprünglichen Gleichung hinzufügen. Es ändert nichts daran, wie Sie den Ausdruck bewerten.