Professional Documents
Culture Documents
EDV – PROGRAMMIERSPRACHE
Bedingungs- Kontur-Diagramme
gleichung in <Strg>5
Lösungs-blöcken
= ≠ > < ≤ ≥
Lokale 3D-Balken-
Definitions- diagramme
gleichung in
Programm-
Bereichen
←
3D-Punkthaufen-
diagramme
Vektorfeld-
Diagramme
Animation
Zeichnungen
(Sketches)
-4-
1) Definitionsgleichung
2) Numerische Berechnungsgleichung
3) Symbolisches Rechnen
Mathcad enthält einen Teil des Software-Pakets MAPLE, der für
das symbolische Rechnen verwendet wird. Der symbolische
Prozessor wird beim Start von Mathcad 2001 Professional
automatisch geladen.
solve,var Lösung einer Gleichung für die Variable var, oder eines
Gleichungssystems für die Variablen im Vektor var
substitute, Ersetzen der Variablen var1 durch die Variable oder den
var1=var2 Ausdruck var2 (<Strg>+ für fettgedrucktes =)
Schlüsselwort Funktion
convert, Partialbruchzerlegung nach der im Nenner des Ausdrucks
parfrac,var stehenden Variablen var
Schlüsselwort Funktion
assume,beding Auswertung eines Ausdruckes unter Festlegen einer
Nebenbedingung beding für eine oder mehrere Variablen
Fourier
Inverse Fourier
Laplace
Inverse Laplace
Z
Inverse Z
- 13 -
Benützung der Funktionen aus dem Symbolics-Menü:
- 14 -
4.1) Operatoren
Matrix-Multiplikation A⋅ B *
Vektor/Matrix-Multiplikation A⋅ v *
n-tes Vektorelement vn [
4.2) Funktionen
4.2.1) Größe
Funktion Funktionsergebnis
Funktion Funktionsergebnis
identity(n) Einheitsmatrix I
Funktion Funktionsergebnis
Funktion Funktionsergebnis
Funktion Funktionsergebnis
Funktion Funktionsergebnis
4.2.7) Sortier-Funktionen
5.3 Vektor
Beispiel: Mehrfache Transformation eines Vektors,
A ist die Transformationsmatrix
- 32 -
Yi + 1 = H ⋅ Xi linearisiert
Yi Xi
N& i + 1
= -H ⋅ X i + Yi
N& g,0
- 32 -
6) Funktionen
6.1) Mathcad-Funktionen
6.1.4) Rundungsfunktionen
cfft(A) Fast-Fourier-Transformation,
A ... komplexwertiger Vektor oder Matrix
Ergebnis ist ein Feld gleicher Größe wie A
icfft(A) Inverse Fast-Fourier-Transformation,
A ... komplexwertiger Vektor oder Matrix
Ergebnis ist ein Feld gleicher Größe wie A
fft(v) Fast-Fourier-Transformation,
v ... rellwertiger Vektor mit 2m Elementen, m>2
ifft(v) Inverse Fast-Fourier-Transformation,
v ... Vektor mit 1+2n-1 Elementen
Ergebnis ist ein Vektor mit 2nElementen, n>2
CFFT(A) Fast-Fourier-Transformation identisch mit cfft,
jedoch mit unterschiedlicher Normierung und
unterschiedlicher Vorzeichen-Vereinbarung
ICFFT(A) Inverse Fast-Fourier-Transformation zu CFFT,
A ... komplexwertiger Vektor oder Matrix
Ergebnis ist ein Feld gleicher Größe wie A
FFT(v) Fast-Fourier-Transformation identisch mit fft,
jedoch mit unterschiedlicher Normierung und
unterschiedlicher Vorzeichen-Vereinbarung
IFFT(v) Inverse Fast-Fourier-Transformation zu FFT,
v ... Vektor mit 1+2n-1 Elementen
Ergebnis ist ein Vektor mit 2nElementen, n>2
wave(v) Wavelet-Transformation,
v ... rellwertiger Vektor mit 2m Elementen
Ergebnis ist ein Vektor gleicher Größe
iwave(v) Inverse Wavelet-Transformation,
v ... rellwertiger Vektor mit 2m Elementen
Ergebnis ist ein Vektor gleicher Größe
- 36 -
6.1.7) Interpolations- und Vorhersage-Funktionen
vx ....... Vektor der Abszissenwerte der Stützpunkte in aufsteigender
Reihenfolge
vy ....... Vektor der Ordinatenwerte der Stützpunkte
vs ....... Vektor der Splinekoeffizienten in den Stützpunkten
u ........ Vektor der Abszissenwerte der Knoten für den B-Spline
n ......... Ordnung des B-Splines
Mxy .... nx2-Matrix der Abszissen- und Ordinatenwerte der Stützpunkte
auf einem Rechteckgitter in aufsteigender Reihenfolge
Mz ...... nxn-Matrix der z-Werte der Stützpunkte
x ......... Abszisse des zu interpolierenden Punktes
y ......... Ordinate des zu interpolierenden Punktes mit x
v ......... Vektor des zu interpolierenden Punktes in der xy-Ebene
z ......... z-Koordinate des zu interpolierenden Punktes mit v
Lineare Regression
intercept(vx,vy) ⇒ Ordinatenabschnitt der Fitgeraden
slope(vx,vy) ⇒ Neigung der Fitgeraden
line(vx,vy) ⇒ Ordinatenabschnitt und Neigung
stderr(vx,vy) ⇒ Standard-Fehlerabweichung
medfit(vx,vy) ⇒ Ordinatenabschnitt und Neigung für
Median-Median-Regression
Polynom-Regression einer Kurve
regress(vx,vy,n) ⇒ vs für Polynom n-ter Ordnung
loess(vx,vy,span) ⇒ vs für Satz von Polynomen 2. Ordnung
interp(vs,vx,vy,x) ⇒ y für x
Polynom-Regression einer Oberfläche
regress(Mxy,vz,n) ⇒ vs für Polynom n-ter Ordnung
loess(Mxy,vz,span) ⇒ vs für Satz von Polynomen 2. Ordnung
interp(vs,Mxy,vz,v) ⇒ z für v
- 38 -
Spezialisierte Regression
expfit(vx,vy,vg) ⇒ Vektor der Fitparameter a,b,c
der Fitfunktion a⋅exp(b⋅x) + c
lgsfit(vx,vy,vg) ⇒ Vektor der Fitparameter a,b,c
der Fitfunktion a/[1+b⋅exp(-c⋅x)]
logfit(vx,vy,vg) ⇒ Vektor der Fitparameter a,b,c
der Fitfunktion a⋅ln(x)b + c
pwrfit(vx,vy,vg) ⇒ Vektor der Fitparameter a,b,c
der Fitfunktion a⋅xb + c
sinfit(vx,vy,vg) ⇒ Vektor der Fitparameter a,b,c
der Fitfunktion a⋅sin(x + b) + c
Generalisierte Regression
linfit(vx,vy,F) ⇒ Vektor der Koeffizienten für die
Linearkombinationen der Fi
genfit(vx,vy,vg,F) ⇒ Vektor der Fitparameter in F
fun(f1,f2,....,v1,v2,....) := ausdr{f1,f2,....,v1,v2,....,a1,a2,....}
fun(f1,f2,....,v1,v2,....) = Ergebnis
oder
erg := fun(f1,f2,....,v1,v2,....)
aktuelle, vollständig
definierte Ausdrücke
7) Programmierung
- 42 -
7.1) Bedingungsanweisungen
Funktionsdefinition f( x )
7.2) Schleifenanweisungen
7.2.1) While-Schleife
Selektiere Platzhalter
Klick "if" if
Klick "continue"
continue if
Trage Bedingung ein
- 51 -
7.4.2) Vorzeitige Beendigung einer Schleife
Selektiere Platzhalter
Klick "if" if
Klick "break"
break if
Trage Bedingung ein
- 52 -
7.4.3) Vorzeitige Beendigung eines Programms
Selektiere Platzhalter
Klick "if" if
Klick "return"
Trage Rückgabewert und return if
Bedingung ein
- 53 -
7.4.4) Fehlerbehandlung
Anweisung für die Fehlerbehandlung: "on error"
Selektiere Platzhalter
Selektiere Platzhalter
Klick "if"
Trage "error" mit Fehlertext if
ein
8) Gleichungslösung
8.1) Lineare Gleichungen
Gleichungssystem M⋅x = a
8.1.1) Mittels invertierter Koeffizientenmatrix x := M-1⋅a
8.2.1) root-Funktion
Nullstellen-Suche für eine Variable mit numerischem Ergebnis
Startwert-Vorgabe Lösungsbereich-Vorgabe
Zahlenergebnis
var := Startwert
root(ausdr,var,a,b) = Ergebnis
root(ausdr,var) = Ergebnis
Variablendefinition für Ergebnis
var := Startwert
erg := root(ausdr,var,a,b)
erg := root(ausdr,var)
erg = Ergebnis
erg = Ergebnis
ausdr .... Ausdruck, der u.a. von der Variablen var abhängt und der zu
Null werden soll.
var ......... Variable für die die Nullstelle von ausdr gesucht werden soll.
a, b ........ Definierte Ausdrücke für die Grenzen des Bereiches in dem
die Nullstelle liegen soll. Damit eine Nullstelle gefunden wird,
müssen die Werte von ausdr für a und b unterschiedliches
Vorzeichen haben.
Funktionsdefinition für mehrere Ergebnisse:
Startwert-Vorgabe
fun([var,]v1,v2,...) := root(ausdr,var)
Beliebiger Funktionsname
- 58 -
Lösungsbereich-Vorgabe
fun(v1,v2,...) := root(ausdr,var,a,b)
Beliebiger Funktionsname
8.2.1) polyroots-Funktion
Suche aller Nullstellen eines Polynoms für eine Variable mit
numerischem Ergebnis.
Polynom: Pn = an x n + an −1 x n −1 + K + a1 x + a0
Koeffizienten-Vektor: V = (a0 , a1 ,K, an −1 , an )T
Nullstellen-Vektor: N := polyroots(V)
Die Vorgabe eines Startwertes ist nicht erforderlich.
- 61 -
8.2.3) SOLVE-Block
Lösung von Systemen von Gleichungen und Ungleichungen mit
mehreren Variablen. Ergebnis numerisch und symbolisch.
var1 := Startw1 var2 := Startw2 ..... für numer. Ergebnis
Given
ausdr1 = ausdr2 Gleichung
ausdr Gleichung, entspricht ausdr = 0
ausdr1 > ausdr2 Ungleichung
ausdr1 ≥ ausdr2 Ungleichung
ausdr1 < ausdr2 Ungleichung
ausdr1 ≤ ausdr2 Ungleichung
Symbolisches Ergebnis
Find(var1,var2,...) → Ergebnis
Zahlenergebnis
Find(var1,var2,...) = Ergebnis Genau entspr. TOL
Minerr(var1,var2,...) = Ergebnis Beste Näherung
Minimize(f,var1,var2,...) = Ergebnis Minimiert die Funktion f
Maximize(f,var1,var2,...) = Ergebnis Maximiert die Funktion f
Variablendefinition für Ergebnis am Beispiel von Find
erg1
erg2
• := Find(var1,var2,...)
•
erg1 = Ergebnis1
erg2 = Ergebnis2
Vektordefinition für Ergebnis am Beispiel von Find
erg := Find(var1,var2,...) erg = Ergebnis-Vektor
- 62 -
fun([Stw1,Stw2,...]defa,defb,...) = Ergebnis-Vektor
Toleranzen:
TOL ..... Konvergenz-Toleranz: Das Ergebnis wird zurückgegeben,
wenn die Schätzwerte für die Variablen var in zwei
aufeinanderfolgenden Iterationen weniger als TOL
differieren.
CTOL ... Bedingungs-Toleranz: Gibt an , wie genau die Bedin-
gungsgleichungen erfüllt sein müssen.
- 63 -
- 64 -
9) Differentialgleichungen
9.1) Gewöhnliche Differentialgleichungen
9.1.1) Lösung einer DGL mittels SOLVE Block
Mittels Solve Block können gewöhnliche lineare und nichtlineare
Differentialgleichungen beliebiger Ordnung als Anfangswertproblem
oder als Randwertproblem gelöst werden:
Given
ausdr1 = ausdr2 Differentialgleichung der Ordnung n
randw1 = Wert1 1. Randbedingung
:
randwn = Wertn n-te Randbedingung
erg := Odesolve(x,xm[,m])
ausdr ...... Ausdrücke, die die unabhängige Variable, die
abhängige Variable und deren Ableitungen enthalten.
Die abhängige Variable und deren Ableitungen müssen
immer als Funktion der unabhängigen Variablen explizit
angeführt werden. Die höchste (n-te) Ableitung darf nur
linear vorkommen. Alle anderen Ableitungen und die
abhängige Variable dürfen nichtlinear enthalten sein.
Innerhalb des Solve Blocks dürfen die Ableitungen auch
durch Striche gekennzeichnet werden, z.B. y'(x), u'''(t)
(Eingabe durch <Strg><F7>)
randw ..... Abhängige Variable oder deren i-te Ableitung an einer
der beiden Randstellen.
Es sind nur einfache und nicht gekoppelte Randbedingun-
gen möglich, z.B. y(0) = Wert, u''(tm) = Wert.
Es muß mindestens eine Anfangsbedingung, d.h. ein Wert
am Beginn des Lösungsintervalls, angegeben werden.
Wert ....... Definierter Ausdruck für den Randwert
erg .......... Lösungsfunktion der unabhängigen Variablen x
x ............. Unabhängige Variable, für die die Differentialgleichung
gelöst werden soll
xm ........... Endpunkt des Lösungsintervalls
m ............ Anzahl der Stützpunkte in denen die Lösung berechnet
wird.
- 65 -
- 66 -
9.1.2) Differentialgleichungs-Lösungsfunktionen
9.1.2.1) Anfangswertprobleme
9.1.2.1.1) Runge-Kutta-Methode 4. Ordnung
Z := rkfixed(y,xo,xm,m,D)
Z ............. Lösungsmatrix mit m+1 Zeilen:
1. Spalte ................ Vektor der x-Werte der
Stützpunkte
Weitere Spalten ... Vektoren der berechneten
Werte für y, y', y'', ...., y(n-1),
bzw. bei DGL-Systemen der
Werte für y1, y1', ...., y1(n-1),
y2, y2', ...., y2(n-1),
......
y ............. Vektor der n Anfangswerte,
n .... Ordnung der Differentialgleichung, bzw.
Summe der Ordnungen der DGL bei einem
Differentialgleichungssystem
xo ............ Anfangspunkt des Lösungsintervalls
xm ........... Endpunkt des Lösungsintervalls
m ............ Anzahl der Stützpunkte in denen die Lösung
berechnet wird,
gesamte Anzahl der Stützpunkte = m+1
D(x,y) ..... Vektorfunktion
mit n Elementen, die die ersten bis n-ten
Ableitungen enthält, bzw.
bei DGL-Systemen mit Σn Elementen, die
die ersten bis n-ten Ableitungen der 1. DGL,
die ersten bis n-ten Ableitungen der 2. DGL,
usw. enthält
- 67 -
[ ]
x0′ (t ) = µ x0 (t ) − x1 (t ) − x0 (t ) 2 + x1 (t ) 2 x0 (t ) x0 (0) = 0
x′ (t ) = µ x (t ) + x (t ) − [x (t )
1 1 0 0
2
+ x (t ) ]x (t )
1
2
1 x1 (0) = 1
- 70 -
Bulirsch-Stoer-Methode:
Z := Bulstoer(y,xo,xm,m,D)
Für stetige Lösungen mit etwas höherer Genauigkeit als
die Runge-Kutta-Methode.
Z := Rkadapt(y,xo,xm,m,D)
Für Lösungsfunktionen, die im Lösungsbereich stark
unterschiedliche Gradienten aufweisen.
Obwohl die Lösungen an Stützstellen mit ungleichen
Abständen berechnet werden, erfolgt die Rückgabe der
Lösungswerte für konstante Abszissenabstände.
Z := Stiffb(y,xo,xm,m,D,J) Bulirsch-Stoer
Z := Stiffr(y,xo,xm,m,D,J) Rosenbrock
Z := Bulstoer(y,xo,xm,acc,D,kmax,save)
Z := Rkadapt(y,xo,xm,acc,D,kmax,save)
Z := Stiffb(y,xo,xm,acc,D,J,kmax,save)
Z := Stiffr(y,xo,xm,acc,D,J,kmax,save)
acc ........ Genauigkeitskontrolle,
kleine Werte von acc verringern die
Schrittweite,
acc = 0,001 liefert im allgemeinen genügend
genaue Lösungen
kmax ..... die größte zulässige Anzahl von
Zwischenpunkten, in denen die Lösung
zurückgegeben wird
save ...... der kleinste zulässige Abstand der
Zwischenpunkte, in denen die Lösung
zurückgegeben wird
9.1.2.2) Randwertprobleme
9.1.2.2.1) Vorgegebene Randwerte an den Bereichsenden
Das Randwertproblem wird auf ein Anfangswertproblem
zurückgeführt. Die fehlenden Anfangswerte an der Stelle xo
werden aus den gegebenen Randwerten an der Stelle xm
zurückgerechnet:
w := sbval(v,xo,xm,D,l,s)
w ............ Ergebnis-Vektor der unbekannten
Anfangswerte
v ............. Startwert-Vektor der unbekannten
Anfangswerte
xo ............ Anfangspunkt des Lösungsintervalls
xm ........... Endpunkt des Lösungsintervalls
D(x,y) ..... Vektorfunktion für die die ersten bis n-ten
Ableitungen
l(xo,v) ..... Vektorfunktion für die Anfangswerte in xo,
für die unbekannten Anfangswerte sind die
Startwerte des Vektors v einzusetzen
s(xm,y) .... Vektorfunktion für die Differenz der
berechneten Funktionswerte y und der
gegebenen Werte im Randpunkt xm
- 74 -
- 75 -
w := bvalfit(v1,v2,xo,xm,xi,D,l1,l2,s)
w .............. Ergebnis als Zeilen-Vektor der
unbekannten Anfangswerte in xo und xm
v1 ............. Startwert-Vektor der unbekannten
Anfangswerte in xo
v2 ............. Startwert-Vektor der unbekannten
Anfangswerte in xm
xo .............. Anfangspunkt des Lösungsintervalls
xm ............. Endpunkt des Lösungsintervalls
xi .............. Zwischenpunkt im Lösungsintervall
D(x,y) ....... Vektorfunktion für die die ersten bis
n-ten Ableitungen
l1(xo,v1) ... Vektorfunktion für die Anfangswerte in xo,
für die unbekannten Anfangswerte sind die
Startwerte des Vektors v1 einzusetzen
l2(xm,v2) ... Vektorfunktion für die Anfangswerte in xm,
für die unbekannten Anfangswerte sind die
Startwerte des Vektors v2 einzusetzen
s(xi,y) ........ Vektorfunktion für die Anpassung im
Zwischenpunkt xi
- 76 -
Mit der Funktion "bvalfit" lassen sich auch Probleme lösen, bei
denen im Lösungsbereich eine Unstetigkeitsstelle vorhanden ist:
∂ 2u ∂ 2u
Laplace-Gleichung
2
+ 2
=0
∂x ∂y
∂ 2u ∂ 2u
Poisson-Gleichung
2
+ 2
= ρ ( x, y)
∂x ∂y
Finite Differenzen-Verfahren:
Für einen quadratischen Bereich, d.h. für n×n Stützpunkte (n ungerad-
zahlig) gilt
a j , k u j +1, k + b j , k u j −1, k + c j , k u j , k +1 + d j , k u j , k −1 + e j , k u j , k = f j , k
u := multigrid(M,ncycle)
u ............. Quadratische Ergebnis-Matrix,
in der die Elementposition der Stützpunktposition in
einem quadratischen Bereich entspricht und in der
die Elementwerte die Näherungslösungen in den
Stützpunkten sind
M ............ Quadratische Matrix der Quellterme f j ,k
mit ungeradzahliger Zeilenzahl
ncycle .... Anzahl der Wiederholungen einer Multigrid-
Iteration,
ncycle = 2 liefert im allgemeinen genügend genaue
Lösungen
Auch für alle Randwerte = uo mit uo ≠ 0 ist dieses Verfahren
anwendbar, da durch die Transformation w = u - uo für w
wieder alle Randwerte zu Null werden.
- 79 -
u := relax(a,b,c,d,e,f,v,rjac)
u ............. Quadratische Ergebnis-Matrix,
in der die Elementposition der Stützpunktposition in
einem quadratischen Bereich entspricht und in der
die Elementwerte die Näherungslösungen in den
Stützpunkten sind
a ............. Quadratische Matrix der Koeffizienten a j ,k
b ............. Quadratische Matrix der Koeffizienten b j ,k
c .............. Quadratische Matrix der Koeffizienten c j ,k
d ............. Quadratische Matrix der Koeffizienten d j ,k
e .............. Quadratische Matrix der Koeffizienten e j ,k
f .............. Quadratische Matrix der Quellterme f j ,k
v ............. Quadratische Matrix der Randwerte und der
Startwerte im Inneren des Bereiches
rjac ......... Spektralradius der Jakobi-Iteration,
0 > rjac ≥ 1 kontrolliert die Konvergenz des
Relaxationsalgorithmus und ist problemabhängig
- 81 -
Variable Graph
Surface Plot
3-Spalten-Matrix mit
den x-, y- und z-Werten
oder Vektoren X,Y,Z Graph Toolbar
- 97 -
- 98 -
11.2) Kontur-Diagramm
Erstellen: Cursorkreuz für linke obere Ecke des
Diagrammbereiches setzen und Taste <Strg>5
oder Menüleiste Insert ... Graph ... Contour Plot
oder Math Toolbar ... Graph Toolbar ...
- 99 -
11.3) 3D-Balken-Diagramm
Erstellen: Cursorkreuz für linke obere Ecke des
Diagrammbereiches setzen und
Menüleiste Insert ... Graph ... 3D Bar Plot
oder Math Toolbar ... Graph Toolbar ...
Das Beispiel für das Konturdiagramm jetzt als
3D-Balkendiagramm:
- 100 -
11.4) 3D-Punkthaufen-Diagramm
Erstellen: Cursorkreuz für linke obere Ecke des
Diagrammbereiches setzen und
Menüleiste Insert ... Graph ... 3D Scatter Plot
oder Math Toolbar ... Graph Toolbar ...
11.5) Vektorfeld-Diagramm
Erstellen: Cursorkreuz für linke obere Ecke des
Diagrammbereiches setzen und
Menüleiste Insert ... Graph ... Vector Field Plot
oder Math Toolbar ... Graph Toolbar ...