PasteRack.org
Paste # 39975
2023-11-12 11:56:58

Fork as a new paste.

Paste viewed 262 times.


Embed:

  1. #lang racket
  2.  
  3. ;; [hier ergaenzen und weitere Beispiele erzeugen]
  4. ;; (pqformel 0 0 5) sollte einen Fehler  "pqformel: "keine Loesung - gebe eine richtige Gleichung ein" ergeben
  5. ;; (pqformel ... ... ...) sollte einen Fehler  "pqformel: jedes X" ergeben
  6. ;; (pqformel ... ... ...) sollte einen Fehler  "pqformel: keine reelle Loesung" ergeben
  7. ;; (pqformel ... ... ...) sollte ... ergeben
  8.  
  9.  
  10. ;; Definition
  11. (define (pqformel a b c)
  12. ;;  (D a b c) wird zur Berechnung der Diskriminante verwendet
  13. ;; quadratische und lineare Gleichungen werden unterschiedlich geloest
  14.   (cond
  15.     [ (= a 0)   ;; Ausnahme: lineare Gleichung, die mit 3 Moeglichkeiten endet
  16.               (cond
  17.                 [ (and (= b 0) (= c 0)) (error 'pqformel "jedes X") ]
  18.                 [ (= b 0) (error 'pqformel "keine Loesung - gebe eine richtige Gleichung ein") ]  ;; falsche Gleichung ]
  19.                 [ else (solve-linear-equation b c) ]  ;; einfache lineare Loesung - einzige Nullstelle ]
  20.                 )
  21.     ]
  22.   ;; a ist nicht Null -> loesen eine quadratische Gleichung
  23.     [ (> (D a b c) 0) (find-roots a b (D a b c)) ]  ;; zwei Nullstellen
  24.     [ (< (D a b c) 0 ) (error 'pqformel "keine reelle Loesung") ]
  25.     [ else (find-1-root a b) ]  ;; eine einzige Nullstelle, d.h. der  Scheitelpunkt der Parabel liegt  and der x-Achse
  26.     )
  27.   )

=>