導航:首頁 > 編程語言 > 高斯消元法matlab程序

高斯消元法matlab程序

發布時間:2023-02-14 23:52:46

⑴ 用高斯消元法解線性方程組 的MATLAB程序

1、下圖是需要求解的線性方程組。

⑵ matlab中用高斯消元法接方程組程序

你的方程不對,

下面是程序:用Gauss 消去法求解線性方程組A*x=b

將下面程序復制,保存成Gauss_pivot.m文件

function x=Gauss_pivot(A,b)
% A:系數矩陣
% b:方程組的右端向量
n=length(b);
x=zeros(n,1);c=zeros(1,n);d1=0;
for i=1:n-1
max=abs(A(i,i));
m=i;
for j=i+1:n
if max<abs(A(j,i));
m=j;
end
end
if m~=1
for k=i:n
c(k)=A(i,k);
A(i,k)=A(m,k);
A(m,k)=c(k);
end
d1=b(i);
b(i)=b(m);
b(m)=d1;
end
for k=i+1:n
for j=i+1:n
A(k,j)=A(k,j)-A(i,j)*A(k,j)/A(i,i);
end
b(k)=b(k)-b(i)*A(k,j)/A(i,i);
A(k,i)=0;
end
end
x(n)=b(n)/A(n,n);
for i=n-1:-1:1
sum=0;
for j=i+1:n
sum=sum+ A(i,j)*x(j);
end
x(i)=(b(i)-sum)/A(i,i);
end

直接調用Gauss_pivot(A,b)即可!!

祝願朋友好運!

⑶ MATLAB 如何使用高斯消去法解出方程式

function x = MyGauss(A,B)
% 高斯消去法解方程 Ax = B
NA = size(A,2);
[NB1,NB] = size(B);

if NB1 ~= NA,
error('A 和 b 維數不匹配');
end

N = NA + NB;
AB = [A(1:NA,1:NA) B(1:NA,1:NB)]; % 增廣矩陣
epss = eps*ones(NA,1);

for k = 1:NA

[akk,kx] = max(abs(AB(k:NA,k))./ ...
max(abs([AB(k:NA,k+1:NA) epss(1:NA-k+1)]'))');

if akk < eps,
error('沒有唯一解');
end

mx = k + kx -1;
if kx > 1
tmp_row = AB(k,k:N);
AB(k,k:N) = AB(mx,k:N);
AB(mx,k:N) = tmp_row;
end

% 高斯消元
AB(k,k+1:N) = AB(k,k+1:N)/AB(k,k);
AB(k,k) = 1;
for m = k+1:NA
AB(m,k+1:N) = AB(m,k+1:N) - AB(m,k)*AB(k,k+1:N);
AB(m,k) = 0;
end
end

x(NA,:) = AB(NA,NA+1:N);
for m = NA-1:-1:1
x(m,:) = AB(m,NA+1:N)-AB(m,m+1:NA)*x(m+1:NA,:);
end
end

命令行
>>A = [10 2 -1; -3 -6 2; 1 1 5 ];
>>b = [27 -61.5 -21.5]';
>>x = MyGauss(A,b)

x =
0.500000000000000

7.999999999999999
-6.000000000000000

驗證:

>>A*x
ans =

27.000000000000000

-61.499999999999993
-21.500000000000000

⑷ 找列主元高斯消去法來求解線性代數方程組解的matlab程序

高斯列主元消去法

function X=Gauss_pivot(A,B)

% 用Gauss列主主元消去法解線性方程組AX=B

%X是未知向量

n=length(B);

X=zeros(n,1);

c=zeros(1,n);

d1=0

for i=1:n-1

max=abs(A(i,i));

m=i;

for j=i+1:n

if max<abs(A(j,i))

max=abs(A(j,i));

m=j;

end

end

if(m~=i)

for k=i:n

c(k)=A(i,k);

A(i,k)=A(m,k);

A(m,k)=c(k);

end

d1=B(i);

B(i)=B(m);

B(m)=d1;

end

for k=i+1:n

for j=i+1:n

A(k,j)=A(k,j)-A(i,j)*A(k,i)/A(i,i);

end

B(k)=B(k)-B(i)*A(k,i)/A(i,i);

A(k,i)=0;

end

end

%回代求解

X(n)=B(n)/A(n,n);

for i=n-1:-1:1

sum=0;

for j=i+1:n

sum=sum+A(i,j)*X(j);

end

X(i)=(B(i)-sum)/A(i,i);

End

⑸ matlab 編寫高斯消去法程序代碼

用高斯消元法解線性方程組 的MATLAB程序
輸入的量:系數矩陣 和常系數向量 ;
輸出的量:系數矩陣 和增廣矩陣 的秩RA,RB, 方程組中未知量的個數n和有關方程組解 及其解的信息.
function [RA,RB,n,X]=gaus(A,b)
B=[A b]; n=length(b); RA=rank(A);
RB=rank(B);ca=RB-RA;
if ca>0,
disp('請注意:因為RA~=RB,所以此方程組無解.')
return
end
if RA==RB
if RA==n
disp('請注意:因為RA=RB=n,所以此方程組有唯一解.')
X=zeros(n,1); C=zeros(1,n+1);
for p= 1:n-1
for k=p+1:n
m= B(k,p)/ B(p,p); B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1);
end
end
b=B(1:n,n+1);A=B(1:n,1:n); X(n)=b(n)/A(n,n);
for q=n-1:-1:1
X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);
end
else
disp('請注意:因為RA=RB<n,所以此方程組有無窮多解.')
end
end

