알고리즘 과정에 참여할 때 교수는 행렬 계산에 대해 흥미로운 질문을합니다.이 행렬을 적절하게 계산하는 방법
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 알고 있습니까? 감사합니다.
'n = 6,10, .. '그리고'max (res)'는'0.2'를 초과하지 않았습니다. – Rashid
나는 n = 50, 70, 100을 테스트하고 놀라운 결과를 얻는다. – lightninghe