作者e01234567 (伊武天泽)
看板MATLAB
标题[问题]function输出函数之小问题
时间Fri Nov 30 12:45:08 2012
有一些function output=name(input)之类的小问题
我发现output的部份是不是不打x开头的,
将不会以ans显示出来!? 还是我的m文建有问题,以下是我的程式码
(可能有人看过了.这两三天都在搞同一个程序..)
function xm = code3(A,b,x0,tol,max_it);
%输入及输出:
% A 系数矩阵(n乘n)
% b 右侧项(n乘1)
% x0 初始解(n乘1)
% tol 若x变量的范数<tol则停止
% max 最大跌代次数
%xMat % 将 x 排回原来的位置
%B将排好的 x 塞回去
% x 解向量(n乘1)
%xm塞回原方格之矩阵
[n,m]=size(A);
xold=x0;
C=-A;
for i=1:n
C(i,i)=0;
end
for i = 1:n
C(i,:)=C(i,:)/A(i,i);
end
for i=1:n
d(i,1)=b(i)/A(i,i);
end
disp('i x1 x2 x3 ....');
while(i <=max_it)
xnew=C*xold+d;
if norm(xnew-xold) <= tol
x=xnew;
disp('Jacobi method converged');return;
else
xold=xnew;
end
disp([i xnew']);
i=i+1;
end
disp('Jacobi method did not converge');
disp('results after maximum number of iterations');
x=xnew;
xMat = rot90(reshape(xnew, n^0.5, n^0.5)) ;% 将 x 排回原来的位置
B=ones(n^0.5+2,n^0.5+2); %这里是先假设边界全是1的矩阵来测试..之後会用手动建立
b矩阵
B(2:(end-1), 2:(end-1)) = xMat ;% 将排好的 x 塞回去
xm=B;
以上是我的程式码...我本来是打算直接打
function B = code3(A,b,x0,tol,max_it);就好了
可是当我这样打时,到最後则不会跑出ans..
只会告诉我收敛或是不收敛,
可当我output打成Xmat或是xm时,则会以ans的方式来显示出来。
还是说是我本来设定上有甚麽问题 才会这样子!?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.120.229.231
1F:→ cmjer:要不要在回传前也用disp直接显示xm值? 另外我不懂为何output 11/30 13:05
2F:→ cmjer:打Xmat或xm会显示值这句话!是不是你其实是最後输入时有无分 11/30 13:07
3F:→ cmjer:号的差别而已? 11/30 13:08
4F:→ cmjer:sorry 我看错意思了 11/30 13:14
5F:→ cmjer:不过我以 function B= ... 也会以ans显示,可否说明要使用此 11/30 13:31
6F:→ cmjer:函数时,你所下的命令为何~另外在收敛回传时并无xm,B的变数 11/30 13:33
7F:→ cmjer:存在,所以最好给个初始矩阵 11/30 13:34
我最後很像找到原因了 是因为B出现了两次以上的样子Orz...
※ 编辑: e01234567 来自: 140.120.229.231 (11/30 16:43)
※ 编辑: e01234567 来自: 140.120.229.231 (12/01 02:37)