打印

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

[复制链接]
2482|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 gaoyang9992006 于 2018-5-13 10:35 编辑
#!/usr/local/bin/lua
print("接下来是表演二分法求方程根的时候了")
print("x^3-5*x-1=0")
print("========================华丽的分割线============================")
a=0;b=3;
local n=1
x=(a+b)/2
print("第"..n.."次二分,x="..x)
while((x-a)>0.000000001) do
  fx=x^3-5*x-1
  if(fx>0) then
       b=x
  else
       a=x
  end
x=(a+b)/2
n=n+1
print("第"..n.."次二分,x="..x)
end
print("==============误差已经控制在百万分之1内==============")
print("一共经历了"..n.."次二分,得到方程的根:x="..x)
  fx=x^3-5*x-1
print("验算x^3-5*x-1="..string.format("%f",fx))


相关帖子

沙发
gaoyang9992006|  楼主 | 2018-5-12 23:15 | 只看该作者

使用特权

评论回复
板凳
gaoyang9992006|  楼主 | 2018-5-13 10:31 | 只看该作者
Python3实现
#!/usr/bin/python3

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

while ((x-a)>0.000000001):
    fx=x**3-5*x-1
    if fx>0:
            b=x
    else:
            a=x
    x=(a+b)/2
    n=n+1
    print("第",n,"次二分,x=",x)

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


使用特权

评论回复
地板
gaoyang9992006|  楼主 | 2018-5-13 10:33 | 只看该作者
Python运行的截图,跟那个Lua的是一样的,不过大家会发现,编写Python的时候,没有一个程序段的结束标志,都是靠缩进解决的,这样没有Lua,通过end表示段更方便。Lua是用do end 进行分区段的,就好比C的,{   。。。。}

使用特权

评论回复
5
gaoyang9992006|  楼主 | 2018-5-13 10:34 | 只看该作者
我们也可以对比一下,发现默认情况下,Python运行的精度更高,但是结果是一样的,只不过Python展示的小数位更多。

使用特权

评论回复
6
gaoyang9992006|  楼主 | 2018-5-13 10:37 | 只看该作者
对比也会发现,Python其实很多缺点的,另外没有Lua简洁。

使用特权

评论回复
7
gaoyang9992006|  楼主 | 2018-6-20 11:51 | 只看该作者
这个算法大概学工科的应该都学过,计算方法里的。计算方法就是讲如何用计算机实现求解的知识,比如解高阶方程,牛顿插值,等。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

1971

主题

15989

帖子

210

粉丝