主题:关于用MATLAB解方程组
这几天学习数值分析,我想用matlab解个方程组,比如用列主元消去法。已知源程序了,但是我不知道怎么运行。源程序在本站查得为:
function x=detGauss(a,b)
% Gauss列主元消去法
[n,m]=size(a);
nb=length(b);
det=1;%存储行列式值
x=zeros(n,1);
for k=1:n-1
amax=0;% 选主元
for i=k:n
if abs(a(i,k))>amax
amax=abs(a(i,k));r=i;
end
end
if amax<1e-10
return;
end
if r>k %交换两行
for j=k:n
z=a(k,j);a(k,j)=a(r,j);a(r,j)=z;
end
z=b(k);b(k)=b(r);b(r)=z;det=-det;
end
for i=k+1:n %进行消元
m=a(i,k)/a(k,k);
for j=k+1:n
a(i,j)=a(i,j)-m*a(k,j);
end
b(i)=b(i)-m*b(k);
end
det=det*a(k,k);
end
det=det*a(n,n);
for k=n:-1:1 %回代
for j=k+1:n
b(k)=b(k)-a(k,j)*x(j);
end
x(k)=b(k)/a(k,k);
end
我想解具体的一个方程组。在命令框运行的时候说函数未定义。如下:
??? function x=detGauss(a,b)
|
Error: Function definitions are not permitted at the prompt or in scripts.
哪位好心人能告诉我具体的求解步骤吗,a ,b 的值如何输入,最后解如何获得?
非常感激!
function x=detGauss(a,b)
% Gauss列主元消去法
[n,m]=size(a);
nb=length(b);
det=1;%存储行列式值
x=zeros(n,1);
for k=1:n-1
amax=0;% 选主元
for i=k:n
if abs(a(i,k))>amax
amax=abs(a(i,k));r=i;
end
end
if amax<1e-10
return;
end
if r>k %交换两行
for j=k:n
z=a(k,j);a(k,j)=a(r,j);a(r,j)=z;
end
z=b(k);b(k)=b(r);b(r)=z;det=-det;
end
for i=k+1:n %进行消元
m=a(i,k)/a(k,k);
for j=k+1:n
a(i,j)=a(i,j)-m*a(k,j);
end
b(i)=b(i)-m*b(k);
end
det=det*a(k,k);
end
det=det*a(n,n);
for k=n:-1:1 %回代
for j=k+1:n
b(k)=b(k)-a(k,j)*x(j);
end
x(k)=b(k)/a(k,k);
end
我想解具体的一个方程组。在命令框运行的时候说函数未定义。如下:
??? function x=detGauss(a,b)
|
Error: Function definitions are not permitted at the prompt or in scripts.
哪位好心人能告诉我具体的求解步骤吗,a ,b 的值如何输入,最后解如何获得?
非常感激!