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 に追加したい場合、行列 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=1xn=2c=-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 に答える