skriptum_mathcad
TRANSCRIPT
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
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
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
- 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
- 2 -
- 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)
- 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
- 5 -
- 6 -
- 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>< >. ⇒ ▪→
- 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
- 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
- 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
- 11 -
- 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
- 13 -
Benützung der Funktionen aus dem Symbolics-Menü:
- 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>
■■■ ■■■ ■■■
■■■ ■■■ ■■■
- 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 ...
- 16 -
- 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 [
- 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
- 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
- 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.
- 21 -
- 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
- 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)
- 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
- 25 -
- 26 -
- 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
- 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
- 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
- 30 -
- 31 -
5.3 Vektor
Beispiel: Mehrfache Transformation eines Vektors, A ist die Transformationsmatrix
- 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
- 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)
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 41 -
7) Programmierung
- 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
- 43 -
- 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
- 45 -
- 46 -
- 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
- 48 -
- 49 -
7.3) Rekursive Programmierung
- 50 -
7.4) Programmablauf-Kontrolle
7.4.1) Vorzeitige Beendigung eines Schleifendurchlaufes
Selektiere Platzhalter
Klick "if"
Klick "continue"
Trage Bedingung ein
if
if continue
- 51 -
7.4.2) Vorzeitige Beendigung einer Schleife
Selektiere Platzhalter
Klick "if"
Klick "break"
Trage Bedingung ein
if
break if
- 52 -
7.4.3) Vorzeitige Beendigung eines Programms
Selektiere Platzhalter
Klick "if"
Klick "return" Trage Rückgabewert und Bedingung ein
if
return if
- 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
- 54 -
- 55 -
- 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)
- 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
- 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
- 59 -
- 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.
- 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 -
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
- 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 -
Beispiele für einzelne gewöhnliche Differentialgleichungen:
- 68 -
- 69 -
Beispiel für ein System zweier DGL 1.Ordnung:
[ ] )()()()()()( txtxtxtxtxtx 02
12
0100 +−−=′ µ 0(0)0 =x
[ ] )()()()()()( txtxtxtxtxtx 12
12
0011 +−+=′ µ 101 =)(x
- 70 -
Beispiel für ein System zweier DGL 2.Ordnung:
)()( xxu ν2=′′ 510 ,)( =u 510 ,)( =′u
)()()( xuxx 24 −=′′ νν 10 =)(ν 10 =′ )(ν
- 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
- 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.
- 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
- 74 -
- 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
- 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:
- 77 -
b) Berechnung der Lösungsfunktionen aus zwei Anfangswertproblemen:
- 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.
- 79 -
Beispiel zur Anwendung der Funktion "multigrid":
- 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
- 81 -
Beispiel zur Anwendung der Funktion "relax":
- 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
- 83 -
- 84 -
- 85 -
- 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
- 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
- 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
- 89 -
- 90 -
- 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
- 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
- 93 -
Formatieren: mit Cursorkreuz im Diagramm Doppel-Klicken oder mit Cursor im Diagramm Einfach-Klicken Menüleiste ... Format ... Graph ... 3D Plot
- 94 -
- 95 -
- 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
- 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 ...
Das Beispiel für das Konturdiagramm jetzt als 3D-Punkthaufen-Diagramm:
- 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:
- 102 -
Stattdessen können auch zwei rellwertige Matrizen verwendet werden: