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

Project1

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

[胡扯] 啊我居然才发现这个站点啊

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1939
在线时间
403 小时
注册时间
2015-8-30
帖子
395
跳转到指定楼层
1
发表于 2018-8-13 21:50:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 有丘直方 于 2018-8-13 21:52 编辑

去年6R关掉之后我就对于自己的账号里面的东西非常惋惜啊!
结果过了那么久才发现原来我的东西全都跑到这里(rpg.blue)来了!
真是相见恨晚!

刚刚瞎写了个解方程用的代码:
RUBY 代码复制
  1. def solve(f, ini = 0, dx = 1.0e-8, eps = 1.0e-8, times = 100)
  2.   res = ini
  3.   times.times do
  4.     x = res
  5.     y = f.call(res)
  6.     return res if y.abs <= eps
  7.     res = linear_solve(*point_slope_to_linear_function(x, y, diff(f, x, dx)))
  8.   end
  9.   return
  10. end
  11. def diff(f, x, dx = 1.0e-8)
  12.   d1 = (f.call(x) - f.call(x-dx)) / dx
  13.   d2 = (f.call(x+dx) - f.call(x)) / dx
  14.   (d1+d2) / 2
  15. end
  16. def linear_solve(k, b)
  17.   -b/k
  18. end
  19. def point_slope_to_linear_function(x, y, k)
  20.   [k, y-x*k]
  21. end
使用Newton法。
使用方法:先定义一个提供call(x)方法的对象f作为函数,然后调用solve(f, ini)即可返回这个函数的实零点中距离ini最近的那个……
指定的dx和eps越小精度越高……
如果算出来方程无解可以尝试把times调大一点……
令我没想到的是写完这个代码居然测试一遍就成功……
测试用代码:
RUBY 代码复制
  1. def function(x)
  2.   3*x**3-2*x**2+12*x-123
  3. end
  4. f = method(:function)
  5. p solve(f) # => 3.2726090206620366
经过MATLAB检验,确实是正确的解,而且精度还挺高的……

评分

参与人数 1+1 收起 理由
Vortur + 1 塞糖

查看全部评分

小仙女一枚~

Lv5.捕梦者 (版主)

梦石
1
星屑
23994
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

2
发表于 2018-8-13 22:58:02 | 只看该作者
这个……不需要算 f(x) 的值吧
  1. d1 = (f.call(x) - f.call(x-dx)) / dx
  2. d2 = (f.call(x+dx) - f.call(x)) / dx
  3. (d1+d2) / 2
复制代码

点评

一定要这么做的话,可以随机选择使用d1或者d2,反正切线法也不在乎这些……  发表于 2018-8-15 21:05
确实……我的本意是计算的近似左导数和近似右导数的平均数来算出近似导数  发表于 2018-8-15 20:53
我的意思是你d1+d2,f.call(x)那一项抵消了  发表于 2018-8-14 18:17
我在这里是算导数的近似值,那你觉得这里咋算嘞  发表于 2018-8-14 13:51
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
12157
在线时间
4435 小时
注册时间
2014-4-11
帖子
5955

开拓者

3
发表于 2018-8-13 23:07:57 | 只看该作者
因为名字和RM没扯上关系。
就搜索不到。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-24 11:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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