Kurs  Cours

3. Algebraische und symbolische Stärken
 Forces algébriques et symboliques

Die Gliederung dieses Kurses folgt in groben Zügen dem Buch von Nancy Blachman: A Practical Approach.... 
Hinweis: Kapitel 3 lesen!
Run mit WIN+Mathematica Version 5.2

 L'articulation de ce cours correspond à peu près à celle du livre de Nancy Blachman: A Practical Approach.... 
Indication: Lire le chapitre 3.
Testé avec Mathematica version 5.2+WIN

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

3.1. Algebra
     Algèbre

Mathematica kann algebraische Ausdrücke manipulieren. 
  Mathematica peut manipuler les expressions algébriques

3.1.1. Studiere:    Etudie:

?Apart

?Cancel

?Collect

?Expand

?ExpandAll

?ExpandDenominator

?ExpandNumerator

?Factor

?Simplify

?Short

?Together

(* Needs["Algebra`Trigonometry`"] *)
(* Old version *)

?TrigExpand

?TrigFactor

?TrigReduce

(* ?ComplexToTrig *)
(* Old version *)

(* ?*Trig* *)
(* Old version *)

(* ?TrigToComplex *)
(* Old version *)

?*Complex*

?ExpToTrig

?TrigToExp

?Sum

Sum[i^2,{i, n}]

(* Needs["Algebra`GosperSum`"] *)
(* Old: *)

(* ?GosperSum *)
(* Old: *)

?*Sum*

Was in alten Versionen einmal existiert hat, braucht in neuen nicht mehr zu existieren...
  Ce qui existait dans de vieilles versions, n'existe pas forcement dans des versions nouvelles.

$Version (*Mathematica-Version*)

?$Version

(* Needs["Algebra`SymbolicSum`"] *)
(* Old: *)

Sum[i^2,{i, n}]

?Limit

?Integrate

?Series

?DSolve

??DSolve

3.1.2. Probiere:    Essaie:

Ueberlege Dir, was durch die folgenden Operationen bewirkt wird!
  Réfléchis à ce qui se produit par les opérations suivantes!

Expand[(x + 2y + z)^4]

Factor[%]

Factor[6x^3 + 35 x^2 y + 58 x y^2 + 21 y^3]

3.2. Gleichungen lösen
     Résoudre des équations

3.2.1. Algebraisch exakte Lösung:
       Solution exacte algébriquement:

NRoots rechnet eine Näherung.  "||" bedeutet dabei das logische "oder", "or".
  NRoots calcule une approximation. "||" signifie le "ou" logique.

NRoots[x^3 - 3 x^2 - 17 x + 51 == 0, x]

"||" ist das logische "oder". 
  "||" est le "ou" logique.

??||

Gewisse algebraische Gleichungen oder Gleichungssysteme kann man jedoch exakt lösen. Dies geschieht mit "Solve".
  On peut résoudre exactement certaines équations algébriques ou certains systèmes d'équations. Cela avec "Solve".

Solve[x^3 - 3 x^2 - 17 x + 51 == 0, x]

Angenähert:    Approximé

% // N

Uebersichtlicher dargestellt:
  Représenté d'une façon plus claire:

ColumnForm[Solve[{	x y + 5x + 6y == 7,
					x^2 + 5x + 7y == 8}]]

Der Output besteht aus einer Menge von Ersetzungsregeln. 
Wie lässt sich damit weiterrechnen?
 L'output est composé d'une quantité de règles de remplacement. Comment continue-t-on de calculer avec cela?

3.2.2. Weiterverwendung der Lösung:
       Réutilisation de la solution:

"/." bedeutet "ersetze jedes" resp. "ReplaceAll".
  "/." signifie "remplace tout" resp. "Remplace All".

?/.

?ReplaceAll

?Replace

Studiere die folgenden Anwendungen:
  Etudie les applications suivantes:

a = x /. x -> 7

a

x

Weiter:    Ensuite:

x + 5y /. {x -> 1, y -> 2/7}

x + 5y

Weiter:    Encore:

Solve[2 x^5 + 12 x^2 + 18x - 14 == 0]

Die Lösung hier ist nur symbolisch. Eine allgemeine algebraisch exakte Lösungsformel 
für Gleichungen mit Polynomen 5. Grades existiert nicht. Approximativ allerdings geht es:
  La solution n'est que symbolique. Une forme de solution algébrique générale exacte pour les équations avec polynômes du 5e degré n'existe pas. Mais une approximation est possible (existe):

N[%]

3.3. Vereinfachungen
     Simplifications

3.3.1. Allgemeines
       Généralités

Mathematica kann nicht die Frage beantworten, welche Outputform eines Ausdrucks für den Verwender der einfachste ist. Man muss den Ausdruck selbst in die gewünschte Form bringen. Dafür gibt es Hilfsmittel wie z.B. "Simplify":
  Mathematica ne sait pas répondre à la question, laquelle des formes de l'Output d'une expression est la plus simple pour l'utilisateur. Il faut donner soi-même la forme souhaitée à l'expression. Pour cela il y a des moyens tels que p.ex. "Simplyfy".

