使用 scilab 说明一个特殊函数

illustrate a special function using scilab

我写了一个函数来查找 Log(Fn) / n,其中 Fn 是斐波那契数列 F_{n+1} = F_n + F_{n-1}:

function [g] = logf(n)
    u = 0;
    v = 1;
    f = v;
    for i = 2:n do
        f = u + v;
        u = v;
        v = f;
    end
    g = log(f) / n;
endfunction

我需要的是为 1< n < 200 绘制此函数。

首先,请尝试学习 MarkDown 语言以 post 可读的问题。您的第一个问题有一些信息由于与 Whosebug 的 MarkDown 呈现冲突而未显示。

其次尝试尽可能模块化您的代码并使用我曾经使用过的约定来获得更具可读性的代码。使用 for 循环定义斐波那契数列:

function y = fibonacci(N)
    select N
    case 0 then
        y = 0;
    case 1 then
        y = 1;
    else
        y0 = 0;
        y1 = 1;
        y = 1;
        for ii = 3:N do
            y0 = y1;
            y1 = y
            y = y1 + y0;
        end
    end
endfunction

那么你有两个选择:

A. 以向量化形式定义函数:

function [g] = logf(n)
    for ii = n do
        g(ii) = log(fibonacci(ii)) / ii;
    end
endfunction

考虑到 Scilab 不会在函数上广播矩阵/列表,您应该自己做。

现在您可以使用以下方式绘图:

n = 1:200; 
plot(n, logf(n));

结果是:

B. 或者,您可以使用 feval 在序列上映射或广播您的函数。以标量形式定义函数:

function [g] = logf(n)
    g = log(fibonacci(n)) / n;
endfunction

然后绘制:

n = 1:200; 
plot(n, feval(n, logf));