#include <stdio.h>
#include <math.h>
double Norm_1(double A[][25], int m, int n);
double Norm_F(double A[][25], int m, int n);
double Norm_inf(double A[][25], int m, int n);
int main(){
int n, m;
double a[25][25];
scanf("%d%d", &m, &n);
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
scanf("%lf", &a[i][j]);
}
}
printf("%lf %lf %lf\n", Norm_1(a, m, n), Norm_F(a, m, n), Norm_inf(a, m, n));
}
double Norm_1(double a[][25], int m, int n){
double li[n];
for (int j=0; j<n; j++) {
li[j] = 0;
for (int i=0; i<m; i++) {
li[j] += fabs(a[i][j]);
}
}
double ret = li[0];
for (int k=1; k<n; k++ ) {
if (li[k] > ret)
ret = li[k];
}
return ret;
}
double Norm_F(double a[][25], int m, int n){
double ret=0;
for (int i=0; i<m; i++) {
for (int j=0; j<n; j++) {
ret += pow(a[i][j], 2);
}
}
return sqrt(ret);
}
double Norm_inf(double a[][25], int m, int n){
double lt[m];
for (int i=0; i<m; i++) {
lt[i] = 0;
for (int j=0; j<n; j++) {
lt[i] += fabs(a[i][j]);
}
}
double ret = lt[0];
for (int k=1; k<m; k++ ) {
if (lt[k] > ret)
ret = lt[k];
}
return ret;
}
三种矩阵范数
最新推荐文章于 2024-05-13 09:53:00 发布