如何解决无法在八度函数中返回复数
我定义了一个函数如下:
function retval = nck (n,k)
#print(n,k)
p = 1;
for i = 0:k-1
p = p * (n - i);
endfor
final = p / factorial(k);
if(isreal(final))
retval = rats(final);
else
re = rats(real(final));
im = rats(imag(final));
retval = complex(re,im);
endif
endfunction
当我如下调用函数时,出现错误:
>> nck(i,2)
error: invalid conversion from string to real N-D array
error: called from
nck at line 13 column 12
>>
我传递一个复数作为第一个参数。正确的写法是什么?
解决方法
如果您只想将结果视为分数而不是小数,您可以简单地使用像
这样的普通函数function retval = nck (n,k)
p = 1;
for i = 0:k-1; p = p * (n - i); endfor
retval = p / factorial(k);
endfunction
然后在调用它之前执行 format rat
:
octave:1> format rat
octave:2> nck( i,2 )
ans = -1/2 - 1/2i
如果您想更“本机”地使用分数,那么您可能会对符号包感兴趣:
octave:3> pkg load symbolic
octave:4> nck( sym(i),2 )
ans = (sym)
ⅈ⋅(-1 + ⅈ)
──────────
2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。