====== HP 35s ====== {{:schule:hp35s.jpg?200|}} Der [[wpde>HP 35s]] ist ein [[Taschenrechner]] von Hewlett Packard. Wie auch sein Vorgänger HP35, setzt der Rechner auf die [[wpde>Umgekehrte Polnische Notation]] für die Eingabe. Ferner ist er über eigene Programme erweiterbar. ===== Programme ===== ==== IHK-Notenschlüssel ==== Ein kleines Programm zur Berechnung eines Notenschlüssels gemäß des IHK-Schlüssels. I001 LBL I I002 STO P Wert im aktuellen Register in P speichern I003 Px[0.92,0.81,0.67] Nötige Punkte berechnen und I004 Px[0.50,0.30,0.00] in zwei Vektoren abspeichern I005 RTN Der Aufruf erfolgt wie folgt: - Punktzahl eingeben - XEQ I ENTER Dann werden die Punkte angezeigt. ==== pq-Formel ==== Zunächst werden die Werte für p und q auf dem Stack gespeichert. Anschließend kann das folgende Programm ausgeführt werden, das die reellen Nullstellen berechnet. P001 LBL P P002 STO Q P003 x<>y P004 STO P P005 -P÷2+SQRT((P÷2)^2-Q) P006 -P÷2-SQRT((P÷2)^2-Q) P007 RTN Das Programm funktioniert schon gut für reelle Lösungen. Wir können das Programm leicht abwandeln und erhalten so auch die komplexen Lösungen. Um die Zahlen in komplexe Zahlen zu wandeln, wird 0+0i addiert. Das verändert den Wert der Zahl nicht, wandelt sie jedoch in eine komplexe Zahl. Wurzelziehen mit SQRT funktioniert beim HP 35s leider nicht mit komplexen Zahlen. Daher müssen wir mit 0.5 potenzieren. LBL P 0i0 + STO Q x<>y 0i0 + STO P -P÷2+((P÷2)^2-Q)^0.5 -P÷2-((P÷2)^2-Q)^0.5 RTN ==== Nullstellen kubischer Gleichungen - Version 1 === Die Nullstellen einer Funktion der Form f(x) = ax³ + bx² +cx +d lassen sich mit Hilfe des [[wpde>Weierstraß-(Durand-Kerner)-Verfahren]] berechnen. Leider verwendet das Verfahren komplexe Zahlen und ist daher etwas langsam auf dem HP35s. Nach Beendigung des Algorithmus stehen die Ergebnisse in den Registern X, Y und Z. K001 LBL K K002 INPUT A K003 INPUT B K004 INPUT C K005 INPUT D K006 1 Die Startwerte für P, Q und R werden K007 STO P mit beliebigen Werten initialisiert. K008 0.4i0.9 K009 STO Q K010 -0.65i0.72 K011 STO R K012 0.006 Die Variable Z dient als Schleifenvariable K013 STO Z und wird von 0 bis 6 gezählt. K014 P-(AxP^3+BxP^2+CxP+D)÷(P-Q)÷(P-R) K015 STO P K016 Q-(AxQ^3+BxQ^2+CxQ+D)÷(Q-P)÷(Q-R) K017 STO Q K018 R-(AxR^3+BxR^2+CxR+D)÷(R-P)÷(R-Q) K019 STO R K020 ISG Z K021 GTO K014 K022 RTN ==== Nullstellen kubischer Gleichungen - Version 2 === Mit Hilfe des [[wpde>Horner-Schema]]s, der Solve-Funktion und der pq-Formel lässt sich auch eine kubische Gleichung der Form f(x) = ax³+bx²+cx+d lösen. Damit in einem Programm auf die zu lösende Funktion zugegriffen werden kann, legen wir sie in Programm F ab. F001 LBL F F002 INPUT X F003 INPUT A F004 INPUT B F005 INPUT C F006 INPUT D F007 AxX^3+Bx^2+CxX+D F008 RTN Nun wird mit dem Programm C eine Nullstelle mittels SOLVE bestimmt und das Restpolynom mit dem Hornerschema ermittelt. C001 LBL C C002 FN= F C003 1 Festlegen einer Anfangsschätzung C004 STO X C005 SOLVE X C006 VIEW X Das erste Ergebnis wird angezeigt C007 STO X C008 XxA Bestimmung des Restpolynoms mit C009 STO+ B dem Horner-Schema C010 XxB C011 STO+ C C012 B÷A Normalform für pq-Formel herstellen. C013 C÷A C014 XEQ P001 C015 RTN ==== Komplexe Wurzeln ==== Die komplexe Wurzel lässt sich mit dem folgenden kleinen Programm berechnen. Durch die Verwendung von LASTx wird der Stack nicht verändert. CLx löscht den Inhalt des X-Registers auf dem Stack. K001 LBL K K002 1/x K003 CLx K004 LASTx^0.5i0 K005 RTN ==== Hallo Welt ==== Der Taschenrechner kann beliebigen Text anzeigen. Dies geschieht über das Flag 10. Ist es gesetzt, werden Gleichungen nur angezeigt, aber nicht ausgewertet. Das können wir für ein einfaches "Hallo-Welt"-Programm nutzen. A001 LBL A A002 SF 10 Setzt Flag 10 A003 HALLO Eingabe mit der EQN-Taste A004 PSE Nach einer Sekunde wird das Programm fortgesetzt A005 WELT A006 PSE A007 CF 10 Löscht Flag 10 A008 RTN ==== Animationen ==== {{:schule:hp35sanimation.gif|}} Mit etwas Fingerspitzengefühl lassen sich dem HP35s einfache Animationen entlocken. Dafür nutzt man die Möglichkeit, beliebige Zeichenketten anzuzeigen. Den Quelltext und auch das laufende Programm könnt ihr im Video sehen. ==== Berechnung einer Wurzel ==== Der Taschenrechner hat natürlich eine Taste zum Berechnen der Wurzel. Aber wir wollen mal schauen, ob wir die Wurzel nicht auch selbst programmieren können. Dazu gibt es einen einfachen Algorithmus, der mit einer Schätzung g (=guess) beginnt und diese immer weiter verfeinert. Für die Wurzel aus der Zahl x funktioniert der Algorithmus wie folgt. g = w + 1 while abs(w - g*g) > 0.00001: g = (g + w/g) / 2 print(g) Mit 0.00001 geben wir die Genauigkeit an, die wir von unserer Schätzung erwarten. Für den HP 35s sieht das Programm folgendermaßen aus. W001 LBL W W002 STO W W003 W+1 W004 STO W W005 (G+W÷G)÷2 W006 STO G W007 0.00001 W008 ABS(G^2-W) W009 x>y? W010 GTO W005 W011 RCL G W012 RTN ===== Links ===== * [[blog>bakera-packt-aus-einen-hp35s|Bakera packt aus: einen HP35s]] - Der HP35s - die Neuauflage eines Klassikers.