设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3398|回复: 13
打印 上一主题 下一主题

[已经过期] 三角函数计算功能问题

[复制链接]

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

跳转到指定楼层
1
发表于 2013-12-10 15:14:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x

  1.   def sin # 正弦函数
  2.     s=0.000290888#sin1'
  3.     c=0.999854545#cos1'
  4.     s1=0.000290888#sin1'
  5.     c1=0.999854545#cos1'
  6.     for i in 2..self
  7.       s*=c1
  8.       s+=c*s1
  9.       c=(1-s**2)**0.5
  10.     end
  11.     num=s
  12.   end
  13.   def cos # 余弦函数
  14.     s=0.000290888#sin1'
  15.     c=0.999854545#cos1'
  16.     s1=0.000290888#sin1'
  17.     c1=0.999854545#cos1'
  18.     for i in 2..self+1
  19.       s*=c1
  20.       s+=c*s1
  21.       c=(1-s**2)**0.5
  22.     end
  23.     num=c
  24.   end
  25.   def tan # 正切函数
  26.     s=0.000290888#sin1'
  27.     c=0.999854545#cos1'
  28.     s1=0.000290888#sin1'
  29.     c1=0.999854545#cos1'
  30.     for i in 2..self
  31.       s*=c1
  32.       s+=c*s1
  33.       c=(1-s**2)**0.5
  34.     end
  35.     c=(1-(s*c1+c*s1)**2)**0.5
  36.     t=s/c
  37.     num=t
  38.   end
复制代码
算sin30度、cos60度算出来的不是0.5···而且算不出1,算出负数就崩溃···求解原因···

点评

c = 0.999999957692025  发表于 2013-12-14 19:54
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png

Lv1.梦旅人

梦石
0
星屑
75
在线时间
241 小时
注册时间
2013-3-28
帖子
67
2
发表于 2013-12-10 15:50:44 | 只看该作者
直接用Math模块不行

点评

LBQ
Radians很好吃的  发表于 2013-12-11 14:08
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

3
发表于 2013-12-10 16:53:55 | 只看该作者
你这都是近似值啊,当然算不出1,因此sin30°不是0.5,而且也有可能根号下面是负数导致崩溃。
还有个很严重的问题,就是你只能算0到90度的值。超过90度就错了。
话说很少用和角公式算三角函数的。为啥不用泰勒公式?收敛速度快而且不容易出错。

点评

我才高一而且是文科···根本没讲···而且一楼那个脚本是按照我们数学书上一个VB的程序思路来做的···  发表于 2013-12-28 19:55
表示泰勒公式是高数日的东西。  发表于 2013-12-11 17:26
其实应该用正余弦函数表的……  发表于 2013-12-11 12:20
↓↓ 好吧我错了……你说的是楼主……泰勒公式高中应该有讲吧,就是讲的不深刻而已。  发表于 2013-12-10 23:22
↓ 你是怎么就能肯定我在上高中?  发表于 2013-12-10 23:20
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
117
在线时间
552 小时
注册时间
2012-8-18
帖子
1429
4
发表于 2013-12-10 21:52:38 | 只看该作者
1.好奇葩的方法,调用self是想收个nil么
2.Math的三角函数必须用弧度制,函数定义域有的是有限制的
3.我好像看到了和角公式?看起来好流弊的样子,求解这种方法比Math默认的慢多少倍2333

点评

环境是Ruby2.0,Ruby的相同代码的速度大约是Ruby2.0>Ruby1.9>Ruby1.8,如果RMXP更慢。。默哀  发表于 2013-12-11 15:39
表示实测下面的算法和标准库一比是300倍左右。。  发表于 2013-12-11 15:38
我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
帖子
1839

开拓者

5
发表于 2013-12-11 14:12:17 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

6
 楼主| 发表于 2013-12-14 18:20:54 | 只看该作者
晴兰 发表于 2013-12-11 14:12
算不准的原因是。。你的cos1分的值写错了。。。(是不是忘记开根号了)

另外给一个实现:

我是按照数学书上的那个程序设计思路弄得```应该没错吧```开根号不就等于**0.5吗```

点评

你初值抄错了  发表于 2013-12-14 18:41
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
帖子
1839

开拓者

7
发表于 2013-12-14 19:44:40 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

8
 楼主| 发表于 2013-12-14 20:00:44 | 只看该作者
晴兰 发表于 2013-12-14 19:44
不管你是抄错还是写错还是上传错还是记错。
你的初值s*s + c*c 就不等于1。而且偏差不小。这是你30度得不到 ...
  1. irb(main):108:0> (0..1000).map{|x|
复制代码
这行也出错是什么情况```

点评

说实话。。这行不是回答你问题的。。。出错就出错吧  发表于 2013-12-14 20:01
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

9
 楼主| 发表于 2013-12-28 20:01:48 | 只看该作者
晴兰 发表于 2013-12-11 14:12
算不准的原因是。。你的cos1分的值写错了。。。(是不是忘记开根号了)

另外给一个实现:

闹心的事情又来了的说···
  1. p 30.cos→0.154251449887585
  2. p 60.cos→-0.952142980415156
  3. p 3600.cos→0.965045075851604
复制代码
就是这样···用了你的脚本去掉原来的脚本后的情况···

点评

我给的是弧度。。你带入的是角度  发表于 2013-12-29 00:09
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

10
 楼主| 发表于 2013-12-29 00:33:51 | 只看该作者
晴兰 发表于 2013-12-14 19:44
不管你是抄错还是写错还是上传错还是记错。
你的初值s*s + c*c 就不等于1。而且偏差不小。这是你30度得不到 ...

那就要用的脚本是
  1. p 1/2.cos
复制代码
才是90度?
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-9-30 08:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表