二分法求根(使用Lua和Python实现)

[复制链接]
3008|6
 楼主| gaoyang9992006 发表于 2018-5-12 23:14 | 显示全部楼层 |阅读模式
本帖最后由 gaoyang9992006 于 2018-5-13 10:35 编辑
  1. #!/usr/local/bin/lua
  2. print("接下来是表演二分法求方程根的时候了")
  3. print("x^3-5*x-1=0")
  4. print("========================华丽的分割线============================")
  5. a=0;b=3;
  6. local n=1
  7. x=(a+b)/2
  8. print("第"..n.."次二分,x="..x)
  9. while((x-a)>0.000000001) do
  10.   fx=x^3-5*x-1
  11.   if(fx>0) then
  12.        b=x
  13.   else
  14.        a=x
  15.   end
  16. x=(a+b)/2
  17. n=n+1
  18. print("第"..n.."次二分,x="..x)
  19. end
  20. print("==============误差已经控制在百万分之1内==============")
  21. print("一共经历了"..n.."次二分,得到方程的根:x="..x)
  22.   fx=x^3-5*x-1
  23. print("验算x^3-5*x-1="..string.format("%f",fx))


 楼主| gaoyang9992006 发表于 2018-5-12 23:15 | 显示全部楼层
 楼主| gaoyang9992006 发表于 2018-5-13 10:31 | 显示全部楼层
Python3实现
  1. #!/usr/bin/python3

  2. print("接下来是表演二分法求方程根的时候了")
  3. print("x^3-5*x-1=0")
  4. print("========================华丽的分割线============================")
  5. a=0.0
  6. b=3.0
  7. n=1
  8. x=(a+b)*0.5
  9. print("第",n,"次二分,x=",x)

  10. while ((x-a)>0.000000001):
  11.     fx=x**3-5*x-1
  12.     if fx>0:
  13.             b=x
  14.     else:
  15.             a=x
  16.     x=(a+b)/2
  17.     n=n+1
  18.     print("第",n,"次二分,x=",x)

  19. print("==============误差已经控制在百万分之1内==============")
  20. print("一共经历了",n,"次二分,得到方程的根:x=",x)
  21. fx=x**3-5*x-1
  22. print("验算x^3-5*x-1=%f"%(fx))


 楼主| gaoyang9992006 发表于 2018-5-13 10:33 | 显示全部楼层
Python运行的截图,跟那个Lua的是一样的,不过大家会发现,编写Python的时候,没有一个程序段的结束标志,都是靠缩进解决的,这样没有Lua,通过end表示段更方便。Lua是用do end 进行分区段的,就好比C的,{   。。。。}
深度截图_选择区域_20180513103201.png
 楼主| gaoyang9992006 发表于 2018-5-13 10:34 | 显示全部楼层
我们也可以对比一下,发现默认情况下,Python运行的精度更高,但是结果是一样的,只不过Python展示的小数位更多。
 楼主| gaoyang9992006 发表于 2018-5-13 10:37 | 显示全部楼层
对比也会发现,Python其实很多缺点的,另外没有Lua简洁。
 楼主| gaoyang9992006 发表于 2018-6-20 11:51 | 显示全部楼层
这个算法大概学工科的应该都学过,计算方法里的。计算方法就是讲如何用计算机实现求解的知识,比如解高阶方程,牛顿插值,等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

2052

主题

16403

帖子

222

粉丝
快速回复 在线客服 返回列表 返回顶部