使用 scilab 说明一个特殊的函数 [英] illustrate a special function using scilab
问题描述
我编写了一个函数来查找Log(Fn)/n
,其中Fn
是斐波那契数列F_{n+1} = F_n+ F_{n-1}
:
I have written a function to find Log(Fn) / n
, where Fn
is the sequence of Fibonacci numbers 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< 绘制这个函数.≤200
.
推荐答案
首先请尝试学习 MarkDown 语言来发布可读的问题.您的第一个问题有一些信息由于与 StackOverflow 的 MarkDown 渲染冲突而未显示.
First all please try to learn MarkDown language to post readable questions. Your first question had some information which was not shown due to the conflicts with StackOverflow's MarkDown rendering.
其次尽量将你的代码模块化,并使用我曾经使用过的约定让代码更具可读性.使用 for 循环定义斐波那契数列:
Secondly try to modularize your code as much as possible and use the convention I have used to have a more readable code. Define a Fibonacci using a for loop:
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. 以矢量化形式定义您的函数:
A. define your function in a vectorized form:
function [g] = logf(n)
for ii = n do
g(ii) = log(fibonacci(ii)) / ii;
end
endfunction
考虑到 Scilab 不会通过函数广播矩阵/列表,您应该自己做.
consider that Scilab does not broadcast matrices / lists over functions and you should do that your self.
现在你可以用:
n = 1:200;
plot(n, logf(n));
结果是:
B. 或者,您可以使用 feval
在序列上映射或广播您的函数.以标量形式定义函数:
B. Alternatively you could map or broadcast your function over the sequence using feval
. Define your function in scalar form:
function [g] = logf(n)
g = log(fibonacci(n)) / n;
endfunction
然后绘制:
n = 1:200;
plot(n, feval(n, logf));
这篇关于使用 scilab 说明一个特殊的函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!