Uebungen  Exercices

13. Fallstricke und "Debugging" (Fehler eliminieren)
 Embûches et "Debugging" (éliminer les erreurs)

Die Gliederung dieses Kurses folgt in groben Zügen dem Buch von Nancy Blachman: A Practical Approach.... Hinweis: Kapitel 13 lesen!
 L'articulation de ce cours correspond à peu près à celle du livre de Nancy Blachman: A Practical Approach.... 
Indication: Lire le chapitre 13.

Run mit WIN+Mathematica Version 5.2
 Testé avec Mathematica version 5.2+WIN

WIR94/98/99/2000/2007 // Copyright Rolf Wirz

"Putzmaschine" einsetzen (hier sehr wichtig)
 Employer la "machine de nettoyage"
   (très important dans ce cas)

x = 1

Clear[]; x

(* Old Form: Remove["Global`@*"] *)

Remove["Global`*"]

Versuche, in den folgenden Beispielen die Fehler zu finden!
 Essaie de trouver les erreurs dans les exemples suivants!

Aufgabe 1    Problème 1

3 Plus 4

(Ueberlege, wie "Plus" wirkt.)
  (Réfléchis aux effets de "Plus")

Plus[3, 4]

Aufgabe 2    Problème 2

mean[x_] := Add[x]/Length[x];
mean[{1,2,3}]

Schreibe den Code richtig!
  Ecris le Code correctement!

?Plus

Remove[mean];
mean[{x__}] := Plus[x]/Length[{x}];
mean[{1,2,3}]

Aufgabe 3    Problème 3

Wieso kommen keine Primzahlen?
  Pourquoi il n'apparaît pas de nombre premier?

Select[{2, 3, 7, 9, 11, 12}, PrimeQ[x_]]

Schreibe den Code richtig!
  Ecris le code correctement!

?Select

Trace[Select[{2, 3, 7, 9, 11, 12}, PrimeQ[x_]]]

Select[{2, 3, 7, 9, 11, 12}, PrimeQ]

Aufgabe 4    Problème 4

Berechne das Integral!
  Calcule l'intégral!

Integral[xCos(x), (x, 0, pi)]

Schreibe den Code richtig!
  Ecris le code correctement!

Integrate[x Cos[x], {x, 0, Pi}]

Aufgabe 5    Problème 5

Mit der folgenden Funktion sollen 6  Lottozahlen ausgewählt werden. Wieso kommt nur eine?
  Avec la fonction suivante on choisit 6 nombres de loto. Pourquoi il n'en vient qu'un?

machLotto:=
	Block[{
		n = 1
		  },
		  While[n <= 6;
		  	Print[
		  		Random[Integer, {0, 49}]
		  	];
		  	n++
		  ]
	];
machLotto

Schreibe den Code richtig!
  Ecris le code correctement!

machLotto:=
	Block[{
		n = 1
		  },
		  While[n <= 6,
		  	Print[
		  		Random[Integer, {0, 49}]
		  	];
		  	n++
		  ]
	];
machLotto

Aufgabe 6    Problème 6

Studiere die folgenden Funktionen:
  Etudie les fonctions suivantes:

Remove[aoi, eip];
aoi[f_[x_], min_, max_] := NIntegrate[f[x], 
                               {x, min, max}];
eip[x_                ] := x^2 + 5 Exp[x];
aoi[eip[t], 5, 10]

Wieso kommt nicht ein numerischer Wert? Hier einige Studien und Lösungsmöglichkeiten:
  Pourquoi il n'apparaît pas une valeur numérique? Voici quelques études et quelques possibilités de solution:

?aoi

?On

On[aoi, eip]

aoi[eip[t], 5, 10]

Remove[aoi, eip];
On[aoi, eip];
aoi[f_[x_], y_, min_, max_] := NIntegrate[f[x], 
                            	{y, min, max}];
eip[z_                ] := z^2 + 5 Exp[z];
aoi[eip[t], 5, 10]

Remove[aoi, eip];
On[aoi, eip];
aoi[f_, y_, min_, max_] := NIntegrate[f, 
								{y, min, max}];
eip := x^2 + 5 Exp[x];
aoi[eip, t, 5, 10]

aoi[eip, x, 5, 10]

Remove[aoi, eip];
On[aoi, eip];
aoi[f_, x_, min_, max_] := NIntegrate[f,
								{x, min, max}];
eip[y_                ] := y^2 + 5 Exp[y];
aoi[eip[t], t, 5, 10]

Aufgabe 7    Problème 7

Schreibe die folgende Funktion kürzer und besser:
  Ecris la fonction suivante d'une daçon plus courte et meilleure:

Remove[f];
f[g_, x_List]:=
	Block[{
		l = {},
		n = 1
	},
	Do[
		l = Join[l, {g[x[[i]]]}],
		{i, Length[x]}
	];
	l
];
f[g, {a, b, c}]

Einfacher:    Plus simplement:

Clear[f];
f[g_, x_List] := Map[g, x];
f[g, {a, b, c}]

"Putzmaschine" einsetzen
 Employer la "machine de nettoyage"

(* Old Form: Remove["Global`@*"] *)

Remove["Global`*"]