Advertisement
DanikKUL

Библиотека с некоторыми функциями матриц

Oct 14th, 2021
1,266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //
  2. // Created by Dan on 14.10.2021.
  3. //Библиотека с некоторыми функциями матриц
  4.  
  5. #ifndef LIBRARIES_OPERMATRIX_H
  6. #include <stdlib.h>
  7. #include <math.h>
  8. #define LIBRARIES_OPERMATRIX_H
  9. double** errorMatrix()
  10. {
  11.     double **err;
  12.     err=(double**)malloc(1*sizeof(double*));
  13.     err[0]=(double*) malloc(1*sizeof (double));
  14.     err[0][0]=0;
  15.     return err;
  16. }
  17. double **sumMatrix(double **matrix1,double **matrix2,int lin1,int col1,int lin2,int col2)
  18. {
  19.     if(lin1!=lin2 || col1!=col2){
  20.         printf("ERROR: Sizes of matrixes are different!");
  21.         return 0;
  22.     }
  23.     double **resMatrix;
  24.     resMatrix=(double**)malloc(lin1*sizeof(double*));
  25.     for(int i = 0;i<(lin1);i++){
  26.         resMatrix[i]=(double*)malloc(col1*sizeof(double));
  27.         for(int j = 0;j<col1;j++){
  28.             resMatrix[i][j]=matrix1[i][j]+matrix2[i][j];
  29.         }
  30.     }
  31.     return resMatrix;
  32. }
  33. double **subMatrix(double **matrix1,double **matrix2,int lin1,int col1,int lin2,int col2)
  34. {
  35.     if(lin1!=lin2 || col1!=col2){
  36.         printf("ERROR: Sizes of matrixes are different!");
  37.         return errorMatrix();
  38.     }
  39.     double **resMatrix;
  40.     resMatrix=(double**)malloc(lin1*sizeof(double*));
  41.     for(int i = 0;i<(lin1);i++){
  42.         resMatrix[i]=(double*)malloc(col1*sizeof(double));
  43.         for(int j = 0;j<col1;j++){
  44.             resMatrix[i][j]=matrix1[i][j]-matrix2[i][j];
  45.         }
  46.     }
  47.     return resMatrix;
  48. }
  49. double **multiplyMatrix(double **matrix1,double **matrix2,int col1,int lin2)
  50. {
  51.     if(col1!=lin2){
  52.         printf("ERROR: Amount of 2 matrix lines is not equal to the amount of columns of 1 matrix");
  53.         return errorMatrix();
  54.     }
  55.     double **resMatrix,buff;
  56.     resMatrix=(double**)malloc(lin2*sizeof(double*));
  57.     for(int i = 0;i<(lin2);i++){
  58.         resMatrix[i]=(double*)malloc(col1*sizeof(double));
  59.     }
  60.     for(int i=0;i<lin2;i++){
  61.         for (int j = 0; j < col1; j++) {
  62.             for (int k = 0; k < col1; k++) {
  63.                 buff+=matrix1[i][k]*matrix2[k][j];
  64.             }
  65.             resMatrix[i][j]=buff;
  66.             buff=0;
  67.         }
  68.     }
  69.     return resMatrix;
  70. }
  71. double **transponirMatrix(double **matrix,int lin,int col){
  72.     double **resMatrix;
  73.     resMatrix=(double**)malloc(lin*sizeof(double*));
  74.  
  75.     for (int i = 0; i < lin; ++i) {
  76.         resMatrix[i]=(double*)malloc(col*sizeof(double));
  77.         for (int j = 0; j < col; ++j) {
  78.             resMatrix[i][j]=matrix[j][i];
  79.         }
  80.     }
  81.     return resMatrix;
  82. }
  83. #endif //LIBRARIES_OPERMATRIX_H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement