数学部分
这个系统可能总是被带到 eigen[value/vector] 方程的规范形式:
**A***x* = λ x
其中A是系统的矩阵,x = [ x1 ; x2 ; ...; x100000 ]。以这个问题为例,系统可以写成:
/ \ / \ / \
| 0 1 0 0 0 | | x1 | | x1 |
| 0 0 1 0 1 | | x2 | | x2 |
| 1 0 0 0 0 | x | x3 | = (1/alpha) | x3 |
| 0 0 1 0 0 | | x4 | | x4 |
| 0 1 0 1 0 | | x5 | | x5 |
\ / \ / \ /
这意味着您的特征值 λ = 1/α。当然,您应该注意复杂的特征值(除非您真的想考虑它们)。
Matlab部分
嗯,这很符合你的品味和技能。您总是可以找到矩阵的特征值eig()
。最好使用稀疏矩阵(内存经济):
N = 100000;
A = sparse(N,N);
% Here's your code to set A's values
A_lambda = eig(A);
ieps= 0e-6; % below this threshold imaginary part is considered null
alpha = real(1 ./ (A_lambda(arrayfun(@(x) imag(x)<ieps, A_lambda)))); % Chose Real. Choose Life. Choose a job. Choose a career. Choose a family. Choose a f****** big television, choose washing machines, cars, compact disc players and electrical tin openers. Choose good health, low cholesterol, and dental insurance. Choose fixed interest mortgage repayments. Choose a starter home. Choose your friends. Choose leisurewear and matching luggage. Choose a three-piece suit on hire purchase in a range of f****** fabrics. Choose DIY and wondering who the f*** you are on a Sunday morning. Choose sitting on that couch watching mind-numbing, spirit-crushing game shows, stuffing f****** junk food into your mouth. Choose rotting away at the end of it all, pissing your last in a miserable home, nothing more than an embarrassment to the selfish, f***** up brats you spawned to replace yourself. Chose life.
% Now do your stuff with alpha here
但是,请注意:数值求解大型特征值方程可能会为您提供预期实数的复杂值。ieps
如果您一开始没有发现任何东西,请调整您的合理价值观。
要找到特征向量,只需从系统中取出一个,然后通过克莱默规则求解其余的。如果您愿意,可以将它们规范为一个。