Когда я посещаю курс алгоритма, профессор дает нам интересный вопрос о матричных вычислениях. Дано * N maxtrix А и п * 1 вектор-столбец б, нам нужно вычислить соответствующий х, которые удовлетворяют: Ах = Ь с использованием языка MATLAB, А и В определены как следующее:Как правильно вычислить эту матрицу
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;
мы просто получаем значение х на входе:
x=A\b;
затем проверяем результат на:
res=A*x-b;
мы находим много эл ements' абсолютное значение Рез больше 1.
Но, проф говорят нам, что: просто добавив randomlized пункт как следующий
A1=(A1+rand(n,n)*0.0001)
x1=A1\b;
res1=A*x1-b; # there ,this is A not A1
И мы найдем элементы этого res1 и все меньше чем 1e- 4
Но, состояние A и A1 почти одинаково.
Я думаю, это скопированная численная ошибка. Но я не могу объяснить это явление математически и адекватно. Math geek или CSers знают? Спасибо.
Я пробовал для 'n = 6,10, ..' и 'max (res)' не превышал '0,2'. – Rashid
Я тестирую его для n = 50, 70, 100, тогда я получаю потрясающий результат – lightninghe