⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matrix.h

📁 模糊聚类分析的源程序!
💻 H
字号:
/********************************************************//*   filename: matrix.h                                 *//*                                                      *//********************************************************//* programmed by: Oliver Wagner                         *//* last change:  (XXX: not updated)                     *//********************************************************/#ifndef _MATRIX_H#define _MATRIX_Hclass DMatrix;class DMatrixArray;#include <stdio.h>#include <stdlib.h>#include <math.h>#include "fehler.h"#include "vektor.h"#endif#ifndef _MATRIX_DATA#define _MATRIX_DATAconst int MAXIT = 50;const int ITERATIONEN = 10;const int KORITER = 10;const double BASIS = 2.0;const double MACH_EPS = 2.20446049250313e-016;class DMatrix{  friend DMatrixArray;    protected:  int m, n;			/* Hoehe, Breite der Matrix     */  double *Daten;		/* Zeilenweise Daten            */    public:    DMatrix (int mDim = 0, int nDim = 0, double *Inhalt = NULL);    DMatrix (const DMatrix & Daraus);   ~DMatrix ();  void print ();  void Setze_Dim (int Neues_m, int Neues_n);  inline int Lese_Dim_m () {    return (m);  };  inline int Lese_Dim_n () {    return (n);  };  void Einheitsmatrix (int Groesse);  void Einheitsmatrix ();  void NullMatrix ();  DMatrix Projiziere (BVektor & Diese);  DMatrix Projiziere (IVektor & Diese);  DMatrix Deprojiziere (BVektor & Diese);  DMatrix Gauss_Inverse ();  double Determinante ();  double Zeilensumme (int i);  void Tausche_Zeilen (int x, int y);  void Tausche_Spalten (int x, int y);  void Zeile_Multiplizieren (int Zeile, double Damit);  void Spalte_Multiplizieren (int Spalte, double Damit);  void Zeile_plus_Zeile (int Diese, int plusDiese, double Faktor);  DVektor Spalte_aus_Matrix (int i);  DVektor Zeile_aus_Matrix (int i);  void Setze_Spalte (int Die, DVektor & Damit);  inline double &Lese_i_j (int i, int j) {    return (Daten[i * n + j]);  };  void Setze_i_j (int i, int j, double Das) {    Daten[i * n + j] = Das;  };  void Addiere_i_j (int i, int j, double Das) {    Daten[i * n + j] += Das;  };  DVektorArray Eigenvektoren ();  DVektorArray Eigenvektoren (IVektor & cnt);  DMatrix Eigenmatrix ();  DMatrix Eigenmatrix (IVektor & cnt);  void Speichern (FILE * File);  int Laden (FILE * File);  void Quicksort (int a, int b, int Index);  void Tausche (DMatrix & Damit);    DMatrix & operator = (const DMatrix & Das);  void operator += (const DMatrix & Das);  void operator *= (double Das);  void operator /= (double Das);  char operator == (double Das);  char operator == (DMatrix & Das);  DMatrix operator + (DMatrix & Das);  DMatrix operator - (DMatrix & Das);  DVektor operator *(DVektor & Das);  DMatrix operator *(DMatrix & Das);  inline double *operator[] (int Zeile) {    return (&(Daten[n * Zeile]));  };  /* Rotationen: */  friend DMatrix d2_Rot (double alpha);  friend DMatrix d3_xRot (double alpha);  friend DMatrix d3_yRot (double alpha);  friend DMatrix d3_zRot (double alpha);    protected:  char Balance (DVektor & Skal, int &low, int &high);  char Elmhes (int low, int high, IVektor & perm);  void Elmtrans (int low, int high, IVektor & perm, DMatrix & Result);  char Hqr2 (int low, int high, DVektor & wr, DVektor & wi,	     DMatrix & eivec, IVektor & cnt);  char Hqrvec (int low, int high, DVektor & wr, DVektor & wi,	       DMatrix & eivec);  void Balback (int low, int high, DVektor & skal);  void Norm_1 (DVektor & wi);};DMatrix d2_Rot (double alpha);DMatrix d3_xRot (double alpha);DMatrix d3_yRot (double alpha);DMatrix d3_zRot (double alpha);class DMatrixArray{  int m, n;			/* Hoehe,Breite der Matrizen    */  int Groesse;			/* Soviele Matrizen             */  DMatrix **Daten;		/* Zeiger-Array auf DMatrizen   */    public:    DMatrixArray (int ArrayGroesse = 0, int mDim = 0, int nDim = 0, DMatrix * Inhalt = NULL);    DMatrixArray (const DMatrixArray & Daraus);   ~DMatrixArray ();  void print ();  void Setze_Groesse (int Neue_Groesse);  void Setze_Dim (int Neues_m, int Neues_n);  void Setze_Groesse_Dim (int Neue_Groesse, int Neues_m, int Neues_n);  inline int Lese_Dim_m () {    return (m);  };  inline int Lese_Dim_n () {    return (n);  };  inline int Lese_Groesse () {    return (Groesse);  };  void NullMatrix ();  DMatrixArray Projiziere (BVektor & Diese);  DMatrixArray Projiziere (IVektor & Diese);  DMatrixArray Deprojiziere (BVektor & Diese);  inline DMatrix *Lese_Matrix_Pointer (int Nummer) {    return (Daten[Nummer]);  };  void Setze_Matrix (int Nummer, DMatrix & Damit);  inline void Setze_i_j (int Nummer, int i, int j, double Damit) {    Daten[Nummer]->Setze_i_j (i, j, Damit);  };  inline double &Lese_i_j (int Nummer, int i, int j) {    return (Daten[Nummer]->Lese_i_j (i, j));  };  void Speichern (FILE * File);  int Laden (FILE * File);  void Tausche (DMatrixArray & Damit);  void operator = (const DMatrixArray & Das);  void operator += (DMatrix & Die);  inline DMatrix & operator[] (int i) {    return (*Daten[i]);  };};void swap (double &a, double &b);#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -