矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
楼主: 雪冬

小实验:一个最小的Python

[复制链接]
     
 楼主| 发表于 2018-6-19 21:52:42 | 显示全部楼层
本帖最后由 雪冬 于 2018-6-19 22:02 编辑
ace919 发表于 2018-6-19 18:58
你这个收敛的太慢太慢了。有很多收敛速度快的公式,比如:
pi = 16 * arctan(1/5) - 4 * arctan(1 / 239 ...


谢谢指导。这个需要展开arctan()
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-6-19 22:35:08 | 显示全部楼层
Python命令行模式,做计算器很好用。也可以在学习Python时随时验证各种语句。比如计算2的1000次方。结果如下图。
python2-1000.jpg
回复 支持 反对

使用道具 举报

     
发表于 2018-6-19 22:56:29 | 显示全部楼层
python用在单片机上,网上有很多的标准C源码;一般是将python的源码和你的源代码统一编译,使用C和python互相调用的方式运行。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-6-19 23:22:43 | 显示全部楼层
blc220 发表于 2018-6-19 22:56
python用在单片机上,网上有很多的标准C源码;一般是将python的源码和你的源代码统一编译,使用C和python互 ...

原来是这样。多谢!  
回复 支持 反对

使用道具 举报

     
发表于 2018-6-20 06:46:48 | 显示全部楼层
雪冬 发表于 2018-6-19 21:51
是不是带个操作系统,情况会好些?实现起来会容易些?您说的两种系统带有操作系统么?

带操作系统当然好,文件啊,设备啊,内存分配等等基础都有了,不过对资源少的单片机,往往不现实。
Arduino本身不带操作系统,树莓派带Linux
回复 支持 反对

使用道具 举报

     
发表于 2018-6-20 06:50:50 | 显示全部楼层
雪冬 发表于 2018-6-19 21:52
谢谢指导。这个需要展开arctan()

你那个算圆周率的程序就是
pi = 4 * arctan(1)
的展开式
回复 支持 反对

使用道具 举报

     
发表于 2018-6-20 07:29:35 | 显示全部楼层
雪冬 发表于 2018-6-19 17:27
运行结果,
D:\0000\python>python 004.py
3.14159765361

下面是公式 pi = 16 * arctan(1/5) - 4 * arctan(1 / 239) 的Python计算程序:


# Calculate PI, 2018-6-20
# pi = 16 * arctan(1/5) - 4 * arctan(1 / 239)

P5_2 = 1.0 / (5.0 * 5.0)
P239_2 = 1.0 / (239.0 * 239.0)

t5_2 = 1.0 / 5.0
t239_2 = 1.0 / 239.0

s5 = t5_2
s239 = t239_2

for i in range(2, 20):
    t5_2 = -t5_2 * P5_2
    s5 = s5 + t5_2 / ( 2 * i - 1.0)
   
    t239_2 = -t239_2 * P239_2
    s239 = s239 + t239_2 / ( 2 * i - 1.0)

pi_ = 16.0 * s5 - 4.0 * s239   

print(pi_)


运行结果:
3.141592653589794
只用20次循环,就精确到小数点后14位。对比你那个是20万次循环,精确到小数点后5位
回复 支持 反对

使用道具 举报

     
发表于 2018-6-20 08:23:54 | 显示全部楼层
这是另一门天书,退休后学习或下辈子学习了
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-6-20 08:52:04 | 显示全部楼层
ace919 发表于 2018-6-20 07:29
下面是公式 pi = 16 * arctan(1/5) - 4 * arctan(1 / 239) 的Python计算程序:

高!        
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-6-20 09:42:55 | 显示全部楼层
ace919 发表于 2018-6-20 06:46
带操作系统当然好,文件啊,设备啊,内存分配等等基础都有了,不过对资源少的单片机,往往不现实。
Ardu ...

看来对单片机,最实用的语言还是 C 。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-6-20 09:54:54 | 显示全部楼层
ace919 发表于 2018-6-20 07:29
下面是公式 pi = 16 * arctan(1/5) - 4 * arctan(1 / 239) 的Python计算程序:


tanα=1/5
tanβ=1/239

tan2α=5/12
tan4α=120/119

tan(4α-β)=1

4α-β=π/4

确实如此。
回复 支持 反对

使用道具 举报

     
发表于 2018-6-20 10:11:34 | 显示全部楼层
雪冬 发表于 2018-6-20 09:42
看来对单片机,最实用的语言还是 C 。

确实如此,特殊情况(因为优化速度等),再加点汇编。
若将来单片机资源丰富了,也有可能Python会成为单片机主流编程语言之一
回复 支持 反对

使用道具 举报

     
发表于 2018-6-20 10:15:32 | 显示全部楼层
雪冬 发表于 2018-6-20 09:54
tanα=1/5
tanβ=1/239

应该是这样的
不过我自己没演算过
回复 支持 反对

使用道具 举报

     
发表于 2018-7-12 10:37:56 | 显示全部楼层
语法VS算法
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2018-7-12 10:58:50 | 显示全部楼层

还是算法厉害。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2024-4-24 10:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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