Cálculo de normas de vectores e matrizes

Normas vectoriais

NormaVec[x_,norma_]:=Module[{i,n},
(* norma euclideana = 2, norma 1 = 1, norma infinito = 0*)
n=Length[x];
Which[
norma==2,
Sqrt[Sum[x[[i]]^2,{i,1,n}]],
norma==1,
Sum[Abs[x[[i]]],{i,1,n}],
norma==0,
Max[Abs[x]],
True,(* se 'norma' não tiver um dos valores preistos, é calculada a norma euclideana *)
Sqrt[Sum[x[[i]]^2,{i,1,n}]]
]
];

Exemplos :

NormaVec[{1,2,3},0]

NormaVec[{1,2,3},2]

NormaVec[{1,2,3},1]

Normas matriciais

NormaMat[A_,norma_]:=Module[{i,j,n},
(* Pressupomos que a matriz A é quadrada *)
(* norma 1 = 1, norma infinito = 0 *)
(* Se for indicado um valor nao previsto para 'norma', calcula a norma 1*)
n=Length[A];
Which[
norma==0,
Max[Table[Sum[Abs[A[[i,j]]],{j,1,n}],{i,1,n}]],
norma==1,
Max[Table[Sum[Abs[A[[i,j]]],{i,1,n}],{j,1,n}]],
True,
Max[Table[Sum[Abs[A[[i,j]]],{i,1,n}],{j,1,n}]]
]
]

Exemplos :

A={{1,2,3},{4,5,6},{7,8,9}};
NormaMat[A,0]

NormaMat[A,1]