skriptum_mathcad

106
Institut für Grundlagen der Verfahrenstechnik und Anlagentechnik Technische Universität Graz EDV – PROGRAMMIERSPRACHE TEIL II: MATHCAD 2001 PROFESSIONAL Ao. Univ.-Prof. Dipl.-Ing. Dr. Martin Pflügl Graz 1999, 2001

Upload: vtwien

Post on 27-Nov-2015

34 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Skriptum_Mathcad

Institut für Grundlagen der Verfahrenstechnik und Anlagentechnik Technische Universität Graz

EDV – PROGRAMMIERSPRACHE

TEIL II: MATHCAD 2001 PROFESSIONAL

Ao. Univ.-Prof. Dipl.-Ing. Dr. Martin Pflügl

Graz 1999, 2001

Page 2: Skriptum_Mathcad

Inhaltsverzeichnis: Einleitung

Dokumentfenster ..................................................................................... 1 Werkzeugfenster ..................................................................................... 2 Bereiche eines Mathcad-Dokumentes .................................................... 3

1) Definitionsgleichung ............................................................................... 4 2) Numerische Berechnungsgleichung ..................................................... 4 3) Symbolisches Rechnen

3.1) Symbolische Berechnungsgleichung ............................................... 7 3.2) Benützung des Symbolic-Menüs ................................................... 12

4) Vektoren und Matrizen .......................................................................... 14 4.1) Operatoren ..................................................................................... 17 4.2) Funktionen

4.2.1) Größe .................................................................................... 18 4.2.2) Spezielle Matrizen ................................................................. 19 4.2.3) Funktionen zum Bilden von Matrizen .................................... 20 4.2.4) Charakteristische Matrixgrößen ............................................ 22 4.2.5) Eigenwerte und Eigenvektoren ............................................. 23 4.2.6) Zerlegung von Matrizen ........................................................ 24 4.2.7) Sortierfunktionen ................................................................... 27

5) Schrittweise Berechnung 5.1) Eine Variable .................................................................................. 28 5.2) Mehrere Variable ........................................................................... 29 5.3) Vektor ............................................................................................ 30

6) Funktionen 6.1) Mathcad-Funktionen

6.1.1) Transzendente Funktionen ................................................... 32 6.1.2) Funktionen mit komplexen Zahlen ........................................ 33 6.1.3) Stückweise kontinuierliche Funktionen ................................. 33 6.1.4) Rundungsfunktionen ............................................................. 34 6.1.5) Funktionen der Zahlentheorie und Kombinatorik .................. 34 6.1.6) Diskrete Transformationsfunktionen ..................................... 35 6.1.7) Interpolations- und Vorhersage-Funktionen ......................... 36 6.1.8) Regression ............................................................................ 37 6.1.9) Zugriff auf Textdateien .......................................................... 38 6.1.10) Weitere Funktionen ............................................................. 39

6.2) Definition einer Benützerfunktion durch einen Ausdruck ................ 40

Page 3: Skriptum_Mathcad

7) Programmierung .................................................................................... 41 7.1) Bedingungsanweisungen ............................................................... 42 7.2) Schleifenanweisungen

7.2.1) While-Schleife ....................................................................... 44 7.2.2) For-Schleife ........................................................................... 47

7.3) Rekursive Programmierung ............................................................ 49 7.4) Programmablauf-Kontrolle

7.4.1) Vorzeitige Beendigung eines Schleifendurchlaufes .............. 50 7.4.2) Vorzeitige Beendigung einer Schleife ................................... 51 7.4.3) Vorzeitige Beendigung eines Programms ............................. 52 7.4.4) Fehlerbehandlung ................................................................. 53

8) Gleichungslösung 8.1) Lineare Gleichungen

8.1.1) Mittels invertierter Koeffizientenmatrix .................................. 56 8.1.2) Mittels der Funktion lsolve .................................................... 56

8.2) Nichtlineare Gleichungen 8.2.1) root-Funktion ........................................................................ 57 8.2.2) polyroots-Funktion ............................................................... 60 8.2.3) SOLVE-Block ........................................................................ 61

9) Differentialgleichungen 9.1) Gewöhnliche Differentialgleichungen

9.1.1) Lösung einer DGL mittels SOLVE-Block .............................. 64 9.1.2) Differentialgleichungs-Lösungsfunktionen

9.1.2.1) Anfangswertprobleme 9.1.2.1.1) Runge-Kutta-Methode 4. Ordnung ......................... 66 9.1.2.1.2) Spezialisierte Differentialgleichungslöser ............... 71

9.1.2.2) Randwertprobleme 9.1.2.2.1) Vorgegebene Randwerte an den Bereichsenden ... 73 9.1.2.2.2) Vorgegebene Werte an den Bereichsenden

und in einem Zwischenpunkt ................................. 75 9.2) Partielle Differentialgleichungen

9.2.1) Alle Randwerte = 0.................................. .............................. 78 9.2.2) Randwerte nicht gleich groß ................................................. 80

10) Zweidimensionale Diagramme 10.1) x-y-Diagramm ............................................................................... 82

Zoomen eines Diagrammbereiches .............................................. 86 Auslesen von Plot-Koordinaten ..................................................... 87

10.2) Polar-Diagramm ........................................................................... 88 11) Dreidimensionale Diagramme

Erstellen mit dem 3D-Plot-Helfer ........................................................... 91 11.1) Oberflächen-Diagramm ................................................................ 96 11.2) Kontur-Diagramm ......................................................................... 98 11.3) 3D-Balken-Diagramm ................................................................... 99 11.4) 3D-Punkthaufen-Diagramm ........................................................ 100 11.5) Vektorfeld-Diagramm .................................................................. 101

Page 4: Skriptum_Mathcad

- 1 -

Mathcad 2000 Professional Einführung

Mathematik-Software für numerische symbolische

Berechnungen

Mathcad-Arbeitsblatt nach dem Starten

Definition eines neuen Dokumentes <Strg>N Laden einer bestehenden Datei <Strg>O Sichern eines Mathcad-Dokumentes <Strg>S Schließen eines Dokumentes <Strg>W

Dateityp eines Mathcad-Dokumentes .mcd

Page 5: Skriptum_Mathcad

- 2 -

Page 6: Skriptum_Mathcad

- 3 -

Mathcad-Dokument

Berechnungs-bereiche

