文章目录

  • 牛奶冻曲线
  • 动图绘制

牛奶冻曲线

牛奶冻大概是下面这种东西,这个Python做不了。但是Python可以绘制更加炫酷的牛奶冻曲线。
牛奶冻曲线(blancmange curve),因在1901年由高木贞治所研究,又称高木曲线。

在单位区间内,牛奶冻函数定义为

b(x)=∑n=0∞s(2nx)2ns(x)=min⁡n∈N∣x−n∣b(x)=\sum^\infty_{n=0}\frac{s(2^nx)}{2^n}\\ s(x)=\min_{n\in N}|x-n| b(x)=n=0∑∞​2ns(2nx)​s(x)=n∈Nmin​∣x−n∣

分形曲线的轮廓会随着阶数的增多而填充细节,即对于下面的BNB_NBN​来说,NNN的变化会增添曲线的自相似特性

BN(x)=∑n=0Ns(2nx)2nB_N(x)=\sum^N_{n=0}\frac{s(2^nx)}{2^n} BN​(x)=n=0∑N​2ns(2nx)​

动图绘制

接下来绘制一下

import numpy as np
import matplotlib.pyplot as plt
s = lambda x : np.min([x-np.floor(x), np.ceil(x)-x],0)
x = np.arange(1000).reshape(-1,1)/1000
N = np.arange(30).reshape(1,-1)      #2^N已经很大了,精度足够
b = np.sum(s(2**N*x)/2**N,1)
plt.plot(b)
plt.show()

其中,lambda表达式表示的就是牛奶冻曲线的生成逻辑,最后得到的曲线如下

牛奶冻曲线是一种典型的分形曲线,即随着区间的不断缩小,其形状几乎不发生什么变化,例如更改自变量的范围,令

x = np.arange(0.25,0.5,1e-3).reshape(-1,1)

最终得到的牛奶冻曲线在观感上是没什么区别的。

接下来绘制一下,当区间发生变化时,牛奶冻曲线的变化过程,可以发现非常明显的分形特性,随着坐标轴的不断细分,曲线的形状几乎不发生变化。


绘图代码如下,其中aniDraw模块的实现可参考:用Python绘制动态变化的曲线

源码地址:Python动态绘制圆锥曲线,并封装成类

from aniDraw import *# 三角波函数
s = lambda x : min(np.ceil(x)-x, x-np.floor(x))
s = lambda x : np.min([x-np.floor(x), np.ceil(x)-x],0)
x = np.arange(1000).reshape(-1,1)/1000
N = np.arange(30).reshape(1,-1)      #2^N已经很大了,精度足够
b = np.sum(s(2**N*x)/2**N,1)fig = plt.figure(figsize=(12,8))
ax = fig.add_subplot()
# n为坐标轴参数
def bcFunc(n):st = 1/3 - (1/3)**ned = 1/3 + (2/3)**nx = np.linspace(st,ed,1000).reshape(-1,1)b = np.sum(s(2**N*x)/2**N,1)return (x,b)line, = ax.plot([],[],lw=1)def animate(n):x,y = bcFunc(n)line.set_data(x,y)plt.xlim(x[0],x[-1])plt.ylim(np.min(y),np.max(y))return line, Ns = np.arange(1,10,0.1)
ani = animation.FuncAnimation(fig, animate, Ns, interval=125, blit=False)
plt.show()

