Schreiben Sie ein Programm, das die Polynominterpolation unter Verwendung von rationalen Zahlen mit willkürlicher Genauigkeit durchführt. Die Eingabe sieht folgendermaßen aus:
f (1) = 2/3 f (2) = 4/5 f (3) = 6/7 ...
Sie können davon ausgehen, dass vor und nach dem =
Vorzeichen genau ein Leerzeichen steht. Alle Zahlen sind entweder Brüche oder ganze Zahlen. Sie können auch davon ausgehen, dass alle Brüche in der Eingabe bereits irreduzibel sind.
Es ist keine Fehlerprüfung erforderlich. Sie können davon ausgehen, dass die Eingabe gültig ist und in f (x) kein x verdoppelt wird.
Die Ausgabe sollte in einer LaTeX-kompatiblen Form vorliegen. Der ausgegebene LaTeX-Code sollte dieselbe grafische Darstellung wie die hier angegebene Ausgabe ergeben.
f (x) = 123x ^ 2 + \ frac {45} {2} x + \ frac {7} {4}
Der Anteil muss so weit wie möglich reduziert werden, z. sowas \frac{2}{4}
ist nicht erlaubt. Wenn die Zahl eine Ganzzahl ist, verwenden Sie keinen Bruch.
Sonderregeln:
Ihr Programm sollte ...
- Arbeit für Polynome bis Grad 12
- In weniger als 1 Minute erledigt, um eine sinnvolle Eingabe zu erhalten
- Verwenden Sie keine Funktionen, die die gesamte Berechnung für Sie durchführen
- Geben Sie das Polynom mit dem kleinstmöglichen Grad aus
Testfälle:
Die angegebenen Testfälle dienen nur zur Verdeutlichung. Ihr Programm sollte für alle korrekten Eingaben ein korrektes Ergebnis liefern.
Eingang
f (1) = 2/3 f (2) = 4/5 f (3) = 6/7
Ausgabe
f (x) = - \ frac {4} {105} x ^ 2 + \ frac {26} {105} x + \ frac {16} {35}
Eingang
f (-12) = 13/2 f (5/3) = 3/5 f (13) = -6 f (1/5) = -3/4
Ausgabe
f (x) = - \ frac {2186133} {239455744} x ^ 3 + \ frac {2741731} {149659840} x ^ 2 + \ frac {26720517} {29201920} x - \ frac {279464297} {299319680}
Eingang
f (4/3) = 617/81 f (2) = 20/3 f (-8/3) = 6749/81 f (-5) = 7367/12 f (0) = 23/3
Ausgabe
f (x) = \ frac {1} {2} x ^ 4 - 2x ^ 3 + \ frac {7} {4} x ^ 2 + \ frac {23} {3}
Eingang
f (0) = 5 f (1) = 7 f (2) = 9 f (3) = 11 f (4) = 13
Ausgabe
f (x) = 2x + 5
Eingang
f (1/2) = -1/2 f (-25) = -1/2 f (-54/12) = -1/2
Ausgabe
f (x) = - \ frac {1} {2}
...
) wirklich Teil der Eingabe?-\frac{37745}{14592}x^4 - \frac{853249}{43776}x^3 + \frac{57809}{7296}x^2 + \frac{225205}{2736}x + \frac{23}{3}
. Ich vermute, die Eingabe sollte etwas anderes sein :)Antworten:
J + sh
J-Skript:
sh script:
Führen Sie das sh-Skript aus:
.
quelle
Perl (569 Zeichen)
Ausführliche Erklärung:
Bemerkungen
Bearbeitungen
(630 → 585) Es wurde mir klar, dass ich die Staffelform in einer Schleife anstatt in zwei machen kann. Fügen Sie eine Erklärung als Kommentar in den Code ein.
(585 → 583) Ich habe gerade die Paketsyntax entdeckt, mit der ich sie
'
anstelle von verwenden kann::
.(583 → 573) Noch etwas Mikrogolf
(573 → 569) Kürzere reguläre Ausdrücke zum Analysieren von Eingaben
quelle
TI-Basic (83/84): 109 Zeichen
Technisch gesehen zählt TI-Basic 109 Zeichen als dim (, For (, ->, rref (, [A] und listet als "ein Zeichen".
Die Eingabe wird in (x, y) Paaren in L1 und L2 formatiert [ex L1 = (1,2,3,4), L2 = (2,3,5,7)].
quelle
Lagrange-Methode, Python, 199 Bytes
Ein bisschen spät, aber ...
quelle
Nur eine verkürzte Version von Fred Freys Code. Beachten Sie, dass man wahrscheinlich die Übergabe von D nach l überspringen könnte, da es nur aus dem äußeren Bereich gezogen werden kann. Da Sie hier wahrscheinlich dasselbe mit mir machen können, könnten wir sogar einen Lambda abschneiden. Ich werde es eines Tages testen.
quelle