編譯環境:c-free3.5
例題:用規範化乘冪法求以下矩陣的按模最大特徵值及其特徵向量(迭代終止誤差為1e-5):
程式:#include
#include
#define n 3
float max(float x) // 按模求最大值
int i;
float max;
max=x[0];
for(i=1;iif(fabs(x[i])>fabs(max)) max=x[i];
return max;
void main()
float x[5];
float a[5][5];
float y[5],temp[5];
int i,j,k=0;
float t,r,epsilon=1;
printf("請輸入矩陣:
\n"); //輸入矩陣a
for(i=0;i<=n-1;i++)
for(j=0;j<=n-1;j++)
scanf("%f",&a[i][j]);
printf("請輸入
x的初值:
\n"); //輸入初值x0
for(i=0;i<=n-1;i++)
scanf("%f",&x[i]);
for(i=0;i<=n-1;i++) //歸一化為向量y(0)
y[i]=x[i]/max(x);
while(epsilon>=1e-5)
for(i=0;i<=n-1;i++) //計算x(k)=ay(k-1),k=1,2,...
temp[i]=x[i];
t=0;
for(j=0;j<=n-1;j++)
t+=a[i][j]*y[j];
x[i]=t;
for(i=0;i<=n-1;i++) //歸一化為向量y(k)
y[i]=x[i]/max(x);
epsilon=fabs(x[0]-temp[0]); //求精度
for(i=1;i<=n-1;i++)
if(fabs(x[i]-temp[i])>epsilon)
epsilon=fabs(x[i]-temp[i]);
k++;
r=max(x); //特徵值
printf("規範化乘冪法迭代次數為:
%d\n",k);
printf("按模最大特徵值為:
%f\n",r);
printf("矩陣的特徵向量為:
\n");
for(i=0;i<=n-1;i++)
printf("y[%d]=%f\n",i,y[i]);
執行結果:
C 基礎和規範化系列 2
c 分類有很多種形式,但按照是否包含指標變數對類的影響很大,按照是否包含指標變數來進行分類。需要定義big three 關鍵的3個方法 pragma once include using namespace std class mystring private char m data include...
r語言歸一化 R語言 資料規範化 歸一化
筆者寄語 規範化主要是因為資料受著單位的影響較大,需要進行量綱化。大致有 最小 最大規範化 均值標準化 小數定標規範化 1 最小 最大規範化 也叫離差標準化,是對原始資料的線性變換,將資料對映到 0,1 之間,與功效係數法相同。最小 最大規範化 b1 data 1 min data 1 max da...
C語言寫高斯消去法
早上幫女朋友參照c語言數值分析這本書用c語言寫了乙份高斯消去法,有什麼不妥之處請大家指正!double a max max 係數矩陣 double b max 右端項 double x max 迭代向量 int num a的階數 int size 最大迭代次數 int main void print...