Python制作牛奶冻相关推荐

  1. 怎么用python自制计算公式_手把手教你用python制作简易计算器,能够记录你使用的情况...

    话不多说,首先先看效果图,它能够记录你在使用过程中的历史,方便你查看是否有错: 接下来就仔细分析一下是如何制作的: 简易计算器 第一步:导入资源库 在过程中使用到了tkinter这个资源库,win+R ...

  2. 用 Python 制作可视化报表,这也太快了!

    作者 | 小F 来源 | 法纳斯特 在数据展示中使用图表来分享自己的见解,是个非常常见的方法. 这也是Tableau.Power BI这类商业智能仪表盘持续流行的原因之一,这些工具为数据提供了精美的图 ...

  3. Get了!用Python制作数据预测集成工具 | 附代码

    作者 | 李秋键 责编 | 晋兆雨 大数据预测是大数据最核心的应用,是它将传统意义的预测拓展到"现测".大数据预测的优势体现在,它把一个非常困难的预测问题,转化为一个相对简单的描述 ...

  4. 碉堡的小程序:用 Python 制作演示迷宫算法的 gif 动画

    微信改版,加星标不迷路! 碉堡的小程序:用 Python 制作演示迷宫算法的 gif 动画 作者:neozhaoliang 本文要介绍的是我写的一个有趣的小程序,一个脱离了低级趣味的程序,一个有益于广 ...

  5. Python制作当年第一款手机游戏-贪吃蛇游戏(练习)

    前言: 文章利用Python pygame做一个贪吃蛇的小游戏而且讲清楚每一段代码是用来干嘛的. 据说是贪吃蛇游戏是1976年,Gremlin公司推出的经典街机游戏,那我们今天用Python制作的这个 ...

  6. python制作解压工具_使用python制作一个解压缩软件

    python实现解压缩的重要模块就是--zipfile,其次是os 安装zipfile模块 首先得安装zipfile模块,打开cmd输入一下命令即可安装 pip install zipfile os是 ...

  7. python多张图片合并拼接,python制作sprite图、雪碧图

    python多张图片合并拼接,python制作sprite图.雪碧图 整理图片集 找两个文件夹,yangying和zhaoliying,分别放上照片8张,共16张照片. 创建sprite.py # 多 ...

  8. python制作神经网络_python_deeplearning02_使用python制作神经网络

    20180421 qzd ch02 - 使用python制作神经网络 构建框架 初始化函数 -- 设定输入层节点.隐藏层节点和输出层节点的数量. 训练 -- 学习给定训练集样本后,优化权重(权重--网 ...

  9. 如何用python制作动态二维码,提升表白成功率?

    来源:凹凸数据 本文约1000字,建议阅读5分钟. 本文教你用python制作动态二维码,助你表白成功! 关注数据派THU(DatapiTHU)后台回复"20200520"获取完整 ...

最新文章

  1. 关于UIEdgeInsetsMake
  2. 数据查找matlab,MATLAB:使用矢量化查找已排序数据的统计信息
  3. 再次献给那些心软的人!!!
  4. 算法提高 日期计算c语言,算法提高 日期计算
  5. @value 默认值为null_JAVA8之妙用Optional解决判断Null为空的问题
  6. 手机连接电脑wifi
  7. mysql如何撤销上一条指令_mysql命令行,多行命令时如何取消/返回修改前边的命令...
  8. C++socket编程(四):4.1 跨平台封装XTcp类接口
  9. C#会对于未赋值的变量/成员变量,给予一个初始值吗?
  10. MESI protocol digram
  11. 在PKM2 / CyberArticle / MetaProducts Inquiry / 网博士 中选择了网博士。 :)
  12. Tomcat Get请求中文乱码
  13. 关于出版《ARKit原生开发入门精粹》(2021-03-24更新)
  14. Android科大讯飞语音合成
  15. 传感器连接mysql_获取传感器数据并传入数据库-HTTP/POST/ASP.NET
  16. 为什么单片机只有可以整除8的特殊寄存器能够位寻址?
  17. 解决element-ui 的 Notification 重叠问题
  18. Android仿余额宝实现七天年化收益率图表
  19. 写一篇文章(writing a paper)
  20. it项目经理岗位职责(转)

热门文章

  1. 有关老年计算机培训的报道,深晚报道|教老年人使用智能手机 南澳开展“智能时代,乐享生活”培训活动...
  2. 【KSQL引擎 介绍】
  3. Python设置断点breakpoint(免IDE)
  4. python中lis的意思_Python语言入门(二)
  5. 使用linux的gpio点亮imx6ull的led灯
  6. 截止到20190828的前沿汇总
  7. LInux 下 Anaconda多环境切换
  8. Android 无usb数据线调试方法,ADB无线连接 调试
  9. 组合数学——计数原理和计数公式
  10. 【解决问题】修复虚拟机报错,写入文件时出错,请确认您有访问该目录的权限