Diagrammbereiche Textbereiche

Definitions-gleichung := ≡

x-y-Diagramme @

Textfeld "

Numerische Berechnungs-gleichung =

Polar-Diagramme <Strg>7

Symbolische Berechnungs-gleichung → ▪→

Oberflächen-diagramme <Strg>2

Bedingungs-gleichung in Lösungs-blöcken = ≠ > < ≤ ≥

Kontur-Diagramme <Strg>5

Lokale Definitions-gleichung in Programm-Bereichen ←

3D-Balken-diagramme

3D-Punkthaufen-diagramme

Vektorfeld-Diagramme

Animation

Zeichnungen (Sketches)

Page 7: Skriptum_Mathcad

- 4 -

1) Definitionsgleichung

Globale Definition Lokale Gilt für das gesamte Dokument

Gilt ab der Definition bis zur nächsten Definition der gleichen Größe

Globale Definition def ≡ ausdr

Name einer einfachen Größe oder Funktion

Arithmetischer Ausdruck von Konstanten und anderen globalen Größen

Lokale Definition def := ausdr

Name der definierten Größe (Unterscheidung zwischen Groß- und Kleinschreibung, griechische Buchstaben, Tiefstellen durch . z.B. a.1 → a1)

Arithmetischer Ausdruck von definierten Größen und Funktionen von definierten Größen oder von Parametern einer Funktion oder Bereichsausdruck

Einfache Größe Vektor (Matrix mit einer Spalte) <Strg>M

Standardeinstellung ORIGIN ≡ 0

Matrix <Strg>M

Standardeinstellung ORIGIN ≡ 0

Indizierte Größe [

ai,k:= ausdr

Bereichsvariable ;

var := awert,nwert;ewert

Funktion fun(par1,par2,...) := ausdr

2) Numerische Berechnungsgleichung

def = Ergebnis ausdr = Ergebnis

Page 8: Skriptum_Mathcad

- 5 -

Page 9: Skriptum_Mathcad

- 6 -

Page 10: Skriptum_Mathcad

- 7 -

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.

3.1) Symbolische Berechnungsgleichung

ausdr → Ergebnis <Strg>. ⇒ →

ausdr Schlüsselwort → Ergebnis <Strg>< >. ⇒ ▪→

Page 11: Skriptum_Mathcad

- 8 -

Anpassung der symbolischen Berechnung durch Schlüsselwörter:

Schlüsselwort Funktion

complex Symbolische Berechnung in der komplexen Zahlenebene, Ergebnis ist in der Form a+i⋅b

float,m Ergebnis ist Fließkommawert mit m Ziffern 1≤m≤250

simplify Arithmetische Vereinfachung durch Kürzen gemeinsamer Faktoren und Verwendung von Identitäten der trigoniometrischen und inversen Funktionen,

simplify, assume=real

zusätzlich werden alle Unbekannten als reellwertig angenommen,

simplify, assume= RealRange(a,b)

oder zusätzlich werden alle Unbekannten als reellwertig im Bereich zwischen den reellen Zahlen a und b angenommen,

simplify,trig oder zusätzlich erfolgt die Vereinfachung nur unter der Verwendung der Identitäten

1xx 22 =+ )cos()sin( und 1xx 22 =− )sinh()cosh(

expand[,ausdr] Entwickeln aller Produkte und Potenzen von Summen in einen Ausdruck außer für den Subausdruck ausdr

factor[,ausdr] Faktorisierung in ein Produkt, wenn möglich, unter Berücksichtigung von ausdr als eine einzelne Größe oder mehrere Größen, getrennt durch Kommas

solve,var Lösung einer Gleichung für die Variable var, oder eines Gleichungssystems für die Variablen im Vektor var

collect, var1 ... varn

Zusammenfassung gleicher Ausdrücke im Hinblick auf die Variablen oder Unterausdrücke var1 bis varn

coeffs,var Ermittlung der Koeffizienten eines Ausdrucks, wenn dieser als Polynom in der Variablen oder im Unterausdruck var dargestellt wird

substitute, var1=var2

Ersetzen der Variablen var1 durch die Variable oder den Ausdruck var2 (<Strg>+ für fettgedrucktes =)

series,var[=z,m] Reihenentwicklung einer oder mehrer Variablen var um den Punkt z mit der Ordnung m Standardeinstellung: z = 0 und m = 6

Page 12: Skriptum_Mathcad

- 9 -

Schlüsselwort Funktion

convert, parfrac,var

Partialbruchzerlegung nach der im Nenner des Ausdrucks stehenden Variablen var

fourier,var Fourier-Transformation eines Ausdruckes bezüglich der Variablen var in eine Funktion der Variablen ω

∫∞+

∞−

− dtetf tiω)(

invfourier,var Inverse Fourier-Transformation eines Ausdruckes bezüglich der Variablen var in eine Funktion der Variablen t

∫∞+

∞−

ωωπ

ω deF21 ti)(

laplace,var Laplace-Transformation eines Ausdruckes bezüglich der Variablen var in eine Funktion der Variablen s

∫∞+

0

ts dtetf )(

invlaplace,var Inverse Laplace-Transformation eines Ausdruckes bezüglich der Variablen var in eine Funktion der Variablen t

∫+

ωσ

ωσπ

i

i

ts dsesF21 )(

ztrans,var Z-Transformation eines Ausdruckes bezüglich der Variablen var in eine Funktion der Variablen z

∑∞+

=0n

nznf )(

invztrans,var Inverse Z-Transformation eines Ausdruckes bezüglich der Variablen var in eine Funktion der Variablen n in Form eines Konturintegrals um den Nullpunkt

∫ −

C

1n dzzzFi21 )(π

Dabei ist C eine Kontur um alle singulären Punkte des Integranden )(zF

Page 13: Skriptum_Mathcad

- 10 -

Schlüsselwort Funktion

assume,beding Auswertung eines Ausdruckes unter Festlegen einer Nebenbedingung beding für eine oder mehrere Variablen

assume,var=real Auswertung eines Ausdruckes unter der Annahme alle Unbekannten seien reellwertig

assume,var= RealRange(a,b)

Auswertung eines Ausdruckes unter der Annahme alle Unbekannten seien reellwertig im Bereich der reellen Zahlen a und b

Page 14: Skriptum_Mathcad

- 11 -

Page 15: Skriptum_Mathcad

- 12 -

3.2) Benützung des Symbolic-Menüs

