我编写了一个查找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
绘制此函数。
答案 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));
结果是:
B。或者,您可以使用feval
在序列上映射或广播功能。以标量形式定义函数:
function [g] = logf(n)
g = log(fibonacci(n)) / n;
endfunction
然后使用:
n = 1:200;
plot(n, feval(n, logf));