0

我是 Octave 的基础,有人可以帮我写代码吗?

A = zeros(40);
format long
function xn=xnf(n,xn,c)
    if n<=40
        xn = xn^2+c;
        A(n,n)=xn;
        n++;
        xnf(n,xn,c);
    end
end
xnf(1,2,-2)

我想将 xn 值添加到矩阵中,但它总是只有零值 - 为什么?

4

2 回答 2

1

我对 Octave 知之甚少,但在 matlab 中,如果我想将值 xn 添加到矩阵 A 中,而我想要的是矩阵,那么我会这样做

function A=xnf(n,xn,c,A)
   if n<=40
       xn = xn^2+c;
       A(n,n)=xn;
       n=n+1;
       A=xnf(n,xn,c,A);
   end
end

因为一旦你返回,函数内部使用的所有变量都会被删除,所以如果你需要 A 矩阵,请确保你返回它

于 2013-11-04T21:53:57.433 回答
1

对于您指定的值 ( n=1, xn=2, c=-2),您将获得的矩阵沿主对角线为 2,其他任何地方为零,可以使用A=diag(2*ones(40,1)).

如果您想更改参数,此代码将在 Matlab 中工作,因此应该在八度音程中工作:

N=40;
V=zeros(1,N);
V(1)=xn;
for i=2:N
    V(i)=V(i-1)^2+c;
end
A=diag(V);
于 2013-11-04T21:51:30.377 回答