Im Menü Symbolic stehen folgende Prozeduren zur Verfügung:

Evaluate ►Simplify Expand Factor Collect Polynomial Coefficients

Variable ►Matrix ►

Transform ►

Evaluation Style...

Solve Substitute Differentiate Integrate

Expand to Series... Convert to Partial Fraction

Fourier Inverse Fourier

Laplace Inverse Laplace

Z Inverse Z

Transpose Invert Derminant

Symbolically < >F9 Floating Point ... Complex

Page 16: Skriptum_Mathcad

- 13 -

Benützung der Funktionen aus dem Symbolics-Menü:

Page 17: Skriptum_Mathcad

- 14 -

4) Vektoren und Matrizen: Erstellen durch:

a) Insert-Matrix-Kommando: • Menü Insert Matrix oder • Mathematik-Tool Bar oder • <Strg>M

b) Verwendung von Bereichsvariablen c) Einzelwertzuweisung an die indizierte Vektor- oder Matrizen-

Variable

d) Einlesen einer Werte-Datei, die Datei wird bei jeder Neuberechnung des Arbeitsblattes neu eingelesen: Menü Insert Component File Read or Write Read from a file ...

Auf den Platzhalter erfolgt die Eingabe des Namens der Vektor/Matrix-Variablen. Werte-Trennzeichen in einer Zeile der Datei: <Tab>

■■■ ■■■ ■■■

■■■ ■■■ ■■■

Page 18: Skriptum_Mathcad

- 15 -

e) Eingabe in eine Tabelle: Menü Insert Component Input Table Finish Auf den Platzhalter Eingabe der Vektor/Matrix-Variablen, in die Tabelle Eingabe der Werte

f) Importieren in eine Tabelle aus einer Datei, die Datei wird nur bei Wahl der Option Import eingelesen: Wie e) aber statt Werteeingabe Tabelle auswählen durch Anklicken rechte Maustaste Import ...

Page 19: Skriptum_Mathcad

- 16 -

Page 20: Skriptum_Mathcad

- 17 -

4.1) Operatoren

Operation Bild Taste

Multiplikation mit Skalar A⋅z *

Skalarprodukt zweier Vektoren u⋅v *

Matrix-Multiplikation A⋅B *

Vektor/Matrix-Multiplikation A⋅v *

Division durch Skalar A/z /

Addition eines Skalars A+z +

Vektor- und Matrix-Addition A+B +

Subtraktion eines Skalars A-z -

Vektor- und Matrix-Subtraktion A-B -

Negation von Vektor und Matrix -A -

Potenz einer quadrat. Matrix, Inverse (n=-1) Mn ^

Betrag eines Vektors |v| |

Determinante einer quadratischen Matrix |M| |

Transponierte Matrix AT <Strg>1

Kreuzprodukt zweier Dreielement-Vektoren u x v <Strg>8

Konjugiert komplexe Matrix (elementweise) A "

Summe aller Vektorelemente v∑ <Strg>4

Element per Element-Operation (Vectorize) Ar

<Strg>-

n-ter Spaltenvektor der Matrix A<n> <Strg>6

n-tes Vektorelement vn [

(m,n)-tes Matrixelement Am,n [

Page 21: Skriptum_Mathcad

- 18 -

4.2) Funktionen

4.2.1) Größe

Funktion Funktionsergebnis

rows(A) Anzahl der Zeilen des Feldes A

cols(A) Anzahl der Spalten des Feldes A

length(v) Anzahl der Elemente des Vektors v

last(v) Indexzahl des letzten Vektorelementes

max(A) Größtes Element des Feldes A

min(A) Kleinstes Element des Feldes A

Page 22: Skriptum_Mathcad

- 19 -

4.2.2) Spezielle Matrizen

Funktion Funktionsergebnis

identity(n) Einheitsmatrix I

Re(A) Feld der Realteile des Feldes A

Im(A) Feld der Imaginärteile des Feldes A

diag(v) Diagonalmatrix mit den Vektorelementen v

geninv(A) Linksinverse Matrix L von A, L⋅A=I

rref(A) Zeilenreduzierte Echelonform von A

Page 23: Skriptum_Mathcad

- 20 -

4.2.3) Funktionen zum Bilden von neuen Matrizen

Funktion Funktionsergebnis

augment(A,B,C,...) Matrix gebildet durch Nebeneinanderstellen von A, B, C, ... Die Matrizen A, B, C, ... müssen gleiche Zeilenanzahl besitzen

stack(A,B,C,...) Matrix gebildet durch Übereinanderstellen von A, B, C, ... Die Matrizen A, B, C, ... müssen gleiche Spaltenanzahl besitzen

submatrix(A,iz,jz,is,js) Submatrix bestehend aus den Elementen der Zeilen iz bis jz und der Spalten von is bis js der Matrix A iz > jz ... umgekehrte Zeilenanordnung is > js ... umgekehrte Spaltenanordnung

matrix(m,n,f) Matrix, bei der das i,j-te Element den Funktionswert f(i,j) enthält i = 0,1, ... m-1 j = 0,1, ... n-1 f muß bereits davor definiert sein

CreateMesh(F,[[s0], [s1],[t0],[t1],[sgrid], [tgrid],[fmap]])

Vektor dreier eingebetteter Matrizen, die die x-, y- und z-Koordinaten einer parametrischen Oberfläche definiert durch F darstellen. F ist eine dreielementige Vektorfunktion zweier Variablen.

CreateSpace(F,[[t0], [t1],[tgrid],[fmap]])

Vektor dreier eingebetteter Vektoren, die die x-, y- und z-Koordinaten einer Raumkurve definiert durch F darstellen. F ist eine dreielementige Vektorfunktion einer Variablen.

Page 24: Skriptum_Mathcad

- 21 -

Page 25: Skriptum_Mathcad

- 22 -

4.2.4) Charakteristische Matrixgrößen

Funktion Funktionsergebnis

tr(M) Spur der quadratischen Matrix M

rank(A) Rang der reellen Matrix A

norm1(M) L1-Norm der quadratischen Matrix M

norm2(M) L2-Norm der quadratischen Matrix M

norme(M) Euklidische Norm der quadratischen Matrix M

normi(M) Zeilensummen-Norm der quadratischen Matrix M

cond1(M) Kondition basierend auf der L1-Norm

