Vorbemerkung: Die folgenden Ausführungen beziehen sich auf die letzte Version von Derive, Derive 6.10. Leider wird dieses Programm nicht mehr vertrieben. Da es aber an den Schulen weiterhin verwendet wird, sollen die Technologieaufgaben auch mit Hilfe dieses Programms behandelt werden.
Aufgabe 18:
Überprüfe mit einem geeigneten Rechenwerkzeug (z.B. CAS), ob die ersten 7 Zahlen der Bauform 7,37,337,3337,… Primzahlen liefert.
Ausführung:
PRIME?(m) liefert 'true', wenn m eine Primzahl ist, 'false', wenn m keine Primzahl ist, andernfalls wird nicht vereinfacht.
PRIME?(7)=true
PRIME?(37)=true
PRIME?(337)=true
PRIME?(3337)=false
PRIME?(33337)=false
PRIME?(333337)=true
PRIME?(3333337)=false
Aufgabe 23: Schreibe mit deinem CAS eine Funktion, die dir die Primzahlen in einem Intervall deiner Wahl liefern kann.
Ausführung:
Mit Hilfe des Befehls SELECT(bedingung(m),m,untergrenze,obergrenze) kann man alle Zahlen m finden für die eine Bedingung zutrifft.
SELECT(PRIME?(m),n,1,100)
[2,3,5,7,11,13,17,19,23,29,31,41,43,47,53,59,61,67,71,73,79,83,89,97]
Der Befehl DIM(liste) liefert die Anzahl der Elemente, die in der Liste vorhanden sind. Eine Liste muss in Derive immer mit eckigen Klammern angegeben werden.
DIM(SELECT(PRIME?(m),n,1,100))=25
Aufgabe 25: Untersuche die Dichte der Primzahlen (Verhältnis der Anzahl der Primzahlen zu allen natürlichen Zahlen im betrachteten Bereich)
a) < 100 b) <1000 c) < 10000
Suche dazu eine geeignete Liste von Primzahlen im Internet.
Ausführung:
a) Mit der Eingabe DIM(SELECT(PRIME?(n),n,1,100)) erhältst du die Anzahl der Primzahlen die kleiner oder gleich als 100 sind. Du erhältst 25, die Primzahldichte bis 100 ist daher 1/4.
Du kannst dir auch eine kleine Funktion dazu basteln:
Primzahldichte(n) ≔ DIM(SELECT(PRIME?(m), m, 1, n))/n
Primzahldichte(100) = 1/4
Primzahldichte(1000) = 21/125
Primzahldichte(10000) = 1229/10000
b) 168/1000= 0.168
c) 1229/10000 = 0.1229
Aufgabe 27: Überprüfe für die Zahlen n = 1 bis n = 11, ob der Term 2n-1 eine Primzahl liefert.
Ausführung:
Mit PRIME?(2^n-1) lässt sich rasch überprüfen ob für n eine Mersenne'sche Primzahl vorliegt.
Z.B. PRIME?(2^13)=true
Wenn du einen Bereich von Zahlen untersuchen willst, eignet sich der Befehl SELECT, der dir jene Zahlen selektiert, für die die angegebene Bedingung zutrifft.
SELECT(Bedinung, Laufvariable, Untergrenze, Obergrenze)
n
SELECT(PRIME?(2 - 1), n, 1, 11) = [2, 3, 5, 7]
D.h. für n = 2,3,5 und 7 ist eine (Mersenne'sche) Primzahl. Mit dem Befehl VECTOR lassen sich rasch für die gefundene Liste die tatsächlichen (Mersenne'schen) Primzahlen für das jeweilige n berechnen.
n
VECTOR(2 - 1, n, [2, 3, 5, 7]) = [3, 7, 31, 127]
Aufgabe 28: Sucht im Internet nach der derzeit größten bekannten Primzahl!
Ausführung:
Aufgabe 37: Entwickle mit dem CAS eine Funktion, die nur mittels Addition das Produkt von a und b ermittelt
Ausführung:
Versuchen wir das auf Seite 10 angegebene Iterationsdiagramm in Derive umzusetzen. Dazu muss man mit dem Schreiben von kleinen Programmen etwas vertraut sein. (Handbuch oder Hilfe-Funktion helfen hier ein wenig weiter, siehe auch Hinweis unten.)
ProduktAdd(a, b) ≔
Prog
p ≔ 0 // anfangs ist das Produkt p = 0
z ≔ 0 // z soll zählen, wie oft wir die Zahl b zu a addieren
Loop
If z = b // wenn wir b mal die Zahl a addiert haben, beenden wir
exit
p ≔ p + a
z ≔ z + 1 // bei jedem Durchlauf der Schleife erhöhen wir den Zähler
RETURN p // p enthält nun das Produkt a*b
Hinweise zur Eingabe in Derive:
(1) Derive lässt sich mit Options→Display→Multi-line Expression Entry umstellen, was bei der Eingabe von Programmen von Vorteil sein kann.
(2) Beachte, dass das Program in der Form
ProduktAdd(a, b) ≔ PROG(p ≔ 0,z ≔ 0,LOOP(IF(z = b,exit,p ≔ p + a),z ≔ z + 1),RETURN p)
einzugeben ist. Derive arbeitet rein funktional, d.h. dass auch der Programmkörper Prog()
und Schleifen Loop()
Funktionen sind und daher mit Klammern auftreten.
Aufgabe 38: Entwickle mit dem CAS eine Funktion, die nur mittels Subtraktion den Quotienten und den Rest bei der ganzzahligen Division von a und b ermittelt.
Ausführung:
Versuchen wir das auf Seite 10 angegebene Iterationsdiagramm in Derive umzusetzen. Dazu muss man mit dem Schreiben von kleinen Programmen etwas vertraut sein. (Handbuch oder Hilfe-Funktion helfen hier ein wenig weiter, siehe auch Hinweis unten.)
GanzzahlDiv(a, b) ≔
Prog
q ≔ 0 // anfangs ist der Quotient = 0
r ≔ a // der Rest wird zuerst auf a gesetzt
Loop
If r < b // wir subtrahieren sooft b von r, bis der Rest r kleiner als b ist
exit
r ≔ r - b
q ≔ q + 1 // bei jeder Subtraktion erhöht sich der Quotient um 1
RETURN [q, r] // schlussendlich geben wir den Quotienten q und der Rest r aus
Hinweise zur Eingabe in Derive:
(1) Derive lässt sich mit Options→Display→Multi-line Expression Entry umstellen, was bei der Eingabe von Programmen von Vorteil sein kann.
(2) Beachte, dass das Program in der Form
GanzzahlDiv(a, b) ≔ PROG(q ≔ 0,r ≔ a,LOOP(IF(r < b,exit,r ≔ r - b),q ≔ q + 1),RETURN [q, r])
einzugeben ist. Derive arbeitet rein funktional, d.h. dass auch der Programmkörper Prog()
und Schleifen Loop()
Funktionen sind und daher mit Klammern auftreten.
Aufgabe 58: Ermittle mit einem CAS die Teilermenge einer beliebigen natürlichen Zahl n.
Ausführung:
Verwende dazu einfach den Befehl DIVISORS(n)
.
DIVISORS(28) = [1, 2, 4, 7, 14, 28]
Aufgabe 80: Wie lässt sich mit dem CAS der ggT bzw. das kgV ermitteln?
Ausführung:
GCD(m1, m2, …, mn)
liefert den größten gemeinsamen Teiler der Zahlen m1, m2,…, mn
.
GCD … Greatest common divisor
Z.B. wird GCD(700, 917)
zu 7 vereinfacht.
LCM(m1, m2, …, mn)
liefert das kleinste gemeinsame Vielfache der Zahlen m1, m2,…, mn
.
LCM … lowest common multiplier
Z.B. wird LCM(700, 917)
zu 91700 vereinfacht.
Aufgabe 187: Wie lassen sich auf deinem Taschenrechner am einfachsten Zahlen von Dezimalsystem
(DEC) ins Dualsystem (BIN) oder ins Hexadezimalsystem (HEX) umwandeln? Wie erfolgt die Rückumwandlung ins Dezimalsystem?
Ausführung:
Dezimalsystem → Dualsystem: Stelle dazu bei Options→Mode-Settings
beim Registerblatt Output
Radix auf Binary
. Beim Registerblatt Input
bleibt Radix auf Dezimal
.
Dezimalsystem → Hexadezimalsystem: Stelle dazu bei Options→Mode-Settings
beim Registerblatt Output
Radix auf Hexadecimal
.
Dualsystem → Dezimalsystem: Stelle dazu bei Options→Mode-Settings
beim Registerblatt Input
Radix auf Binary
. Beim Registerblatt Output
bleibt Radix auf Dezimal
.
Hexadezimalsystem → Dezimalsystem: Stelle dazu bei Options→Mode-Settings
beim Registerblatt Input
Radix auf Hexadecimal
. Beim Registerblatt Output
bleibt Radix auf Dezimal
.