MF_ratinterpolMD_ratinterpolME_ratinterpol
Funktiondiagonal-rationale Interpolation von Matrix-Elementen
Syntax C/C++#include <MFstd.h>
void MF_ratinterpol( fMatrix MZ, fVector X, fVector Y, ui ht, ui len, fVector XTab, fVector YTab, fMatrix MZTab, ui httab, ui lentab, unsigned degX, unsigned degY );
C++ VecObj#include <OptiVec.h>
void matrix<T>::ratinterpol( const vector<T>& X, const vector<T>& Y, const vector<T>& XTab, const vector<T>& YTab, const matrix<T>& MZTab, unsigned degX, unsigned degY );
Pascal/Delphiuses MFstd;
procedure MF_ratinterpol( MZ:fMatrix; X, Y:fVector; ht, len:UIntSize; XTab, YTab:fVector; MZTab:fMatrix; httab, lentab, degX, degY:UInt );
BeschreibungFür jedes der ht * len Elemente des durch X und Y aufgespannten Koordinatensystems wird ein MZ-Wert gewonnen durch diagonal-rationale Interpolation einer Tabelle. Diese Tabelle muß in Form von XTab-YTab-MZTab-Werten vorliegen. XTab und YTab müssen geordnet sein (strikt aufsteigend oder abfallend). Außerdem müssen jeweils alle Werte von XTab und YTab verschieden sein (es können keine zwei MZTab-Werte zu ein- und demselben XTab- bzw. YTab- Wert gehören!). Andernfalls droht Programmabbruch durch eine Division durch 0.
Der Parameter degX bezeichnet die Anzahl von in die Interpolation in X-Richtung einbezogenen Punkten. Entsprechend bezeichnet degY die Anzahl von in die Interpolation in Y-Richtung einbezogenen Punkten. Als Interpolationsfunktion wird der Quotient zweier Polynome verwendet, wobei das Polynom im Nenner von demselben Grad (bei geradem deg) oder um einen Grad höher ist (bei ungeradem deg) als das Polynom im Zähler. Diese Art der Interpolation ist insbesondere dann, wenn Polstellen vorhanden sind, der Polynom-Interpolation überlegen, allerdings deutlich langsamer als diese.
degX und degY müssen zwischen 3 und 20 liegen. Außerdem muß lentab mindestens degX+1 betragen und httab mindestens degY+1.
FehlerbehandlungEine Polstelle (d.h. ein Wert von Unendlich) in der Interpolationsfunktion wird als SING-Fehler behandelt mit dem Ergebnis ±HUGE_VAL. (Der in C/C++ an _matherr übergebene x-Wert ist dabei das erste Element von XTab, falls die Polstelle bei der Interpolation in X-Richtung auftritt, oder das erste Element von YTab, falls die Polstelle bei der Interpolation in Y-Richtung auftritt). Werte von degX oder degY > 20 führen zu einer Fehlermeldung "Not possible with more than 20 elements" und zum Programmabbruch. Wenn degX oder degY < 3 sind, wenn degX größer ist als lentab-1 oder degY größer als httab-1, wird die Meldung "Invalid parameter(s)" ausgegeben und das Programm ebenfalls abgebrochen.
Andere Fehler werden nicht abgefangen (Sie sind also selbst dafür verantwortlich, daß alle XTab- und YTab-Werte verschieden sind.)
Rückgabewertkeiner
QuerverweisMF_polyinterpol,   MF_natCubSplineInterpol,   VF_ratinterpol

MatrixLib Inhaltsverzeichnis  OptiVec Home