cond2(M) Kondition basierend auf der L2-Norm

conde(M) Kondition basierend auf der euklidischen Norm

condi(M) Kondition basierend auf der Zeilensummennorm

Page 26: Skriptum_Mathcad

- 23 -

4.2.5) Eigenwerte und Eigenvektoren

Funktion Funktionsergebnis

eigenvals(M) Vektor der Eigenwerte der quadrat. Matrix M

eigenvec(M,z) normalisierter Eigenvektor für Eigenwert z von M

eigenvecs(M) Matrix der normalisierten Eigenvektoren von M, n-ter Spaltenvektor ist Eigenvektor des n-ten Eigenwertes nach eigenvals(M)

genvals(M,N) Vektor v der Eigenwerte des generalisierten Eigenwertproblems M⋅x = vi⋅N⋅x M,N ... quadrat., gleichgroße, reellw. Matrizen x ......... zum Eigenwert vi gehörender Eigenvektor

genvecs(M,N) Matrix der normalisierten Eigenvektoren zu den Eigenwerten in v := genvals(M,N)

Page 27: Skriptum_Mathcad

- 24 -

4.2.6) Zerlegung von Matrizen

Funktion Funktionsergebnis

cholesky(M) Untere Dreiecksmatrix L, so daß L⋅LT = M, benützt nur den oberen Dreiecksteil von M, dieser um die Diagonale gespiegelt muß eine positiv definite Matrix ergeben

qr(A) Matrix, die orthonormale Matrix Q neben der oberen Dreiecksmatrix R enthaltend, so daß A = Q⋅R

lu(M) Matrix, nebeneinander die quadratischen Matrizen P, L und U enthaltend, so daß P⋅M = L⋅U L ... untere Dreiecksmatrix U ... obere Dreiecksmatrix

svd(A) Matrix, übereinander die Matrizen U und V enthaltend, so daß A = U⋅diag(s)⋅VT A ... mxn reelwertiges Feld, wobei m ≥ n U ... obere mxn Submatrix V ... untere nxn Submatrix s ... Vektor s := svds(A)

svds(A) Vektor der singulären Werte von A A ... mxn reelwertiges Feld, wobei m ≥ n

Page 28: Skriptum_Mathcad

- 25 -

Page 29: Skriptum_Mathcad

- 26 -

Page 30: Skriptum_Mathcad

- 27 -

4.2.7) Sortier-Funktionen

sort(v) Sortiert die Elemente des Vektors v in aufsteigender Reihenfolge

csort(A,n) Sortiert die Zeilen der Matrix A entsprechend der Elemente der Spalte n in aufsteigender Reihenfolge

rsort(A,n) Sortiert die Spalten der Matrix A entsprechend der Elemente der Zeile n in aufsteigender Reihenfolge

reverse(v) Kehrt die Elementanordnung des Vektors v um

reverse(A) Kehrt die Zeilenanordnung der Matrix A um

Page 31: Skriptum_Mathcad

- 28 -

5) Schrittweise Berechnung (seeded iteration)

5.1) Eine Variable

Beispiel: Näherungsweise Lösung einer nichtlinearen Gleichung, wobei ein verbesserter Näherungswert aus dem vorhergehenden berechnet wird

Page 32: Skriptum_Mathcad

- 29 -

5.2) Mehrere Variable

Beispiel: Bilanzierung einer Bodenkolonne

0f

fNN

X,

&

&=

0g

gNN

Y,&

&=

x X1 X=+

y Y1 Y=+

i1+i xHy ⋅=

f,01+ii1+i N)X(XN && ⋅−=

g,01+ii1+i N)Y(YN && ⋅−=

N Ng,0 f,0..

Y X i+1i+1

X iYi

N.i+1

Page 33: Skriptum_Mathcad

- 30 -

Page 34: Skriptum_Mathcad

- 31 -

5.3 Vektor

Beispiel: Mehrfache Transformation eines Vektors, A ist die Transformationsmatrix

Page 35: Skriptum_Mathcad

- 32 -

Beispiel: Linearisierte Bilanzierung einer Bodenkolonne

f,01+ii1+i N)X(XN && ⋅−=

g,01+ii1+i N)Y(YN && ⋅−=

if,0

g,0i

f,0

g,01+i Y

N

NX)

N

NHX ⋅⋅+= −

&

&

&

&1(

Y H Xi+1 i= ⋅ linearisiert

iig,0

1+i Y+X-HNN

⋅=&

&

N Ng,0 f,0..

Y X i+1i+1

X iYi

N.i+1

Page 36: Skriptum_Mathcad

- 32 -

6) Funktionen

6.1) Mathcad-Funktionen

6.1.1) Transzendente Funktionen x, y ... rellwertige Ausdrücke m, n ..... Ordnung z ....... komplexwertiger Ausdruck a, b, c ... Parameter

Trigono-metrische

Hyper-bolische Bessel

Exponent. Logarithm. Spezielle

sin(z) sinh(z) J0(x) exp(z) erf(x)

cos(z) cosh(z) J1(x) ln(z) erfc(x)

tan(z) tanh(z) Jn(m,x) log(z[,b]) Γ(z)

cot(z) coth(z) js(n,x) Γ(x,y)

csc(z) csch(z) Y0(x) fhyper(a,b,c,x)

sec(z) sech(z) Y1(x) Her(n,x)

asin(z) asinh(z) Yn(x) ibeta(a,n,x)

acos(z) acosh(z) ys(n,x) Jac(n,a,b,x)

atan(z) atanh(z) I0(x) Lag(n,x)

atan2(x,y) acoth(z) I1(x) Leg(n,x)

acot(z) acsch(z) In(m,x) mhyper(a,b,x)

acsc(z) asech(z) K0(x) Tcheb(n,x)

asec(z) K1(x) Ucheb(n,x)

angle(x,y) Kn(m,x)

bei(n,x)

ber(n,x)

Ai(x)

Bi(x)

Page 37: Skriptum_Mathcad

- 33 -

6.1.2) Funktionen mit komplexen Zahlen

x,y ... rellwertige Ausdrücke z ...... komplexwertiger Ausdruck

Re(z) Realteil von z

Im(z) Imaginärteil von z

arg(z) Argument von z, -π ≤ arg(z) ≤ π

csgn(z) 0 ....... für z = 0 1 ....... für Re(z)>0 oder (Re(z)=0 und Im(z)>0) -1 ...... ansonsten

signum(z) 1 ....... für z = 0 z/|z| ... ansonsten

6.1.3) Stückweise kontinuierliche Funktionen

if(bed,tw,fw) tw .... wenn bed ≠ 0 (true) fw .... wenn bed = 0 (false) bed: w = z x > y x ≥ y w ≠ z x < y x ≤ y

δ(m,n) Kronecker’sche Deltafunktion 1 ...... für m = n 0 ...... ansonsten

ε(i,j,k) Antisymetrischer Tensor vom Rang 3 0 .... für zwei gleiche Werte i, j, k 1 .... für gerade Permutationen -1 ... für ungerade Permutationen i, j, k ... zwischen ORIGIN und ORIGIN+2

Φ(x) Heaviside Sprungfunktion 0 .... für x < 0 1 .... für x ≥ 0

sign(x) 0 .... für x = 0 1 .... für x > 0 -1 ... für x < 0

Page 38: Skriptum_Mathcad

- 34 -

6.1.4) Rundungsfunktionen

ceil(x) Kleinste Integerzahl ≥ x

floor(x) Größte Integerzahl ≤ x

round(x[,n]) Rundung von x auf n Dezimalstellen, n < 0 .... Rundung links vom Dezimalpunkt, n fehlt ... Rundung auf nächste Integerzahl

trunc(x) Abschneiden der Nachkommastellen von x

6.1.5) Funktionen der Zahlentheorie und Kombinatorik

combin(n,k) Anzahl der Kombinationen von n Objekten in k Elementen; k,n ganze Zahlen 0 ≤ k ≤ n

permut(n,k) Anzahl der Permutationen von n Objekten in k Elementen; k,n ganze Zahlen 0 ≤ k ≤ n

lcm(A,B,C,...) Kleinstes gemeinsames Vielfaches

gcd(A,B,C,...) Größter gemeinsamer Nenner von A, B, C,..

mod(x,y) Divisionsrest nach x/y

Page 39: Skriptum_Mathcad

- 35 -

6.1.6) Diskrete Transformationsfunktionen

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

Page 40: Skriptum_Mathcad

- 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

linterp(vx,vy,x) Lineare Interpolation

lspline(vx,vy) pspline(vx,vy) cspline(vx,vy) interp(vs,vx,vy,x)

Kubische Spline-Interpolation von Kurven ⇒ vs mit geraden Randabschnitten ⇒ vs mit parabol. Randabschnitten ⇒ vs mit kub. Randabschnitten ⇒ y für x

lspline(Mxy,Mz) pspline(Mxy,Mz) cspline(Mxy,Mz) interp(vs,Mxy,Mz,v)

Kubische Spline-Interpolation von Oberflächen⇒ vs mit geraden Randabschnitten ⇒ vs mit parabol. Randabschnitten ⇒ vs mit kub. Randabschnitten ⇒ z für v

bspline(vx,vy,u,n) interp(vs,vx,vy,x)

B-Spline-Interpolation von Kurven ⇒ vs für B-Spline der Ordnung n ⇒ y für x

predict(v,m,n)

Lineare Vorhersage ⇒ Vektor der Vorhersagewerte m ... Anzahl der letzten Datenwerte im Vektor

v als Vorhersagebasis n .... Anzahl der Vorhersagewerte

Page 41: Skriptum_Mathcad

- 37 -

6.1.8) Regression vx .......... Vektor der Abszissenwerte der Stützpunkte vy .......... Vektor der Ordinatenwerte der Stützpunkte span ...... maximaler Ordinatenabstand der Fitkurve von den

Datenpunkten vs .......... Vektor der Polynomkoeffizienten x ............ Abszisse des zu interpolierenden Punktes Mxy ....... nx2-Matrix der Abszissen- und Ordinatenwerte der

Stützpunkte vz .......... n-Element-Vektor der z-Werte der Stützpunkte v ............ Vektor des zu interpolierenden Punktes in der xy-Ebene a,b,c ....... Fitparameter der spezialisierten Regression F ............ Vektor von Fitfunktionen vg .......... Vektor von Startwerten für die Fitparameter a,b,c der

spezialisierten Regression, bzw. die Fitparameter in F

intercept(vx,vy) slope(vx,vy) line(vx,vy) stderr(vx,vy) medfit(vx,vy)

Lineare Regression ⇒ Ordinatenabschnitt der Fitgeraden ⇒ Neigung der Fitgeraden ⇒ Ordinatenabschnitt und Neigung ⇒ Standard-Fehlerabweichung ⇒ Ordinatenabschnitt und Neigung für

Median-Median-Regression

regress(vx,vy,n) loess(vx,vy,span) interp(vs,vx,vy,x)

Polynom-Regression einer Kurve ⇒ vs für Polynom n-ter Ordnung ⇒ vs für Satz von Polynomen 2. Ordnung ⇒ y für x

regress(Mxy,vz,n) loess(Mxy,vz,span) interp(vs,Mxy,vz,v)

Polynom-Regression einer Oberfläche ⇒ vs für Polynom n-ter Ordnung ⇒ vs für Satz von Polynomen 2. Ordnung ⇒ z für v

Page 42: Skriptum_Mathcad

- 38 -

expfit(vx,vy,vg)

lgsfit(vx,vy,vg)

logfit(vx,vy,vg)

pwrfit(vx,vy,vg)

sinfit(vx,vy,vg)

Spezialisierte Regression ⇒ Vektor der Fitparameter a,b,c

der Fitfunktion a⋅exp(b⋅x) + c ⇒ Vektor der Fitparameter a,b,c

der Fitfunktion a/[1+b⋅exp(-c⋅x)] ⇒ Vektor der Fitparameter a,b,c

der Fitfunktion a⋅ln(x)b + c ⇒ Vektor der Fitparameter a,b,c

der Fitfunktion a⋅xb + c ⇒ Vektor der Fitparameter a,b,c

der Fitfunktion a⋅sin(x + b) + c linfit(vx,vy,F)

genfit(vx,vy,vg,F)

Generalisierte Regression ⇒ Vektor der Koeffizienten für die

Linearkombinationen der Fi ⇒ Vektor der Fitparameter in F

6.1.9) Zugriff auf Textdateien datei ..... Name [und Pfad] einer strukturierten ASCII-Datendatei als