⑹ 如何在MATLAB用高斯消去法求解線性方程組程序

程序如下function
x=gauss(A,b)
%高斯求解方程組%x=gauss(A,b)n=length(A);a=[A,b];for
k=1:n-1
maxa=max(abs(a(k:n,k)));
if
maxa==0
return;
end
for
i=k:n
if
abs(a(i,k))==maxa
y=a(i,k:n+1);a(i,k:n+1)=a(k,k:n+1);a(k,k:n+1)=y;
break;
end
end
for
i=k+1:n
l(i,k)=a(i,k)/a(k,k);
a(i,k+1:n+1)=a(i,k+1:n+1)-l(i,k).*a(k,k+1:n+1);
endend%回代if
a(n,n)==0
returnendx(n)=a(n,n+1)/a(n,n);for
i=n-1:-1:1
x(i)=(a(i,n+1)-sum(a(i,i+1:n).*x(i+1:n)))/a(i,i);end
調用示例如下:>>
A=[2,-1,3;4,2,5;1,2,0];
>>
b=[1;4;7];
>>
x=gauss(A,b)x
=
9
-1
-6

⑺ matlab中用的高斯消元法怎麼使用!

用matlab實現高斯列主元消去法解線性方程及LU分解

function x=gaussLinearEquation(A,b)

%高斯法解線性方程Ax=b

disp('原方程為AX=b:')

A

b

disp('------------------------')

n=length(b);

eps=10^-2;

for k=1:n-1

%找列主元

[mainElement,index]=max(abs(A(k:n,k)));

index=index+k-1;%index在A(k:n,k)中的行號轉換為在A中的行號

if abs(mainElement)<eps

disp('列元素太小!!');

break;

elseif index>k

%列主元所在行不是當前行,將當前行與列主元所在行交換

temp=A(k,:);

A(k,:)=A(index,:);

A(index,:)=temp;

end

%消元

for i=k+1:n

m(i,k)=A(i,k)/A(k,k);%A(k,k)將A(i,k)消為0所乘系數

A(i,k:n)=A(i,k:n)-m(i,k)*A(k,k:n);%第i行消元處理

b(i)=b(i)-m(i,k)*b(k);%還有b也需要處理!!

end

end

disp('消元後所得到的上三角陣是')

A

%回代

b(n)=b(n)/A(n,n);

for i=n-1:-1:1

