Board logo

标题: [数值计算] [分享]批处理使用牛顿迭代法快速求平方根或近似值 [打印本页]

作者: batman    时间: 2009-4-26 03:50     标题: [分享]批处理使用牛顿迭代法快速求平方根或近似值

  1. @echo off
  2. rem 原理来源于牛顿迭代法,只能计算1-214748,保留两位小数
  3. set /p a=请输入数:
  4. set /a a*=10000,b=a
  5. for /l %%a in (1,1,100) do set /a b=(b+a/b)/2
  6. set /a c=b*b,a/=10000
  7. echo %a%的平方根或近似值为:%b:~,-2%.%b:~-2%
  8. echo %b:~,-2%.%b:~-2%*%b:~,-2%.%b:~-2%=%c:~,-4%.%c:~-4%
  9. pause>nul
复制代码
[ 本帖最后由 batman 于 2009-4-26 03:54 编辑 ]
作者: xxx    时间: 2009-4-26 07:28

建议各位版主可以多找点这样的数学题...有时讨论算法也是件好事.
作者: defanive    时间: 2009-4-26 09:51

无数年前写的东西,算法是(n/x+x)/2,精度最高0.0001,支持1~999999999
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::Made By Defanive
  4. :start
  5. cls
  6. echo 由于CMD位数计算的限制,精确度最高0.0001
  7. echo 越大的数字数字精确度越来越低
  8. echo Made By Defanive
  9. echo.
  10. set/p type=输入一个整数:
  11. if %type% gtr 999999999 goto start
  12. if %type% lss 1 goto start
  13. set/a xn=type
  14. set/a times=1
  15. if %type% geq 99 set/a times=2
  16. if %type% geq 9999 set/a times=3
  17. if %type% geq 999999 set/a times=4
  18. if %type% geq 99999999 set/a times=5
  19. for /l %%a in (1,1,4) do (
  20. set/a yn=!xn!*100
  21. set/a zn=!yn!/100
  22. if not !yn! lss 0 (
  23. if !xn!==!zn! (
  24. set/a xn=!yn!
  25. )
  26. )
  27. )
  28. set/a sn=xn
  29. set sqn=1
  30. for /l %%a in (1,1,20) do (
  31. set/a sqn=sn/sqn+sqn
  32. set/a sqn=sqn/2
  33. )
  34. echo.
  35. echo √%type% ≈ !sqn:~0,%times%!.!sqn:~%times%!
  36. pause>nul
  37. goto start
复制代码

[ 本帖最后由 defanive 于 2009-4-26 12:28 编辑 ]
作者: Batcher    时间: 2009-4-26 12:18     标题: 回复 3楼 的帖子

无数年前你不知道使用缩进,但是现在贴代码出来的时候应该缩进一下啊。
^_^
作者: defanive    时间: 2009-4-26 12:25     标题: 回复 4楼 的帖子

有道理,不过话说那个时候我的批处理还是个小菜。。。

——————

貌似论坛不支持缩进啊,怎么显示#160;?

[ 本帖最后由 defanive 于 2009-4-26 12:27 编辑 ]
作者: Batcher    时间: 2009-4-26 12:50     标题: 回复 5楼 的帖子

用空格控制缩进吧
作者: Batcher    时间: 2011-4-3 18:13

7# 嗜血魂歌


请问你发现哪个DOS里面不能输入小数?
作者: 1055367558    时间: 2017-9-15 19:10

回复 3# defanive


    可以加个for/l。。减点代码
作者: m91opse    时间: 2018-5-10 04:24

高手,请问有没有支持小数求平方根或近似值计算批处理




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2