导航:首页 > 编程语言 > 高斯消元法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程序相关的资料

热点内容
文件在桌面怎么删除干净 浏览:439
马兰士67cd机版本 浏览:542
javaweb爬虫程序 浏览:537
word中千位分隔符 浏览:392
迷你编程七天任务的地图怎么过 浏览:844
word2003格式不对 浏览:86
百度云怎么编辑文件在哪里 浏览:304
起名app数据哪里来的 浏览:888
微信怎么去泡妞 浏览:52
百度广告html代码 浏览:244
qq浏览器转换完成后的文件在哪里 浏览:623
jsp中的session 浏览:621
压缩完了文件去哪里找 浏览:380
武装突袭3浩方联机版本 浏览:674
网络机顶盒移动网络 浏览:391
iphone手机百度云怎么保存到qq 浏览:148
数据库设计与实践读后感 浏览:112
js对象是什么 浏览:744
网页文件存pdf 浏览:567
文件夹正装 浏览:279

友情链接