線性方程組的三角分解求法其實和常用的高斯消去法等效。
如果要直接利用matlab內建的三角分解演算法,可在命令視窗直接執行以下命令:
a=[1401;1510;-3203;-4014];
b=[11;12;7;5];
[l,u]=lu(a);%l為下三角,u為上三角
x=u\(l\b)%求解x
若要自己程式設計實現以上演算法,可建立以下函式檔案:
functionx=gaussmethod(a,b)
%高斯消去法求解線性代數方程組ax=b
n=size(a,1);
m=zeros(n-1,n-1);
x=zeros(n,1);
fork=1:n-1
fori=k+1:n
m(i,k)=-a(i,k)/a(k,k);
a(i,k:n)=a(i,k:n)+a(k,k:n)*m(i,k);
b(i)=b(i)+b(k)*m(i,k);
end
x(n)=b(n)/a(n,n);
fori=n-1:-1:1
p=0;
forj=i+1:n
p=p+a(i,j)*x(j);
x(i)=(b(i)-p)/a(i,i);
編寫函式後儲存。在命令視窗輸入:
x=gaussmethod(a,b)
執行後可得到
x=
1.0000
2.0000
線性方程組的三角分解求法其實和常用的高斯消去法等效。
如果要直接利用matlab內建的三角分解演算法,可在命令視窗直接執行以下命令:
a=[1401;1510;-3203;-4014];
b=[11;12;7;5];
[l,u]=lu(a);%l為下三角,u為上三角
x=u\(l\b)%求解x
若要自己程式設計實現以上演算法,可建立以下函式檔案:
functionx=gaussmethod(a,b)
%高斯消去法求解線性代數方程組ax=b
n=size(a,1);
m=zeros(n-1,n-1);
x=zeros(n,1);
fork=1:n-1
fori=k+1:n
m(i,k)=-a(i,k)/a(k,k);
a(i,k:n)=a(i,k:n)+a(k,k:n)*m(i,k);
b(i)=b(i)+b(k)*m(i,k);
end
end
x(n)=b(n)/a(n,n);
fori=n-1:-1:1
p=0;
forj=i+1:n
p=p+a(i,j)*x(j);
end
x(i)=(b(i)-p)/a(i,i);
end
編寫函式後儲存。在命令視窗輸入:
a=[1401;1510;-3203;-4014];
b=[11;12;7;5];
x=gaussmethod(a,b)
執行後可得到
x=
1.0000
2.0000
1.0000
2.0000