2017-04-10 102 views
-1

所以我正在尝试使用Ruby来解决trig函数,并且我在使数学库工作时遇到了一些困难。红宝石和数学模块来解决trig功能

trig函数是:y = (x^3 sqrt(2x^2))/(sin(x+5))其中x = 51,答案需要以度为单位。这个问题应该在Matlab中解决,我没有经验,但我设法将函数的以下输出拼凑在一起:1.1540e + 07,并且我想验证我在Matlab中做什么是正确的,所以我想要使用Ruby来确保答案是我应该得到的。

的Ruby代码,我试图用解决这一功能是:puts ((51 ** 3)Math.sqrt(2(51 ** 2))/(Math::sin(56.degrees)))然而,当运行代码我得到以下错误:

/Users/sam/Desktop/jasons_shit.rb:1: syntax error, unexpected tCONSTANT, expecting ')' 
puts ((51 ** 3)Math.sqrt(2(51 ** 2))/(Math::sin(56.degrees))) 
       ^
/Users/sam/Desktop/jasons_shit.rb:1: syntax error, unexpected '(', expecting ')' 
puts ((51 ** 3)Math.sqrt(2(51 ** 2))/(Math::sin(56.degrees))) 
         ^
/Users/sam/Desktop/jasons_shit.rb:1: syntax error, unexpected ')', expecting end-of-input 
puts ((51 ** 3)Math.sqrt(2(51 ** 2))/(Math::sin(56.degrees))) 

我该如何去评估这个功能和解决这些错误的?

+0

这是一个MATLAB或红宝石的问题吗? – NKN

+0

@NKN红宝石。我想用Ruby的数学函数仔细检查我从Matlab中得到的答案。 –

+0

@NKN,我不知道我用Ruby的数学库得到的错误是怎么回事 –

回答

2

你需要有*每次乘时间,并尝试改变为弧度:

x = 51 
p (x ** 3) * Math.sqrt(2 * x ** 2)/(Math::sin((x+5) * Math::PI/180)) 

你也不需要那么多paranthesis因为Ruby理解操作的数学才能。

1

由于错误告诉你,有些(*丢失。

由于预期的变量应该在Radians中,因此您应该先将度数转换为弧度,然后再进行计算。

xindeg = 51 
xinrad = xindeg*Math::PI/180 
puts xinrad ** 3 * Math.sqrt(2*xinrad ** 2)/Math::sin(xinrad+5*Math::PI/180) 

1.070855715686936 

而且在MATLAB,正确的方法是:

x=51 
xinrad = x*pi/180; 
y = (xinrad^3 * sqrt(2*xinrad^2))/(sin(xinrad+5*pi/180)) 

y = 

1.070855715686936