Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // Created by Dan on 14.10.2021.
- //Библиотека с некоторыми функциями матриц
- #ifndef LIBRARIES_OPERMATRIX_H
- #include <stdlib.h>
- #include <math.h>
- #define LIBRARIES_OPERMATRIX_H
- double** errorMatrix()
- {
- double **err;
- err=(double**)malloc(1*sizeof(double*));
- err[0]=(double*) malloc(1*sizeof (double));
- err[0][0]=0;
- return err;
- }
- double **sumMatrix(double **matrix1,double **matrix2,int lin1,int col1,int lin2,int col2)
- {
- if(lin1!=lin2 || col1!=col2){
- printf("ERROR: Sizes of matrixes are different!");
- return 0;
- }
- double **resMatrix;
- resMatrix=(double**)malloc(lin1*sizeof(double*));
- for(int i = 0;i<(lin1);i++){
- resMatrix[i]=(double*)malloc(col1*sizeof(double));
- for(int j = 0;j<col1;j++){
- resMatrix[i][j]=matrix1[i][j]+matrix2[i][j];
- }
- }
- return resMatrix;
- }
- double **subMatrix(double **matrix1,double **matrix2,int lin1,int col1,int lin2,int col2)
- {
- if(lin1!=lin2 || col1!=col2){
- printf("ERROR: Sizes of matrixes are different!");
- return errorMatrix();
- }
- double **resMatrix;
- resMatrix=(double**)malloc(lin1*sizeof(double*));
- for(int i = 0;i<(lin1);i++){
- resMatrix[i]=(double*)malloc(col1*sizeof(double));
- for(int j = 0;j<col1;j++){
- resMatrix[i][j]=matrix1[i][j]-matrix2[i][j];
- }
- }
- return resMatrix;
- }
- double **multiplyMatrix(double **matrix1,double **matrix2,int col1,int lin2)
- {
- if(col1!=lin2){
- printf("ERROR: Amount of 2 matrix lines is not equal to the amount of columns of 1 matrix");
- return errorMatrix();
- }
- double **resMatrix,buff;
- resMatrix=(double**)malloc(lin2*sizeof(double*));
- for(int i = 0;i<(lin2);i++){
- resMatrix[i]=(double*)malloc(col1*sizeof(double));
- }
- for(int i=0;i<lin2;i++){
- for (int j = 0; j < col1; j++) {
- for (int k = 0; k < col1; k++) {
- buff+=matrix1[i][k]*matrix2[k][j];
- }
- resMatrix[i][j]=buff;
- buff=0;
- }
- }
- return resMatrix;
- }
- double **transponirMatrix(double **matrix,int lin,int col){
- double **resMatrix;
- resMatrix=(double**)malloc(lin*sizeof(double*));
- for (int i = 0; i < lin; ++i) {
- resMatrix[i]=(double*)malloc(col*sizeof(double));
- for (int j = 0; j < col; ++j) {
- resMatrix[i][j]=matrix[j][i];
- }
- }
- return resMatrix;
- }
- #endif //LIBRARIES_OPERMATRIX_H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement