Kurs  Cours

2. Numerische Probleme
 Problèmes numériques

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

Sollte mit Version 4.0, WIN etc. laufen 
 Devrait fonctionner avec version 4.0, WIN etc.

WIR94/98/99 // Copyright Rolf Wirz

Mathematica kennt ganze Zahlen (Integers), Fliesskommazahlen (mit Dezimalpunkt), rationale Zahlen, komplexe Zahlen sowie Zahlen, die durch Symbole gegeben sind (z.B. Pi).
  Mathematica connaît les nombres entiers (integers), les nombres avec virgule flottante (avec point décimal), les nombres rationaux, les nombres complexes ainsi que les nombres représentés par des symboles (p.ex. Pi).

2.1. Arithmetische Operationen
     Opérations arithmétiques

Probiere aus:    Essaie:

53 + 78

Multiplikation:    Multiplication:

127*9721

127 9721

Potenzieren:    Calculer les puissances:

34^56

%^(1/56)

2.2. Rationale Zahlen
     Nombres rationaux

Mathematica rechnet exakt, wenn nicht anders verlangt!
  Mathematica calcule exactement, sauf si on le veut autrement!

Probiere aus:    Essaie:

2/4 + 24/144

2 + 2/5

2.3. Irrationale Zahlen
     Nombres irrationaux

Mathematica rechnet exakt
  Mathematica calcule exactement

Beispiel: Quadratwurzel    Exemple:  racine carrée

Sqrt[17]

Sqrt[17.0]

Sqrt[17]

Sqrt[17]//N

2.4. Annäherung durch Dezimalbrüche
     Approche par fractions décimales

Falls irgendwo in einem Ausdruck ein Dezimalpunkt vorkommt, gilt der ganze Ausdruck als Fliesskommazahl.
  S'il y a quelque part dans une expression un point décimal, toute l'expression a la valeur d'un nombre à virgule flottante.

Probiere aus:    Essaie:

1/2 + 2.4/144

.5/7 + Pi

.5/7 + Pi // N

2.5. Komplexe Zahlen
     Nombres complexes

"I" bedeutet die imaginäre Einheit. "Re" erzeugt den Realanteil, "Im" den Imaginäranteil, "Abs" den absoluten Betrag, "Conjugate" das konjugiert Komplexe, "Round" rundet. Schaue, was Mathematica tut und überlege wieso das Resultat so aussieht:
  "I" signifie l'unité imaginaire. "Re" crée la partie réelle, "Im" la partie imaginaire, "Abs" la valeur absolue, "Conjugate" le complexe conjugé, "Round" arrondit. Observe ce que Mathematica fait et réfléchis pourquoi le résultat est ainsi:

(2 + 4I)/(5 + 2I)

Re[3 + 4I]

Im[3 + 4I]

Conjugate[3 + 4I]

Abs[3 + 4I]

Round[2.7 - 8.6 I]

Cos[3 + 4I] // N

Sin[3 + 4I]

Exp[3 + 4I] // N

Log[3 + 4I]

2.6. Symbole und Zahlen, Listen etc.
     Symboles et nombres, listes etc.

Für Mathematica ist ein Buchstabe oder eine Buchstabenfolge ein Symbol, z.B. eine Variable. Variablen können auch mit "$" beginnen. "7a" jedoch bedeutet "7 mal a". Probiere aus:
  Pour Mathematica une lettre ou une suite de lettres sont un symbole, p.ex. une variable. Les variables peuvent aussi commencer par "$". "7a" par contre signifie "7 fois a". Essaie:

7a

a = 5

7a

In "Miscellaneus/Units.nb" sind Einheiten und Funktionen zur Einheitenverwandlung gespeichert:
  Dans "Miscellaneos/Units.nb" sont mémorisées les unités et les fonctions pour transformer les unités:

Needs["Miscellaneous`Units`"]

120 Pound

Convert[120 Pound, Kilogram]