Zeichenkette in Anführungszeichen oder als Textvariable. Bei einer Eingabedatei müssen die Datenwerte in einer Zeile durch Tabulatorzeichen getrennt sein und in jeder Zeile müssen gleich viele Datenwerte stehen

READPRN(datei) Liest die Datei auf eine Matrix, wobei die Zeilen der Datei in die Zeilen der Matrix eingetragen werden, z.B.: A:=READPRN(datei)

WRITEPRN(datei) Die Zeilen einer Matrix werden in die Zeilen einer Datei ausgegeben, z.B.: WRITEPRN(datei):=A

APPENDPRN(datei) Eine Matrix wird an eine bestehende Datei, die die gleiche Spaltenanzahl haben muß, angehängt, z.B.: APPENDPRN(datei):=A

Page 43: Skriptum_Mathcad

- 39 -

6.1.10) Weitere Funktionen

• Glättungsfunktionen • Statistische Funktionen • Wahrscheinlichkeits-Verteilungsfunktionen • Finanztechnische Funktionen • Funktionen zur Datentypermittlung • Funktionen zur Behandlung von Zeichenketten • Funktionen zum Lesen und Schreiben von Bilddateien • Funktionen zur Verwendung mit 3D-Diagrammen

Page 44: Skriptum_Mathcad

- 40 -

6.2) Definition einer Benützerfunktion durch einen Ausdruck

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,....)

definierteAusdrücke

formale Parameterder Funktion

formale Funktionsaufrufe, mit Parametern v1,v2,....

und/oder definierten Ausdrücken

formale Parameterder Funktion

formale Funktionsnamen

beliebiger Name für die zu definierende Funktion

aktuelle, vollständig definierte Ausdrücke

aktuelle Funktionsnamen von Mathcad-Funktionen oder

definierten Benützerfunktionen

Page 45: Skriptum_Mathcad

- 41 -

7) Programmierung

Page 46: Skriptum_Mathcad

- 42 -

7.1) Bedingungsanweisungen

Funktionsdefinition f( )x

Bei selektiertem Platzhalter klick "Add Line"

f( )x

Bei selektiertem oberen Platzhalter klick "if"

f( )x if

Eingabe auf die selektierten oberen Platzhalter

f( )x if0 >x 2

Bei selektiertem unteren Platzhalter klick "otherwise"

f( )x if0 >x 2

otherwise

Eingabe auf den selektierten unteren Platzhalter

f( )x if0 >x 2

otherwise4 x2

Page 47: Skriptum_Mathcad

- 43 -

Page 48: Skriptum_Mathcad

- 44 -

7.2) Schleifenanweisungen

7.2.1) While-Schleife

Klick "While" while

Eingabe bei selektiertem oberen bzw. unteren Platzhalter

while

j

vj Grenzwert

Bei selektiertem unteren j klick "←"

while

j

vj Grenzwert

Eingabe auf den selektierten rechten unteren Platzhalter

while

j j 1

vj Grenzwert

Anfügen einer weiteren Programmzeile: Bei selektiertem gesamten unteren Ausdruck klick "Add Line"

while

j j 1

vj Grenzwert

Page 49: Skriptum_Mathcad

- 45 -

Page 50: Skriptum_Mathcad

- 46 -

Page 51: Skriptum_Mathcad

- 47 -

7.2.2) For-Schleife

Klick "For" for ∈

Eingabe bei selektiertem linken oberen Platzhalter

for ∈i

Eingabe des Bereiches bei selektiertem rechten oberen Platzhalter

for ∈i ..1 n

Eingabe auf den selektierten unteren Platzhalter und Klicken ←

for

s

∈i ..1 n

Eingabe des Ausdruckes auf den selektierten unteren Platzhalter

for

s s i

∈i ..1 n

Page 52: Skriptum_Mathcad

- 48 -

Page 53: Skriptum_Mathcad

- 49 -

7.3) Rekursive Programmierung

Page 54: Skriptum_Mathcad

- 50 -

7.4) Programmablauf-Kontrolle

7.4.1) Vorzeitige Beendigung eines Schleifendurchlaufes

Selektiere Platzhalter

Klick "if"

Klick "continue"

Trage Bedingung ein

if

if continue

Page 55: Skriptum_Mathcad

- 51 -

7.4.2) Vorzeitige Beendigung einer Schleife

Selektiere Platzhalter

Klick "if"

Klick "break"

Trage Bedingung ein

if

break if

Page 56: Skriptum_Mathcad

- 52 -

7.4.3) Vorzeitige Beendigung eines Programms

Selektiere Platzhalter

Klick "if"

Klick "return" Trage Rückgabewert und Bedingung ein

if

return if

Page 57: Skriptum_Mathcad

- 53 -

7.4.4) Fehlerbehandlung

Anweisung für die Fehlerbehandlung: "on error"

Selektiere Platzhalter

Klick "on error", trage normal auszuführende Anweisung ein

Trage Anweisung für den Fehlerfall ein

Anweisung zur Ausgabe von Fehlertext: "error()"

Selektiere Platzhalter

Klick "if" Trage "error" mit Fehlertext ein

Trage Fehlerbedingung ein

on error

on error anweisung

if

error(“Fehlertext“) if

Page 58: Skriptum_Mathcad

- 54 -

Page 59: Skriptum_Mathcad

- 55 -

Page 60: Skriptum_Mathcad

- 56 -

8) Gleichungslösung

8.1) Lineare Gleichungen

Gleichungssystem M⋅x = a

8.1.1) Mittels invertierter Koeffizientenmatrix x := M-1⋅a

8.1.2) Mittels der Funktion lsolve x := lsolve(M,a)

Page 61: Skriptum_Mathcad

- 57 -

8.2) Nichtlineare Gleichungen Vorgabe der Genauigkeit durch TOL := epsilon Voreingestellter Wert TOL ≡ 10-3

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) = Ergebnis root(ausdr,var,a,b) = Ergebnis

Variablendefinition für Ergebnis

var := Startwert erg := root(ausdr,var) erg = Ergebnis

erg := root(ausdr,var,a,b) 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)

Variable, die in ausdr enthalten sind

Wenn vorhanden = Startwert, ansonsten vorher lokale Startwertdefinition

Beliebiger Funktionsname

Page 62: Skriptum_Mathcad

- 58 -