Solve[(a d x^3 + 14 b d x^2 + 14^2 c d x) 
				== 0, x] (14b + 14a)/(-c + b)

Simplify[%]

??Simplify

x/((x+2)(x-2))

Simplify[%]

x/Expand[((x+2)(x-2))]

Expand[x/((x+2)(x-2))]

x/Simplify[((x+2)(x-2))]

3.3.2. Andere Vorgehensweisen: 
       Autres façons de procéder

Beispiel:  Partialbruchzerlegung mit "Apart". Probiere aus.:
  Exemple: Décomposition de fractions partielles en utilisant "Apart":

x/((x+2)(x-2))

Apart[%]

Retour:    Retour:

Together[%]

Man beachte die Reihenfolge der Terme im Output. Zuerst Konstanten, dann Symbole, alphabetisch, Terme nach steigendem Grad etc.:
  Il faut tenir compte des termes dans le output. D'abort les constantes, puis les symboles, en ordre alphabétique, termes selon le dégré en augmentant etc.:

Expand[(1 + 2y + 3z)^3]

Umordnen:    Réordonner:

Collect[%, y]

3.3.3. Trigonometrische Ausdrücke: 
       Expressions trigonométriques:

Expand[Sin[x]/Cos[x]]

Expand[(Sin[x]+Cos[x])/Sin[x] (Sin[x]^2 + Cos[x]^2), Trig -> False]

?Trig

Expand[(Sin[x]+Cos[x])/Sin[x] (Sin[x]^2 + Cos[x]^2), Trig -> True]

(* Old *)
TrigToComplex[Sin[x]]

?TrigToComplex

TrigToExp[Sin[x]]

(* Needs["Algebra`Trigonometry`"] *)
(* Old *)

?*Trig*

3.3.4. Lange Resultate: 
       Résultats longs

Mathematica bietet die Möglichkeit, Resultate abzukürzen:
  Mathematica offre la possibilité d'abréger les résultats:

Short[Expand[(x + 2y + 3z)^9]]

?Short

Mit der globalen Variablen "$PrePrint" lässt sich das Abkürzen der Ausgabe generalisieren:
  Avec la variable globale "$PrePrint" on peut généralement abréger la sortie:

$PrePrint = Short

Expand[(x + 2y + 3z)^9]

Expand[(x + 2y + 3z)^11]

Expand[(x + 2y + 3z)^5]

Trotzdem kann man das ganze Resultat abrufen mit "Print":
  En tout cas on peut appeler le résultat entier avec "Print":

Print[%]

Alter Zustand:    Ancien état:

$PrePrint = .

Expand[(x + 2y + 3z)^9]

3.4. Summation
     Sommation

Mathematica bietet die Möglichkeit, z.B. Summen mit variablem oberen 
Summationsindex zu berechnen:
  Mathematica offre la possibilité p.ex. de calculer des sommes avec un index de sommation supérieur variable:

?*Sum*

?Sum

(* Needs["Algebra`SymbolicSum`"] *)
(* Old *)

Sum[i^3,{i, n}]

Probiere eigene Aufgaben aus:
  Essaie des problèmes que tu inventes toi-même:

3.5. Calculus (Differential- und Integralrechnung)
     Calculus (Calcul différentiel et intégral)

3.5.1. Unbestimmte Integrale
       Intégrals indéterminées

Beispiele:    Exemple:

Integrate[Cos[x], x]

Integrate[x^4 Cos[x], x]

1/(2 + 3 x^2)^3

Integrate[1/(2 + 3 x^2)^3, x]

Kontrolle: Differenzieren!
  Contrôle: Différencier!

D[%, x]

Das Resultat kann durchaus anders aussehen. Es muss vielleicht umgeformt werden.
  Le résultat peut être différent. Il faut peut-être le transformer.

Simplify[%]

3.5.2. Bestimmte Integrale
       Intégrales déterminées

Mathematica kann bestimmte Integrale exakt rechnen. Probiere aus:
  Mathematica sait calculer exactement des intégrales déterminées. Essaie:

?Integrate

?*Integ*

Integrate[Exp[x],{x, -1, 1}]

N[%]

Numerisch geht es natürlich auch. Probiere aus:
  Il va de soi qu'on peut le faire numériquement. Essaie:

NIntegrate[Exp[x],{x, -1, 1}]

Zu gewissen Funktionen kann keine einfache Stammfunktion gefunden werden:
  Pour certaines fonctions on ne trouve pas de fonction primitive (intégrale) simple:

Integrate[Sin[Sin[x]],{x, 0, 1}]

Numerisch geht es natürlich. Probiere aus:
  Numériquement ça va. Essaie:

NIntegrate[Sin[Sin[x]],{x, 0, 1}]

3.5.3. Integrale von Funktionen mit Polen
       Intégrales de fonctions avec pôles