Wichtige transzendente Zahlen sind als Symbole gespeichert.
Probiere aus:
  Les nombres transcendants importants sont mémorisés comme symboles.
Essaie:

E

N[E]

I

I^2

Degree

N[Sin[Pi/4]]

N[Sin[45 Degree]]

Mathematica kann weiter mit Listen (Vektoren, Matrizen, Tabellen etc rechnen). Der Themenkreis wird später behandelt.
  Mathematica sait aussi calculer avec des listes (vecteurs, matrices tableaux etc.) Cet ensemble de thèmes sera traité plus tard.

??List

2.7. Approximationen
     Approximations

Rationale Zahlen sind exakt gespeichert. "N" bedeutet approximieren. Probiere aus:
  Les nombres rationaux sont sauvés précisément. "N" signifie approximer. Essaie:

Sqrt[17]

N[%]

17^(1/2)

% // N

17^(0.5)

N[Sqrt[17]]

Sqrt[17] // N

Precision[%]

Wie gross ist also die Präzision? Die Präzision kann "beliebig" vergrðssert werden:
  Combien la précision est-elle grande? La précision peut être agrandie "autant qu'on veut":

N[Sqrt[17], 100]

Wie gross ist hier die Präzision?    Combien la précision est-elle grande?

Pi

N[Pi]

N[Pi,500]

N[E,100]

2.7. 1. Exakt versus approximiert:
        Exact versus approximé:

Probiere aus:    Essaie:

3/10 + 1/2

Precision[%]

.36 + 1/3

Precision[%]

2.7.2. Konvertierung approximativer Werte in exakte Werte:
       Transformation des valeurs approximatives en valeurs exactes:

Lasse Dir mit der Help-Funktion folgende Funktionen erklären:
  Fais-toi expliquer par la fonction Help les fonctions suivantes:

?Rationalize

?Round

?Chop

?Floor

?Ceiling

Probiere aus:    Essaie:

Rationalize[3.1416]

Rationalize[3.1415926536]

Rationalize[3.1415926536,0]

Round[2.57432]

Round[2,45892]

Was war los ?    Que se passe-t-il?

Round[Sqrt[17]]

Round[N[Sqrt[17]]]

Chop[0.00000000002]

Ceiling[3.4]

Floor[3.4]

2.7.3. Arbeiten auf einem selber fixierten Präzisions-Niveau:
       Travailler à un niveau de précision fixé par soi-même:

Man kann z.B. selbst eine Funktion definieren, die die auszugebenden Kommastellen festlegt:
  On peut définir soi-même par exemple une fonction qui détermine le nombre de places dernière la virgule à émettre:

n30[x_]:=N[x,30]

Anwendung:    Application:

n30[5/7]

N[5/7]

Es gibt aber auch die globale Variable "$Post", in die sich eine Funktion eingeben lässt. Diese Variable wird auf  jeden auszugebenen Ausdruck angewandt:
  Mais il existe aussi la variable globale "$Post", dans laquelle on peut entrer une fonction. Cette variable est appliquée à chaque expression à émettre:

?$Post

$Post=n30

Sqrt[3]

Precision[%]

Der Inhalt von $Post soll auch wieder gelöscht werden können. Das geschieht durch Eingabe des Zeichens für "missing value", nämlich "." :
  Il faut pouvoir aussi effacer le contenu de $Post. On peut faire cela en entrant le signe pour "missing value", c'est-à-dite "." :

$Post=.

Sqrt[3]

N[Sqrt[3]]

N[Pi,25]

N[%,200]

Wie genau ist also die übliche Präzision?
  Combien la précision courante est-elle exacte?

2.8. Formatierte Zahlenausgabe
     Sortie formatée de nombres

Mathematica bietet Möglichkeiten, die Zahlenausgabe zu formatieren. So lässt sich die Leserlichkeit verbessern. Probiere aus:
Mathematica offre la possibilité de formater la sortie de nombres. $Ainsi on peut améliorer la lisibilité. Essaie:

