① 反冪法 matlab,請幫忙看下
如果給出矩陣的特徵值有為負的情況話,結果不正確
如果給出矩陣的特徵值全為正時,結果正確
這個反冪法本身就寫的不對,你應該好好看看反冪法的使用范圍。
反冪法求出的是絕對值最小的特徵值。
冪法求出的是絕對值最大的特徵值。
LZ 的錯誤可能是這方面原因。
請問你是要求出所有特徵值
還是部分特徵值
求全部特徵值 對於大的矩陣 萬介以上沒有可行辦法
部分特徵值現在方法比較多
② 冪法和反冪法求特徵值c語言舉例..
我最怕高數了,ai!你還是網路一下吧。
③ C語言^(冪)運算符
^ 運算符是 按位異或
1、異或是一個數學運算符。他應用於邏輯運算。
2、例如:真異或假的結果是真,假異或真的結果也是真,真異或真的結果是假,假異或假的結果是假。就是說兩個值不相同,則異或結果為真。反之,為假。
3、在計算機應用中,普遍運用,異或的邏輯符號 ^ (Shift + 6).形象表示為:
真^假=真
假^真=真
假^假=假
真^真=假
或者為:
True ^ False = True
False ^ True = True
False ^ False = False
True ^ True = False
部分計算機語言用1表示真,用0表示假,所以兩個位元組按位異或如下
00000000
異或
00000000
=
00000000
============我是分界線============
11111111
異或
00000000
=
11111111
=============我還是分界線=============
00000000
異或
11111111
=
11111111
===========又是我。。。================
11111111
異或
11111111
=
00000000
=============分界線=====================
00001111
異或
11111111
=
11110000
========================================
所以 按位異或 也常用於位元組取反操作。
④ 你好,可不可以耽誤你一點時間,幫我解決一個反冪法求特徵值和特徵向量的問題呢
你是想要答案還是方法
迭代兩次λ取Mκ的負一記得
我居然忘得差不多了 擦
⑤ 幫我看看哪有問題吧~~ 想用反冪法輸出特徵值及特徵向量~出現了unexpected end of file found
在倒數第二行的「while(k<6);」上面加一個反括弧「}」。
P.S:lz最好去下一個visual assist插件,否則以後還容易掉括弧的。
⑥ Ax=λx,求按模最小特徵值的反冪法
http://sxyd.st.e.cn/shufenxi/wlkj/szfx042.htm
講的不是太好 符號不清
我的筆記沒在身邊 我覺得我整理的比較清晰 容易掌握
實際就是兩種思路:1、將A求逆,然後用乘冪法求A^(-1)的最大特徵值和特徵向量,則A的特徵值就是A^(-1)的倒數,特徵向量與之相同。2、把乘冪法迭代的次序顛倒,即每右乘一次迭代向量得到的是上一次的迭代向量,即變成了方程組的求解,此時需要將A進行三角分解。這種思路主要是為了避免對A求逆,以及在此過程中可能的對A稀疏性的破壞。
⑦ c語言編程中如何輸入冪次方
1、頭文件:#include
2、原型:
double pow(double x, double y);
pow() 函數用來求 x 的 y 次冪(次方)
pow()用來計算以x 為底的 y 次方值,然後將結果返回。設返回值為 ret,則 ret = xy。
3、舉例如下:
double a = pow(4, 2); // 計算4的平方
4、可能導致錯誤的情況:
如果底數 x 為負數並且指數 y 不是整數,將會導致 domain error 錯誤。
如果底數 x 和指數 y 都是 0,可能會導致 domain error 錯誤,也可能沒有;這跟庫的實現有關。
如果底數 x 是 0,指數 y 是負數,可能會導致 domain error 或 pole error 錯誤,也可能沒有;這跟庫的實現有關。
如果返回值 ret 太大或者太小,將會導致 range error 錯誤。
錯誤代碼:
如果發生 domain error 錯誤,那麼全局變數 errno 將被設置為 EDOM;
如果發生 pole error 或 range error 錯誤,那麼全局變數 errno 將被設置為 ERANGE。
注意:1、使用pow函數時,需要將頭文件#include包 含進源文件中。
2、用pow(x,y)的話要用到math.h頭文件。
(7)反冪法c語言編程擴展閱讀:
1、 三角函數: double sin (double);正弦 double cos (double);餘弦 double tan (double);正切
2 、反三角函數: double asin (double); 結果介於[-PI/2, PI/2] double acos (double); 結果介於[0, PI] double atan (double); 反正切(主值), 結果介於[-PI/2, PI/2] double atan2 (double, double); 反正切(整圓值), 結果介於[-PI/2, PI/2]
3 、雙曲三角函數: double sinh (double); double cosh (double); double tanh (double);
4 、指數與對數: double exp (double); double sqrt (double);開平方 double log (double); 以e為底的對數 double log10 (double);以10為底的對數 double pow(double x, double y);計算以x為底數的y次冪 float powf(float x, float y); 功能與pow一致,只是輸入與輸出皆為浮點數
5 、取整: double ceil (double); 取上整 double floor (double); 取下整
6 、絕對值: double fabs (double);求絕對值 double cabs(struct complex znum) ;求復數的絕對值
7 、標准化浮點數: double frexp (double f, int *p); 標准化浮點數, f = x * 2^p, 已知f求x, p ( x介於[0.5, 1] ) double ldexp (double x, int p); 與frexp相反, 已知x, p求f
8 、取整與取余: double modf (double, double*); 將參數的整數部分通過指針回傳, 返回小數部分 double fmod (double, double); 返回兩參數相除的余數
9 、其他: double hypot(double x, double y);已知直角三角形兩個直角邊長度,求斜邊長度 double ldexp(double x, int exponent);計算x*(2的exponent次冪) double poly(double x, int degree, double coeffs [] );計算多項式 nt matherr(struct exception *e);數學錯誤計算處理程序
⑧ MATLAB實現用冪法/反冪法求矩陣的最大/最小特徵值問題(有追加!)。
%A為矩陣;ep為精度要求;N為最大迭代次數;m為絕對值最大的特徵值;u為對應最大特徵值的特徵向量。
A=[2,-1,0;-1,2,-1;0,-1,2];
N=100;
ep=1e-6;
n=length(A);
u=ones(n,1);
index=0;
k=0;
m1=0;
while k<=N
v=A*u;
m=max(abs(v));
u=v/m
if abs(m-m1)<ep
index=1;
break;
end
m1=m;
k=k+1;
end
m %特徵值
u/norm(u) %特徵向量
[vv,ll]=eig(A); %matlab求解的特徵值和特徵向量
[mm,ii]=max(abs(diag(ll)));
m_matlab=mm
v_matlab=vv(:,ii)
這個是你的冪法,你的方法基本沒有問題。
⑨ 如何用原點平移法和反冪法構建一個可以求解矩陣所有的特徵值
反冪法應該不行,但是類似反冪法的很多方法都可以做到,比如:
1. Simultaneous iteration—同時迭代法
2. Newton法
3. Implicit Restarted Arnoldi—隱式重啟動的Arnoldi方法
4. Jacobi-Davidson方法
以上所有演算法中,不能僅收斂特徵向量,要收斂包含特徵向量的不變子空間的酉基,即Schur基,才能保證演算法對於nondefective(中文不知道咋翻譯,因為還有個nonderogotary)matrix也能生效。還要注意的是,對於Arnoldi和Jacobi-Davidson方法,由於有限精度計算誤差的影響,在迭代多次以後還要加入重新正交化的步驟,保證搜尋子空間酉基的正交性,這一步又叫做DGKS修正,可參考Demmel,Gxx,Kxx和Stewart 70年代在SIAM上發表的論文。