Forum:  Maple
Thema: Fehler: final value in for loop must be numeric or character
Themen-Übersicht
Eric_H
Aktiv
Dabei seit: 02.04.2020
Mitteilungen: 59
Themenstart: 2020-10-22 15:46

Hallo Zusammen,

ich habe die Aufgabe mit Maple die Anzahl der Primzahlzwillinge (p,p+2) bis p+2 <= x auszugeben.

Meine Lösung dafür sieht wie folgt aus.
Maple
primetwinsto :=proc(r)
	local i,anzahl;
	anzahl := 0;
	for i from 1 to r do
			if isprime(i-2) and isprime(i) then
				anzahl:= anzahl + 1;
			end if;
	end do;
		return(anzahl);
end proc:
 
 

Nun Soll das Ergebnis dieser Prozedur zwischen 1 und 1000 geplottet werden.

Dafür verwende ich folgendes Kommando:
plot(primetwinsto(x), x = 1 .. 1000)

Danach erhalte ich die Fehlermeldung:
Error, (in primetwinsto) final value in for loop must be numeric or character

Hat jemand eine Idee was ich falsch mache?

Vielen Dank!

Gruß Eric






ThomasRichard
Senior
Dabei seit: 08.04.2010
Mitteilungen: 420
Herkunft: Aachen
Beitrag No.1, eingetragen 2020-10-22 16:00

Hallo Eric,

das ist ein häufiger Anfänger-Fehler: der plot-Aufruf übergibt ein symbolisches x an die Prozedur, womit die Schleife nicht ausgeführt werden kann - weil eben keine Obergrenze bekannt ist. Genau das besagt die Meldung.

Abhilfe: die Auswertung des Arguments primetwinsto(x) verzögern durch sog. "unevaluation quotes":
Maple
plot('primetwinsto(x)', x = 1 .. 1000)

oder (m.E. weniger elegant): nur den Prozedurnamen und den Bereich übergeben, also ohne den Variablennamen:
Maple
plot(primetwinsto, 1 .. 1000)

Siehe auch unsere FAQs.


Eric_H
Aktiv
Dabei seit: 02.04.2020
Mitteilungen: 59
Beitrag No.2, vom Themenstarter, eingetragen 2020-10-22 16:16

Vielen Dank für die Info!

Gruß Eric




Dieses Forumbeitrag kommt von Matroids Matheplanet
https://https://matheplanet.de

Die URL für dieses Forum-Thema ist:
https://https://matheplanet.de/default3.html?topic=249945=41002
Druckdatum: 2021-01-27 21:16