说明使用scilab的特殊功能

时间:2019-03-12 21:51:16

标签: plot 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绘制此函数。

1 个答案:

答案 0 :(得分:0)

首先,请尝试学习MarkDown语言以发布可读的问题。您的第一个问题有一些信息,由于与StackOverflow的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));

结果是:

  

enter image description here

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

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

然后使用:

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