2014-12-14 6 views
1

알고리즘 과정에 참여할 때 교수는 행렬 계산에 대해 흥미로운 질문을합니다.이 행렬을 적절하게 계산하는 방법

A=[]; 
for j=1:n-1 
    aj=[]; 
    aj=[aj;repmat(1,j-1,1)]; 
    aj=[aj;1]; 
    aj=[aj;repmat(-1,n-j,1)]; 
    A=[A,aj]; 
end 
A=[A,repmat(1,n,1)]; 
b=rand(n,1)*2; 

: B 는 MATLAB 언어, A와 B는 다음과 같이 정의된다 사용 = 액스 : *가 n 개의 maxtrix A 및 N * 1 열 벡터 B를 고려할 때 만족 대응 X를 계산해야 우리는 단지 입력에 의해 x의 값을 얻을 :

x=A\b; 

은 우리에 의해 결과를 확인 :

res=A*x-b; 

우리는 많은 엘을 찾아 바로 다음

A1=(A1+rand(n,n)*0.0001) 
x1=A1\b; 
res1=A*x1-b;  # there ,this is A not A1 

같은 randomlized 항목을 추가 그리고 우리가 RES1의 요소를 모두 작은 1e-보다 더 찾을 수 있습니다 : 고해상도의 ements '절대 값은 교수가 우리에게 그런 말, 1보다 큰

이다 그러나 4

그러나 A와 A1의 조건 수는 거의 같습니다.

나는 이것이 누적 된 수치 오류라고 생각한다. 그러나 나는 수학적으로 그리고 적절하게이 현상을 설명 할 수 없다. 수학 괴짜 또는 CSers 알고 있습니까? 감사합니다.

+0

'n = 6,10, .. '그리고'max (res)'는'0.2'를 초과하지 않았습니다. – Rashid

+0

나는 n = 50, 70, 100을 테스트하고 놀라운 결과를 얻는다. – lightninghe

답변

0

이것은 실제로 행렬 A에 따라 달라집니다.
이 특별한 경우에는 왜 그런 효과를 얻을 수 있는지 알려주지 못하는 선형 방정식 솔버가 너무 많습니다.
다음을보십시오 : http://de.mathworks.com/help/matlab/ref/mldivide.html

'알고리즘'에서 볼 수 있듯이 일반 입력 행렬에 대해 총 7 개의 다른 솔버가 있습니다.
모두 숫자 오류에 어느 정도 영향을 미칠 수있는 특정 속성을 갖습니다.

+0

고맙다. 어떤 알고리즘은 절대적으로 놀라운 결과를 만들어 낼지도 모른다. 안타까워, 내부 컴퓨팅 절차를 알 수는 없어. = = – lightninghe

관련 문제