求大神赐教:(用matlab解决)

 我来答
lifanchun1209
2012-09-03 · TA获得超过467个赞
知道小有建树答主
回答量:323
采纳率:0%
帮助的人:94万
展开全部
%第一步:写出追赶法和gauss法的matlab程序,分别保存在M文件中
function x=zhuiganfa(A,d)
%首先说明:追赶法是适用于三对角矩阵的线性方程组求解的方法,并不适用于其他类型矩阵。
%定义三对角矩阵A的各组成单元。方程为Ax=d
% b为A的对角线元素(1~n),a为-1对角线元素(2~n),c为+1对角线元素(1~n-1)。
% A=[2 -1 0 0
% -1 3 -2 0
% 0 -2 4 -3
% 0 0 -3 5]
a=[0; diag(A,-1)]';
c=[diag(A,1)]';
b=diag(A)';
n=length(b);
u0=0;y0=0;a(1)=0;
%“追”的过程
L(1)=b(1)-a(1)*u0;
y(1)=(d(1)-y0*a(1))/L(1);
u(1)=c(1)/L(1);
for i=2:(n-1)
L(i)=b(i)-a(i)*u(i-1);
y(i)=(d(i)-y(i-1)*a(i))/L(i);
u(i)=c(i)/L(i);
end
L(n)=b(n)-a(n)*u(n-1);
y(n)=(d(n)-y(n-1)*a(n))/L(n);
%“赶”的过程
x(n)=y(n);
for i=(n-1):-1:1
x(i)=y(i)-u(i)*x(i+1);
end

function [RA,RB,n,X]=gauss(A,b)
B=[A b]; n=length(b); RA=rank(A);
RB=rank(B);zhica=RB-RA;
if zhica>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

%第二步:首先构造矩阵A和b
n=20;
A=diag(repmat(-4,n,1),0)+diag(repmat(1,n-1,1),1)+diag(repmat(1,n-1,1),-1)
b=[-27; repmat(1,n-1,1)]

%第三步:比较计算的时间
tic
x0=gauss(A,b);
toc
tic
x1=zhuiganfa(A,b);
toc

%结果也给你吧,不同机器时间不一样
%n=20,前一个是gauss法 后一个是追赶法
Elapsed time is 0.006271 seconds.
Elapsed time is 0.007607 seconds.

%n=500,前一个是gauss法 后一个是追赶法
Elapsed time is 3.064019 seconds.
Elapsed time is 0.009059 seconds.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式