%sum(A(i,i+1:n).*b(i+1:n)')表示已知

b(i)=(b(i)-sum(A(i,i+1:n).*b(i+1:n)'))/A(i,i);

end

clear x;

x=b;

disp('AX=b的解x是')

x

用法:

在控制台輸入:

A=[1.003 0.333 1.504 -0.333;

-2.011 1.455 0.506 2.956;

4.329 -1.952 0.006 2.087;

5.113 -4.004 3.332 -1.112];

b=[ 3.005,5.407,0.136,3.772 ]';

執行gaussLinearEquation(A,b);即可得到結果。

⑻ 求用MATLAB寫一個高斯消元法的程序

function[x,XA]=Gauss(A,b)
N=size(A);
n=N(1);
index=0;
pos=zeros(n,1);
B=A;

fori=1:n
me=max(abs(B(1:n,i)));%選取列主元
fork=1:n
if(abs(A(k,i))==me)
index=k;
pos(i,1)=k;%保存列主元所在的行號
break;
end
end
m=A(index,i);
forj=1:n
if(j~=index)
l=A(j,i);
A(j,1:n)=A(j,1:n)-l*A(index,1:n)/m;
b(j)=b(j)-l*b(index)/m;%消元
end
end
B=A;
fork=1:n
if(pos(k,1)~=0)
B(pos(k,1),1:n)=0;%避免列主元在同一行
end
end
end

XA=A;
fori=1:n
x(i,1)=b(pos(i,1))/A(pos(i,1),i);%求解
end

測試用例:

>> A=magic(3);x=ones(3,1);b=A*x
b =
15
15
15
>> xx=Gauss(A,b)
xx =
1
1
1
>> xx-x
ans =
0
0
0
>>

⑼ 用matlab 編寫高斯順序消元法求解下面方程組的程序及並計算結果

function [x,XA]=GaussXQByOrder(A,b)
%高斯順序消元法
N = size(A);
n = N(1);

for i=1:(n-1)
for j=(i+1):n
if(A(i,i)==0)
disp('對角元素為0!'); %防止對角元素為0
return;
end
l = A(j,i);
m = A(i,i);
A(j,1:n)=A(j,1:n)-l*A(i,1:n)/m; %消元方程
b(j)=b(j)-l*b(i)/m;
end
end

x=SolveUpTriangle(A,b); %通用的求上三角系數矩陣線性方程組的函數
XA = A; %消元後的系數矩陣
function x=SolveUpTriangle(A,b)
N=size(A);
n=N(1);
for i=n:-1:1
if(i<n)
s=A(i,(i+1):n)*x((i+1):n,1);
else
s=0;
end
x(i,1)=(b(i)-s)/A(i,i);
end

程序如上,自己算吧。這個東西應該嘗試自己編程

⑽ 用matlab程序法編出高斯消元法

昨天才回答過這個問題..你可以再搜搜的Gauss消去法的分析。其包括兩個過程:消去過程:把方程組系數矩陣A化為同解的上三角矩陣;回代過程:按相反的順序,從xn至x1逐個求解上三角方程組。
%高斯消去法的MATLAB程序function
x=gauss(a,b);
%編寫高斯消去法函數%a表示方程組的系數矩陣,b表示方程組的值%X表示最終的輸出結果,即方程組的解n=length(b);
%計算方程組的維數%下面的程序在不斷的消去,直到變成a變成上三角矩陣未知
for
k=1:n-1
for
i=k+1:n
a(i,k)=a(i,k)/a(k,k);
for
j=k+1:n
a(i,j)=a(i,j)-a(i,k)*a(k,j);
end
b(i)=b(i)-a(i,k)*b(k);
end
end
%表示高斯消去法的回帶過程x=zeros(n,1);x(n)=b(n)/a(n,n);
for
k=n-1:-1:1
s=b(k);
for
j=k+1:n
s=s-a(k,j)*x(j);
end
x(k)=s/a(k,k);end實例驗證:
%調用編好的消去法函數>>
A=[1,2,3;2,2,3;-1,-3,10];B=[0,3,2];gauss(A,B)ans
=
3.0000
-1.5517
0.0345
>>
A=[1,2,3;2,2,3;-1,-3,10];B=[0,3,2];x=gauss(A,B)
x
=
3.0000
-1.5517
0.0345
>>
A*x
%反代求解進行比較
ans
=
0.0000
3.00002.0000

閱讀全文

與高斯消元法matlab程序相關的資料

熱點內容
36周的數據是多少 瀏覽:950
裝win10系統重新分區嗎 瀏覽:882
微信已被清理的文件 瀏覽:771
ug8的例圖在哪個文件夾里 瀏覽:641
dat文件轉換avi 瀏覽:173
安卓編程里上下邊距怎麼寫 瀏覽:427
雲班課文件在哪個文件夾 瀏覽:298
健康碼用到了哪些方面的大數據 瀏覽:379
蘋果手機拆裝教程 瀏覽:244
excel抓取文件鏈接 瀏覽:510
魔靈召喚主角升級 瀏覽:746
linux文件系統實驗 瀏覽:897
怎麼讀取電腦資料庫中的數據 瀏覽:443
蘋果7怎麼開啟鎖屏密碼 瀏覽:98
怎麼找到圖片上的文件 瀏覽:644
qq接收文件轉移 瀏覽:323
雙色球哪些數據最重要 瀏覽:133
從pc上傳文件找不到路徑 瀏覽:484
電腦文件傳微信朋友圈 瀏覽:9
豐都學校網站製作多少錢 瀏覽:183

友情鏈接