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

[复制链接]
2151|6
手机看帖
扫描二维码
随时随地手机跟帖
gaoyang9992006|  楼主 | 2018-5-12 23:14 | 显示全部楼层 |阅读模式
本帖最后由 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 | 显示全部楼层
深度截图_选择区域_20180512231443.png

使用特权

评论回复
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的,{   。。。。}
深度截图_选择区域_20180513103201.png

使用特权

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

使用特权

评论回复
gaoyang9992006|  楼主 | 2018-5-13 10:37 | 显示全部楼层
对比也会发现,Python其实很多缺点的,另外没有Lua简洁。

使用特权

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

使用特权

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

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1889

主题

15608

帖子

197

粉丝