Frage

Die meisten Programmiersprachen geben 2 als Antwort auf Quadratwurzel 4. Allerdings gibt es zwei Antworten: 2 und -2. Gibt es einen besonderen Grund, historisch oder nicht, warum nur eine Antwort ist in der Regel gegeben?

War es hilfreich?

Lösung

Denn:

  • In der Mathematik √ x häufig, wenn nicht anders angegeben, bezieht sich auf die Haupt (dh positiv) Wurzel von x [ http://mathworld.wolfram.com/SquareRoot.html] .
  • Einige Sprachen haben nicht die Fähigkeit, mehr als einen Wert zurückgeben.
  • Da kann man nur Negation gelten, die beide überflüssig wäre zurückkehren.

Andere Tipps

Wenn die Quadratwurzel Methode zwei Werte zurück, dann einer der beiden letztgenannten würde praktisch immer verworfen werden. Zusätzlich Speicher und Komplexität auf dem zusätzlichen Rückgabewert zu verschwenden, wäre es wenig genutzt werden. Jeder weiß, dass Sie die andere Wurzel mehr die Antwort zurückgegeben von -1 und erhalten können.

Ich gehe davon aus, dass nur mathematische Sprachen hier mehrere Werte zurückgeben würde, vielleicht als ein Array oder eine Matrix. Aber für die meisten Allzweck-Programmiersprachen gibt es vernachlässigbare Verstärkung und nicht zu vernachlässigenden Kosten zu tun, wie Sie vorschlagen.

Einige Gedanken:

  • Historisch Funktionen wurden als Verfahren definiert, die zurückgegeben ein Einzelwert .

  • Es wäre knifflig gewesen (primitive Programmierkonstrukte verwenden) eine saubere Funktion, die zurückgegeben mehrere Werte wie folgt aus.

  • zu definieren,
  • Es gibt immer Ausnahmen von der Regel:

    • 0 zum Beispiel hat nur ein Single root (0).
    • Sie können nicht die Quadratwurzel von a nehmen negative Zahl (es sei denn, die Sprache, komplexe Zahlen unterstützt). Dies könnte als Ausnahme behandelt werden (wie „Division durch 0“) in Sprachen, die nicht imaginäre Zahlen oder das komplexe Zahlensystem unterstützen.
  • Es ist in der Regel einfach zu deduce die 2 Quadratwurzeln (einfach den Wert von der Funktion zurück negieren). Dies wurde wahrscheinlich als Übung durch den Aufrufer der Funktion sqrt (), wenn ihre Domäne hing davon ab, die sich sowohl mit der positiven (+) und negativen (-). Wurzeln

Es ist einfacher, eine Nummer zurück, als zwei zurückzukehren. Die meisten technischen Entscheidungen werden auf diese Weise hergestellt.

Es gibt viele Funktionen, die nur 1 Antwort von 2 oder mehr Möglichkeiten zurück. Arcustangens zum Beispiel. Der Arkustangens von 1 wird als 45 Grad zurück, aber es könnte auch 225 oder sogar 405. Wie bei vielen Dingen im Leben und Programmierung sein gibt es eine Konvention wir kennen und sich verlassen können. Quadratwurzel-Funktionen geben positive Werte ist einer von ihnen. Es liegt an uns, die Programmierer, im Auge zu behalten gibt es andere Lösungen und auf sich zu handeln, wenn im Code benötigt.

übrigens ist dies ein weit verbreitetes Problem in der Robotik, wenn sie mit Kinematik und inversen Kinematik Gleichungen zu tun, wo es mehrere Lösungen von Links Positionen zu cartesianischen Positionen entsprechen.

In der Mathematik durch Konvention ist immer davon ausgegangen, dass Sie die positive Quadratwurzel von etwas wollen, wenn Sie nicht ausdrücklich etwas anderes sagen. Die Quadratwurzel von vier ist wirklich zwei. Wenn Sie die negative Antwort wollen, setzen Sie ein negatives Vorzeichen vor. Wenn Sie beide wollen, setzen Sie das Plus-oder-Minus-Zeichen. Ohne diese Konvention wäre es unmöglich, Gleichungen zu schreiben; Sie würden nie wissen, was die Person bestimmt, auch wenn sie ein Zeichen vor gelegt hat (weil es das Negativ der negativen Quadratwurzel sein könnte, zum Beispiel). Auch, wie genau würden Sie jede Art von Computer-Code schreiben Mathematik beteiligt, wenn Betreiber Rückkehr zwei Werte gestartet? Es wäre alles brechen.

Die unglückliche Ausnahme von dieser Konvention ist, wenn für die Variablen zu lösen. In der folgenden Gleichung:

x ^ 2 = 4

Sie haben keine andere Wahl, als die beiden möglichen Werte für X zu prüfen, ob Sie die Quadratwurzel von beiden Seiten nehmen, erhalten Sie x = 2, aber jetzt müssen Sie in den Plus- oder Minuszeichen setzen, um sicherzustellen, dass Sie nicht fehlen alle möglichen Lösungen. Denken Sie auch daran, dass in diesem Fall ist es technisch X, die entweder plus oder minus sein, nicht die Quadratwurzel von vier Jahren.

Da mehrere Rückgabetypen ärgerlich zu implementieren sind. Wenn Sie wirklich das andere Ergebnis brauchen, ist nicht einfach genug, um es einfach mehrere Ergebnis von -1?

Da die meisten Programmierer nur wollen eine Antwort.

Es ist einfach genug, um den negativen Wert von dem positiven Wert zu erzeugen, wenn die Anrufer es will. Für die meisten Codes verwendet der Anrufer nur den positiven Wert.


Aber heute ist es einfach, zwei Werte in vielen Sprachen zurückzukehren. In JavaScript:

var sqrts=function(x) {
  var s=Math.sqrt(x);
  if (s>0) {
    return [s,-s];
  } else {
    return [0];
  }
}

Solange der Anrufer weiß, durch das Array zu durchlaufen, die zurückkommt, du bist Gold.

>sqrts(2)
[1.4142135623730951, -1.4142135623730951]

Ich denke, weil die Funktion aufgerufen wird „sqrt“, und wenn Sie mehrere Wurzeln wollten, würden Sie die Funktion „sqrts“ nennen müssen, die es nicht gibt, so dass Sie es nicht tun können.

Die ernstere Antwort ist, dass Sie eine bestimmte Instanz eines größeren Problems sind hindeutet. Viele Gleichungen und häufig Umkehrfunktionen (einschließlich sqrt) haben mehrere mögliche Lösungen, wie arcsin, etc, und diese sind in der Regel ein Problem. Mit arcsin, zum Beispiel, sollte man eine unendliche Anzahl von Antworten zurückgeben? Siehe zum Beispiel die Diskussionen über Verzweigungsschnitte .

Weil es historisch definiert wurde {{Bearbeiten}} als die Funktion, die die Seitenlänge eines Quadrats der bekannten Oberfläche. Und Länge ist positiv in diesem Zusammenhang.

Sie können immer sagen, was die andere Zahl ist, so vielleicht notwendig, es ist nicht beide von ihnen zurückzukehren.

Es ist wahrscheinlich, weil, wenn die Leute einen Rechner verwenden, um eine Quadratwurzel, um herauszufinden, nur sie den positiven Wert will.

Gehen Sie einen Schritt weiter und fragen, warum Ihr Rechner finden Sie die Quadratwurzel aus einer negativen Zahl nicht nehmen lassen. Es ist möglich, imaginäre Zahlen verwenden, aber der durchschnittliche Benutzer hat absolut null Verwendung dafür.

Auf imaginäre Zahlen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top