Lösungsbereich-Vorgabe fun(v1,v2,...) := root(ausdr,var,a,b)

fun kann in weiteren Ausdrücken verwendet werden, die Parameter müssen definiert sein:

Startwert-Vorgabe V1 := ausdr1 V2 := ausdr2 . . . . . fun(Startwert,V1,V2,...) = Ergebnis erg := fun(Startwert,V1,V2,...) Variable := ausdr{fun(Startwert,V1,V2,...)}

Lösungsbereich-Vorgabe V1 := ausdr1 V2 := ausdr2 . . . . . fun(V1,V2,...) = Ergebnis erg := fun(V1,V2,...) Variable := ausdr{fun(V1,V2,...)}

Die Bereichsgrenzen a und b müssen vor Verwendung der Funktion fun durch die Größen V1,V2, ... definiert sein!

Die Root-Funktion liefert auch bei mehreren Nullstellen immer nur ein Ergebnis. Dabei hängt die gefundene Nullstelle entweder von der Startwert- oder der Lösungsbereich-Vorgabe ab. Der iterative Lösungsprozess wird beendigt, wenn die Differenz zweier aufeinanderfolgende Näherungswerte für var kleiner als TOL ist.

Variable, die in ausdr und/oder a und/oder b enthalten sind

Beliebiger Funktionsname

Page 63: Skriptum_Mathcad

- 59 -

Page 64: Skriptum_Mathcad

- 60 -

8.2.1) polyroots-Funktion

Suche aller Nullstellen eines Polynoms für eine Variable mit numerischem Ergebnis.

Polynom: 011

1 axaxaxaP nn

nnn ++++= −

− K

Koeffizienten-Vektor: T),,,,( nn aaaaV 110 −= K

Nullstellen-Vektor: N := polyroots(V)

Die Vorgabe eines Startwertes ist nicht erforderlich.

Page 65: Skriptum_Mathcad

- 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

Page 66: Skriptum_Mathcad

- 62 -

Funktionsdefinition für Ergebnis am Beispiel von Find fun([var1,var2,...]va,vb,...) := Find(var1,var2,...)

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.

Variable, die in den Gleichungen enthalten sind

Wenn vorhanden = Startwerte,sonst lokale Startwertdefinition

Page 67: Skriptum_Mathcad

- 63 -

Page 68: Skriptum_Mathcad

- 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.

Page 69: Skriptum_Mathcad

- 65 -

Page 70: Skriptum_Mathcad

- 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

Page 71: Skriptum_Mathcad

- 67 -

Beispiele für einzelne gewöhnliche Differentialgleichungen:

Page 72: Skriptum_Mathcad

- 68 -

Page 73: Skriptum_Mathcad

- 69 -

Beispiel für ein System zweier DGL 1.Ordnung:

[ ] )()()()()()( txtxtxtxtxtx 02

12

0100 +−−=′ µ 0(0)0 =x

[ ] )()()()()()( txtxtxtxtxtx 12

12

0011 +−+=′ µ 101 =)(x

Page 74: Skriptum_Mathcad

- 70 -

Beispiel für ein System zweier DGL 2.Ordnung:

)()( xxu ν2=′′ 510 ,)( =u 510 ,)( =′u

)()()( xuxx 24 −=′′ νν 10 =)(ν 10 =′ )(ν

Page 75: Skriptum_Mathcad

- 71 -

9.1.2.1.2) Spezialisierte Differentialgleichungslöser

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.

Runge-Kutta-Methode mit variabler Schrittweite:

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.

Lösungsmethoden für "steife" Systeme:

Z := Stiffb(y,xo,xm,m,D,J) Bulirsch-Stoer

Z := Stiffr(y,xo,xm,m,D,J) Rosenbrock

J(x,y) ..... Matrixfunktion mit n×(n+1) Elementen, die ersteSpalte enthält die Ableitungen ∂

∂Dx ,

die restliche n×n-Matrix enthält die Jakobi-Matrix ∂

∂Dyk

, z.B.:

D =

− 01

12 yyyx

J(x,y) =

−− 01

1220

0yyxy

Page 76: Skriptum_Mathcad

- 72 -

Methoden, die Lösungen für weniger Punkte liefern, als Stützstellen vorhanden sind:

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

Mit diesen Methoden kann die Lösungsmatrix Z klein gehalten werden, bzw. die Rückgabe kann auf die Lösung nur im Endpunkt beschränkt werden.

Page 77: Skriptum_Mathcad

- 73 -

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

Page 78: Skriptum_Mathcad

- 74 -

Page 79: Skriptum_Mathcad

- 75 -

9.1.2.2.2) Vorgegebene Werte an den Bereichsenden und in einem Zwischenpunkt

Die Lösungsfunktion wird gleichzeitig von beiden Bereichsenden her entwickelt. Dies erfolgt iterativ so lange bis die vorgegebenen Bedingungen im Zwischenpunkt xi erfüllt werden. Danach steht der vollständige Satz von Anfangsbedingungen in xo und xm für einen der vorhandenen Gleichungslöser zur Verfügung:

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

Page 80: Skriptum_Mathcad

- 76 -

Mit der Funktion "bvalfit" lassen sich auch Probleme lösen, bei denen im Lösungsbereich eine Unstetigkeitsstelle vorhanden ist:

a) Berechnung der fehlenden Anfangsbedingungen in den Randpunkten:

Page 81: Skriptum_Mathcad

- 77 -

b) Berechnung der Lösungsfunktionen aus zwei Anfangswertproblemen:

Page 82: Skriptum_Mathcad

- 78 -

9.2) Partielle Differentialgleichungen

Laplace-Gleichung 02

2

2

2=

∂∂

+∂∂

yu

xu

Poisson-Gleichung ),( yxyu

xu ρ=

∂∂

+∂∂

2

2

2

2

Finite Differenzen-Verfahren:

Für einen quadratischen Bereich, d.h. für n×n Stützpunkte (n ungerad-zahlig) gilt

kjkjkjkjkjkjkjkjkjkjkj fueuducubua ,,,,,,,,,,, =++++ −+−+ 1111

9.2.1) Alle Randwerte = 0

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.

Page 83: Skriptum_Mathcad

- 79 -

Beispiel zur Anwendung der Funktion "multigrid":

Page 84: Skriptum_Mathcad

- 80 -

9.2.2) Randwerte nicht gleich groß

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 aj k,

