Matlab 'Function Unset/Unused'

Matlab 'Function Unset/Unused'

初学Matlab,有很多不懂的地方;我有三个问题,如下:

我遇到的最大问题围绕 function B= upper_triang(A),它指出它是 'a function unused'。阅读 Matlab 工具提示,我猜它与未定义的值有关? AND B 当然是未设置的,但我认为我将 B 定义为一个函数,那么为什么它未设置?我假设 B 是 U,但在数学部分是啊,所以我不确定它会是什么。

为了给我的代码提供上下文,我发送了我有问题的作业代码部分。

%%%This is for part a for problem 1.
A=zeros(8,8);%%%For the size column and row size of matrix A.
for j=1:8
for k=1:8
if j==k
A(j,k)=-2;
end
if abs(j-k)==1
A(j,k)=1;
end
end
end
[L,U]=lu(A); %%%Proving L and U. 
L*U; %%%Proving that L*U=A, thus it is correct.

%%%This is for part b for problem 1
function B= upper_triang(A) 
%%%Input A--> Matrix for m*n for the size
%%%Output B--> Is the upper triangular matrix of the same size
[m,n]=size(A);
for k=1:m-1
    for i=k+1:m
        u=A(i,k)/A(k,k);
        
        for j=(k):n
            A(i,j)=A(i,j)-u*A(k,j);
        end
    end
end
B-A; 
end

函数未使用

这里的问题是您只创建了一个函数,但您从未使用过它。 function B = upper_triang(A) 之后的所有内容只是告诉 Matlab 在调用该函数时该怎么做,但您永远不会这样做。

我猜想,在 LU 分解之后但在函数声明之前,您应该添加一行

B = upper_triang(A);

输出未设置

第二个问题是,虽然您声明 B 应该是函数的输出 upper_triang(),但它不是在函数本身的任何地方“创建”的。 某处应该有一行

B = something;

现在,我的线性代数很生疏,但我认为你要做的应该是:

%%%This is for part b for problem 1
function B= upper_triang(A) 
%%%Input A--> Matrix for m*n for the size
%%%Output B--> Is the upper triangular matrix of the same size
[m,n]=size(A);
B = A; % copy the input matrix in B, and work with it from now on
for k=1:m-1
    for i=k+1:m
        u=B(i,k)/B(k,k);
        for j=(k):n
            B(i,j)=B(i,j)-u*B(k,j);
        end
    end
end
B = B - A; % not really sure about this
end