我正在嘗試在 Matlab 中撰寫一個程式,以使用 LU 分解來求解線性方程組,該分解使用高斯消去法,因此有很多算術步驟。
答案接近正確的解決方案,但與 Python 等其他語言相比,舍入誤差相當高。
例如,其中一個解決方案正好是 3,但我得到 2.9877。
我知道內置函式應該用于這些瑣碎的事情,因為 Matlab 是一種高計算語言,但如果我仍然想用回圈等來做,我總是會遇到舍入錯誤,或者有沒有辦法在做的時候減少這些錯誤數值計算?
我附上了代碼,但它很大,不值得閱讀。為了完成,我仍然附上了它。人們可以注意到許多算術運算的使用,這些運算會引入很多舍入誤差。
這些舍入誤差是 Matlab 固有的并且是不可避免的嗎?
clc
clear
%No of equations is n
n=3;
%WRITING THE Coefficients
A(1,1)=3;
A(1,2)=-0.1;
A(1,3)=-0.2;
B(1)=7.85;
A(2,1)=0.1;
A(2,2)=7;
A(2,3)=-0.3;
B(2)=-19.3;
A(3,1)=0.3;
A(3,2)=-0.2;
A(3,3)=10;
B(3)=71.4;
%Forward Elimination
for i=1:n-1
for j=i 1:n
fact=A(j,i)/A(i,i);
A(j,i)=fact;
A(j,j:n)=A(j,j:n)-fact*A(i,j:n);
B(j)=B(j)-fact*B(i);
end
end
disp(A)
% Calculating d matrix
sum=0;
D(1)=B(1);
for i=2:n
for j=1:i-1
sum=sum A(i,j)*B(j);
D(i)=B(i)-sum;
end
end
disp("D =")
disp(transpose(D))
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/426538.html
上一篇:如何根據矩陣中第一列的值洗掉行
