Wul*_*art 0 ruby for-loop logarithm
我有以下代码
A = 1.0
B = 0.20
N = 8.0
for i in 1..Total
t = Maxt * rand
x = A * Math.cos(t) / (Math.log(B*Math.tan(t/(2*N))))
y = A * Math.sin(t) / (Math.log(B*Math.tan(t/(2*N))))
end
Run Code Online (Sandbox Code Playgroud)
如果我注释掉For循环它会执行正常并产生我想要的结果之一.如果我没有注释掉for循环,它会生成以下内容.我是Ruby的新手,主要是好奇为什么它只在for循环出现时才会中断.
rubyfile.rb:22:in `log': Numerical argument out of domain - log (Errno::EDOM)
from rubyfile.rb:22
from rubyfile.rb:20:in `each'
from rubyfile.rb:20
Run Code Online (Sandbox Code Playgroud)
Math.log表示对数函数,对于负数未定义.Math.tan但是,它表示切线函数,它可以返回负数.因此,如果Math.tan出现负数,Math.log则会告诉您其参数是"超出域",这意味着该数字没有对数.
我认为你的输入是随机的这一事实意味着,当你循环时,你比你只运行一次脚本更有可能得到那个错误.如果你是删除循环然后多次运行脚本,我打赌你最终会得到那个错误.
找出为什么你的数学不应该包含负数而且你很好去:)
| 归档时间: |
|
| 查看次数: |
946 次 |
| 最近记录: |