c語言寫規範化乘冪法

2021-08-01 20:24:12 字數 1735 閱讀 5698

編譯環境: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...