2013-04-27 2 views
1

저는 100001 개의 변수 (x1에서 x100000 및 알파까지)와 정확히 많은 방정식을 가진 방정식 시스템을 가지고 있습니다. 이 방정식 시스템을 해결하기 위해 Matlab 또는 다른 방법으로 계산 효율적인 방법이 있습니까? solve() 명령을 알고 있지만 더 빨리 실행될 수 있는지 궁금합니다. 방정식의 형태이다 : 다른 말로Matlab에서 방정식의 기호 시스템을 푸는 빠른 방법

1.)  -x1 + alpha * (x4 + x872 + x9932) = 0 
     . 
     . 
     . 
100000.) -x100000 + alpha * (x38772 + x95) = 0 

, 상기 I^번째 식은 계수 변수 XI을 갖는다 -1 알파 (* 일부 다른 변수의 합)에 추가 된 0 같음 최종 식은 단지 인 X1 + ... + 1 = x100000

+0

알파도 알 수 없습니까? –

+0

예,이를 반영하도록 질문을 업데이트했습니다. – user1748601

답변

3

수학 부품이 시스템은 항상 정규형 고유치 방정식 [값/벡터]를 가져올 수있다

:

** **를 * x * = & λ; 시스템의 행렬 X

X = X1 ; x2; ...; x100000]. 이 question에서 예를 촬영, 시스템은 다음과 같이 아래로 기록 될 수 있습니다 :이 의미

/    \ / \   / \ 
| 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을 조정하여 적절한 값을 지정하십시오.

고유 벡터를 찾으려면 시스템에서 하나를 꺼내어 Cramer의 규칙을 사용하여 나머지를 해결하면됩니다. 당신이 원한다면 그것들을 하나의 기준으로 삼으십시오.

관련 문제