Bei Funktionen mit Polen können Fehler auftreten, wenn man einfach eine Stammfunktion bestimmt und die Grenzen einsetzt. Prüfe:
  Lors de fonctions avec pôles, des erreurs peuvent appataître, si on détermine simplement une fonction primitive (intégrale) et fixe les limites. Examine:

Integrate[1/(x-Pi/100)^2,{x, -1, 1}]

Plot[1/(x-Pi/100)^2,{x, -1, 1}];

NIntegrate[1/(x-Pi/100)^2,{x, -1, 1}]

Integrate[1/x^2,{x, -1, 1}]

NIntegrate[1/x^2,{x, -1, 1}]

??NIntegrate

Es kann z.B. angegeben werden, dass bei 0 eine Singularität (Polstelle) ist. Prüfe:
  On peut indiquer p.ex. qu'il y a une singularité (pôle) près de 0. Examine:

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

3.5.4. Mehrfachintegrale
       Intégrales multiples

f(x, y) kann über x und y integriert werden. Probiere:
  f(x, y) peut être intégré sur x et y. Essaie:

Integrate[x^2 Sin[y],x, y]

Bei bestimmten Integralen sind die äusseren Grenzen zuerst anzugeben:
  Pour certains intégrales les limites extérieurs doivent êtres données d'abort.

Integrate[x^2 Sin[y],{x, 0, Pi/3}, {y, 0, x}]

3.6. Grenzwerte   
  Valeurs limites

Mit "Limits" lassen sich Grenzwerte berechnen. "Unendlich" ist "Infinity":
  Avec "Limits" on peut calculer des valeurs limites. "Infinie" est "Infinity":

?Limit

?Infinity

Limit[Sin[x]/x, x -> 0]

Limit[1/x, x -> 0]

Der Wert des Grenzwerts kann davon abhängen, aus welcher Richtung man sich dem problematischen Punkt nähert. Die Richtung kann angegeben werden:
  La valeur de la valeur limite peut dépendre de la direction de laquelle on s'approche du point problématique.

Limit[1/x, x -> 0, Direction -> 1]

Limit[1/x, x -> 0, Direction -> -1]

Integrate[E^(-s t) t^n,{t,0,Infinity}]

Integrate[E^(-s t) Sin[w t],{t,0,Infinity}]

3.7. Potenzreihen
  Séries de puissances

Beispiele von Potenzreihenentwicklungen:
  Exemples de développements de séries de puissances:

Series[f[x],{x,0,9}]

Series[f[x],{x,1,6}]

Series[E^x,{x,0,9}]

Series[Cos[x],{x,0,9}]

Solch ein Output ist noch kein algebraischer Ausdruck, mit dem weitergerechnet werden 
kann, denn die angegebene Ordnung der nachfolgenden Glieder ist kein Term. Mit "Normal" kann diese Angabe entfernt werden. Probiere:
Un tel Output n'est pas encore une expression algébrique, avec laquelle on peut continuer de calculer, car l'ordre donné des membres suivants n'est pas un terme. On peut effacer ce problème par "Normal". Essaie:

a = Normal[Series[E^x,{x,0,9}]]

b = Normal[Series[Cos[x],{x,0,9}]]

b = Normal[Series[Cos[x],{x,0,9}]]

b /. x->1

a + b

Etwas fürs Auge:    Quelque chose pour l'oeil:

Clear[a]

prCos[x_]:= Normal[Series[Cos[x],{x,0,11}]]; 
p = prCos[x]

Plot[{p, Cos[x]}, {x, 0, 2 Pi}];

a = Append[Evaluate[Table[Normal[Series[Cos[x],{x,0,n}]],{n, 12}]],
Cos[x]]

Plot[Evaluate[Table[a[[i]],{i,13}]], {x, 0, 2 Pi}];

??Append

3.8. Lösen von Differentialgleichungen
  Résoudre des équations différentielles

Mathematica kann gewisse einfache Differentialgleichungen exakt lösen. Probiere:
  Mathematica peut résoudre avec exactitude certaines équations différentielles. Essaie:

?DSolve

DSolve[y''[x] + y'[x] + y[x] == 0, y[x], x]

"C[..]" bedeutet eine Konstante. Auch Systeme können behandelt werden. Probiere:
  "C[..]" signifie une constante. On peut aussi traiter des systèmes. Essaie:

d = DSolve[{y'[x] + y[x] == 0, y[2] == 2}, y[x], x]

dd =Flatten[d][[1]]

ddd = dd[[2]]

Plot[ddd, {x, -3, 3}];

Aufgabe:Behandle das System   {r y'[x] + y[x] == 0, y[2] == 2}  für 
r = -3, -2, -1, 0, 1, 2, 3  und vergleiche die Graphen.
  Problème: Traite le système    {r y'[x] + y[x] == 0, y[2] == 2}  pour 
r = -3, -2, -1, 0, 1, 2, 3  et compare les graphes.

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

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

Remove["Global`*"]