b ............. Quadratische Matrix der Koeffizienten bj k,

c .............. Quadratische Matrix der Koeffizienten cj k,

d ............. Quadratische Matrix der Koeffizienten d j k,

e .............. Quadratische Matrix der Koeffizienten ej 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

Page 85: Skriptum_Mathcad

- 81 -

Beispiel zur Anwendung der Funktion "relax":

Page 86: Skriptum_Mathcad

- 82 -

10) Zweidimensionale Diagramme

10.1) x-y-Diagramm Erstellen: Cursorkreuz für linke obere Ecke des

Diagrammbereiches setzen und Taste @ oder Menüleiste Insert ... Graph ... X-Y Plot oder Math Toolbar ... Graph Toolbar ...

Formatieren: mit Cursor im Diagramm Doppel-Klicken oder mit Cursor im Diagramm Einfach-Klicken Menüleiste ... Format ... Graph ... X-Y Plot

X-Y Plot

Graph Variable

Variable

Page 87: Skriptum_Mathcad

- 83 -

Page 88: Skriptum_Mathcad

- 84 -

Page 89: Skriptum_Mathcad

- 85 -

Page 90: Skriptum_Mathcad

- 86 -

Zoomen eines Diagrammteilbereiches: • Diagramm selektieren: mit Cursor im Diagrammbereich

klicken • Menüleiste ... Format ... Graph ... Zoom...

oder Math Toolbar ... Graph Toolbar ... Zoom • Es erscheint die Zoom-Dialogbox, die, wenn nötig, anders

positioniert werden kann • Mit gedrückter linker Maustaste den gewünschten

Rechteckausschnitt ziehen • Die Ausschnittkoordinaten erscheinen in der Zoom-Dialogbox • Den "Zoom"-Knopf in der Dialogbox anklicken, es erscheint

der vergrößerte Diagrammausschnitt • Mit dem "OK"-Knopf die Vergrößerung fixieren

Page 91: Skriptum_Mathcad

- 87 -

Auslesen von Plot-Koordinaten: • Diagramm selektieren: mit Cursor im Diagrammbereich

klicken • Menüleiste ... Format ... Graph ... Trace...

oder Math Toolbar ... Graph Toolbar ... Trace • Es erscheint die Trace-Dialogbox, die, wenn nötig, anders

positioniert werden kann • Mit linker Maustaste in das Diagramm klicken • Es erscheint ein Achsenkreuz und die zugehörigen

Koordinatenwerte in der Trace-Dialogbox • Mit gedrückter linker Maustaste kann das Achsenkreuz

verschoben werden • Wenn Track Data Points selektiert ist, springt das Achsen-

kreuz von Kurvenpunkt zu Kurvenpunkt ( Feineinstellung mit linker bzw. rechter Cursortaste)

• Wenn Track Data Points nicht selektiert ist, kann mit dem Achsenkreuz jeder beliebige Punkt im Diagramm angewählt weden

• Mit Copy X und Copy Y der Trace-Dialogbox können die X- bzw. Y-Koordinaten in die Zwischenablage ausgelesen werden

Page 92: Skriptum_Mathcad

- 88 -

10.2) Polar-Diagramm

Erstellen: Cursorkreuz für linke obere Ecke des Diagrammbereiches setzen und Taste <Strg>7 oder Menüleiste Insert ... Graph ... Polar Plot oder Math Toolbar ... Graph Toolbar ...

Formatieren: mit Cursor im Diagramm Doppel-Klicken oder mit Cursor im Diagramm Einfach-Klicken Menüleiste ... Format ... Graph ... Polar Plot

Polar Plot

Graph ToolbarVariablen für radiale Werte

Winkel-Variable

Page 93: Skriptum_Mathcad

- 89 -

Page 94: Skriptum_Mathcad

- 90 -

Page 95: Skriptum_Mathcad

- 91 -

11) Dreidimensionale Diagramme

Folgende Diagramme können erstellt werden: • Oberflächen-Diagramm • Kontur-Diagramm • Balken-Diagramm • Punkthaufen-Diagramm • Vektorfeld-Diagramm

Erstellen mit dem 3D-Plot-Helfer: • Cursorkreuz für linke obere Ecke des Diagrammbereiches

setzen • Menüleiste Insert ... Graph ... 3D Plot Wizard

Page 96: Skriptum_Mathcad

- 92 -

Die Verdrehung und Neigung des Achsenkreuzes bzw. des Diagramms kann außer mit dem Formatiermenü General (siehe Formatieren) direkt mit der Maus durchgeführt werden: Mit dem Mauszeiger an einer Stelle im inneren Diagrammbereich und gedrückter linker Maustaste Ziehen in beliebige Richtung.

3-Spalten-Matrix mit den x-, y- und z-Werten oder Vektoren X,Y,Z

Page 97: Skriptum_Mathcad

- 93 -

Formatieren: mit Cursorkreuz im Diagramm Doppel-Klicken oder mit Cursor im Diagramm Einfach-Klicken Menüleiste ... Format ... Graph ... 3D Plot

Page 98: Skriptum_Mathcad

- 94 -

Page 99: Skriptum_Mathcad

- 95 -

Page 100: Skriptum_Mathcad

- 96 -

11.1) Oberflächen-Diagramm Erstellen: Cursorkreuz für linke obere Ecke des

Diagrammbereiches setzen und Taste <Strg>2 oder Menüleiste Insert ... Graph ... Surface Plot oder Math Toolbar ... Graph Toolbar ...

3-Spalten-Matrix mit den x-, y- und z-Werten oder Vektoren X,Y,Z

Surface Plot

Graph Toolbar

Page 101: Skriptum_Mathcad

- 97 -

Page 102: Skriptum_Mathcad

- 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 ...

Page 103: Skriptum_Mathcad

- 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:

Page 104: Skriptum_Mathcad

- 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 ...

Das Beispiel für das Konturdiagramm jetzt als 3D-Punkthaufen-Diagramm:

Page 105: Skriptum_Mathcad

- 101 -

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 ...

Beispiel für ein Vektorfeld-Diagramm:

Die komplexwertige Matrix enthält als Realteil die x-Komponenten und als Imaginärteil die y-Komponenten des Vektorfeldes:

Page 106: Skriptum_Mathcad

- 102 -

Stattdessen können auch zwei rellwertige Matrizen verwendet werden: