Bir matrisin max mutlak norm, hilbert normu ve euclidiean normunu veren programları yazabilir misiniz?
yardımlarınız için teşekkürler.
Bir matrisin max mutlak norm, hilbert normu ve euclidiean normunu veren programları yazabilir misiniz?
yardımlarınız için teşekkürler.
İstediğin normların formüllerini yazda ona göre bakalım!!!
1. =max |aij| mutlak norm
2.= xi burada xi, B=AA^T matrisinin en büyük öz değeridir. hilbert normu
3.=[ijE ai,j^2]^1/2 =[i=1E xii]^1/2 euclidiean normu
(E toplam sembolü)
saçma oldu ama bu kadar yazabildim formülleri:((
Albert Einstein a formalize edip bill gates amcayla programı hazırlayalım en kısa zamanda cevabı yazarım :))
(p=2)
formülde nokta yok , kopyalarken noktayıda alıyor
Matrix normları ile ilgili bir cok yaklasım mumkundur.Yukarıda verdiginiz ilgili formullere gore beklenen C++ programı asagıdaki gibi olabilir.
#include <iostream>
#include <cmath>
using namespace std;
const int SIZE=2;
double mutlakNorm(double matrix[][SIZE])
{
double max=matrix[0][0];
int i,j;
for(i=0;i<SIZE;i++)
for(j=0;j<SIZE;j++)
if(max < matrix[j])
max=matrix[j];
return max;
}
double hilbertNorm(double matrix[][SIZE])
{
double resultMatrix[SIZE][SIZE]={0,0};
int i,j,k;
for(i=0;i<SIZE;i++)
for(j=0;j<SIZE;j++)
for(k=0;k<2;k++)
resultMatrix[j]+=matrix*matrix[j];
for(int i=0;i<SIZE;i++)
for(int j=0;j<SIZE;j++)
matrix[j]=resultMatrix[j];
double b=matrix[0][0]+matrix[1][1]; // warning:! only for two-two matrix
double c=matrix[0][0]*matrix[1][1]-matrix[1][0]*matrix[0][1];
double delta=pow(b,2)-4*1*c;
double root1=(-b+sqrt(delta))/2;
double root2=(-b-sqrt(delta))/2;
if(root1 > root2)
return root1;
return root2;
}
double euclidNorm(double matrix[][SIZE])
{
double total=0.0;
int i,j;
for(i=0;i<SIZE;i++)
for(j=0;j<SIZE;j++)
total+=pow(matrix[j],2);
return sqrt(total);
}
Program formule endeksli ve basit bir mantıga yonelik yazmıs oldugum icin acıklama ihtiyacı hissetmiyorum.
Başarılar