Options[NumberForm]

1.23456789 10^20

NumberForm[1.23456789 10^20,
		ExponentStep -> 19,
		NumberSigns  -> {"-","+"}
			]

NumberForm[1.23456789 10^20,
		ExponentStep -> 21,
		NumberSigns  -> {"-","+"}
			]

NumberForm[123456789 10^20,
		ExponentStep -> 1000,
		NumberSigns  -> {"-","+"}
			]

2.9. Wichtige gespeicherte Konstanten
     Constantes importantes mémorisées

Falls Dir eine der folgenden Konstanten unbekannt ist, so schlage in deinem Formelbuch nach. Probiere aus:
  Si tu ne connais pas l'une des constantes suivantes, consulte ton manuel de formules. Essaie:

??Catalan

?Degree

?E

?EulerGamma

?GoldenRatio

?I

?Pi

Pi

NumberForm[N[Pi,45],
		NumberSeparator  -> " ",
		DigitBlock -> 5
			]

Log[E]

Cos[Pi/3]

N[Sin[45 Degree]]

avogadro = 6.02250 10^23

Log[avogadro]

2.10. Zufallszahlen
       Nombres aléatoires

Mathematica besitzt die Funktion "Random", die gleichverteilte Pseudozufallszahlen generiert. Solche braucht man z.B. in der Statistik, um Testdaten zu erzeugen. Probiere aus:
  Mathematica possède la fonction "Random", qui génère des nombres pseudo-aléatoires en distribution homogène. On les emploie p.ex. dans la statistique, pour créer les données de test. Essaie:

Random[]

Random[Integer]

Random[Integer, {0, 100}]

Random[Complex, {1 + 3I, 4 + 7I}]

Die Packages "ContinousDistributions.nb" und "DiscreteDistributions.nb" enthalten Definitionen, mit denen sich andere als gleichverteilte Pseudozufallszahlen erzeugen lassen. Probiere aus:
  Les Packages "ContinousDistributions.nb" et "DiscreteDistributions.nb" contiennent des définitions par lesquelles on peut générer des nombres pseudo-aléatoires autres que distribués homogènement. Essaie:

Needs["Statistics`ContinuousDistributions`"]

Random[NormalDistribution[5]]

Der Pseudozufallszahlengenerator benutzt die Zeit seit dem Einschalten der Maschine als Variable zur Berechnung der Zahlen. Mit "SeedRandom" lässt sich der Generator wieder "zurücksetzen".  Das kann benutzt werden, um mehrmals dieselben Zahlen zu generieren. Probiere aus:
  Le générateur des nombres pseudo-aléatoires utilise le laps de temps dès le démarrage de la machine comme variable pour calculer les nombres. Par "SeedRandom" on peut "remettre en arrière" le générateur. On employe cela pour générer plusieurs fois les mêmes nombres. Essaie:

??SeedRandom

SeedRandom[2]

{Random[], Random[]}

SeedRandom[2]

{Random[], Random[]}

2.11. Iteratoren
       Itérateurs

Mathematica stellt iterative Funktionen (Iteratoren) zur Verfügung, um die Eingabe
 wiederholter Rechnungen abzukürzen. Einige sind hier gezeigt. Probiere aus:
   Mathematica met à disposition des fonctions itératives pour abréger l'entrée de calculs répétés. Voici quelques-uns. Essaie:

??Table

Table[x, {5}]

??Product

Product[x + k y, {k, 4}]

??Do

Do[Print["k: ", k], {k, 7, 9}]

??TableForm

TableForm[Table[{k, 10^(-k), Chop[N[10^(-k)]]}, {k, 7, 14}]]

??Sum

Sum[i x^i, {i, 3, 23, 5}]

2.12. Matrizenrechnung
       Calcul des matrices

Probiere aus:    Essaie:

??MatrixForm

??Inverse

??Det

??Eigenvalues

??Eigenvectors

??LinearSolve

??NullSpace

??RowReduce

??Transpose

??IdentityMatrix

m1 = {{1, 2},{3, 4}}

Transpose[m1] // MatrixForm

MatrixForm[m1]

MatrixForm[{{1, 2},{3, 4}}]

m2 = {{0, -1},{8, -6}}

m3 = {{0, -1},{8, -6}} // MatrixForm

Das Matrixprodukt wird mit einem gewöhnlichen Punkt geschrieben. Probiere aus:
  Le produit de matrices s'écrit avec un simple point. Essaie:

m1.m2 // MatrixForm

m1.m3

Elementweise Multiplikation. Probiere aus:
  Multiplication par élément. Essaie:

m1 m2 // MatrixForm

Probiere aus:    Essaie:

?NullSpace

m4 = {{1,2,3},{1,2,3},{0,0,1}}

NullSpace[m4]

?RowReduce

RowReduce[m4] // MatrixForm

Eigenvectors[m1]

Transpose[m1] // MatrixForm

m = Table[Random[], {3}, {3}]

MatrixForm[m]

mInv = Inverse[m]

MatrixForm[%]

m.mInv

MatrixForm[%]

Chop[%]

MatrixForm[%]

IdentityMatrix[7] // MatrixForm

2.13. Lösen von Gleichungen
       Résoudre des équations

Probiere aus:    Essaie:

??Solve

??NRoots

??FindRoot

Solve[{2x - 3y ==8, 4x + y == 6},{x, y}]

Solve[m1.{{x},{y}}=={{2},{5}}, {x, y,}]

NRoots[x^4 +3 x^2 + 5x == 7, x]

FindRoot benutzt die Newton-Methode. Darin wird die Ableitung benutzt:
  FindRoot emploie la méthode de Newton. On y employe la déduction:

FindRoot[Sin[x]/x == 0, {x, 2}]

Bessel-Funktionen:    Fonctions de Bessel

Plot[BesselJ[0, x], {x, 0, 12}];

FindRoot[BesselJ[0, x]/x == 0, {x, 12}]

FindRoot[BesselJ[0, x]/x, {x, 12}]

FindRoot[BesselJ[0, x]/x, {x, 7}]

Plot[BesselJ[0, x], {x, 0, 15}];

FindRoot benutzt die Newton-Methode. Darin wird die Ableitung benutzt. Hier ein Plot der Ableitung obiger Bessel-Funktion. (Beachte, dass die Ableitung bei x = 7 klein ist.)
  FindRoot emploie la méthode de Newton. On y employe la déduction. Voici un plot de la déduction de la fonction de Bessel ci-dessus. (Remarque que la déduction est petite pour x = 7.)

Plot[-BesselJ[1, x], {x, 0, 15}];

2.14. Numerische Integration etc.
       Intégtation numérique etc.

Probiere aus:    Essaie:

??NIntegrate

NIntegrate[Sin[x^2]/x^2, {x, 0, 1}]

Plot[Sin[x^2]/x^2, {x, 0, 1}];

NIntegrate[Sin[Sin[Cos[x^10]]], {x, 0, 1}]

??NSum

NSum[(n^2 - n + 1) Log[n]/n^3, {n, 1, 100}]

??NProduct

NProduct[(1 + 1/n)^n, {n, 1, 100}]

Limit[(1 + 1/n)^n, n->Infinity]

2.15. Numerische Lösung von Differentialgleichungen
       Solution numérique d'équations différentielles

Probiere aus:    Essaie:

??NDSolve

NDSolve[{y''[x] - y'[x] + x y[x] == 0, y'[0] == -1, y[0] == 1},
		y, {x, 0, 5}]

Plot[y[x] /. %, {x, 0, 5}];

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

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

Remove["Global`*"]