Python绘制牛奶冻曲线(高木曲线)案例

前言:

牛奶冻曲线(blancmange curve),因在1901年由高木贞治所研究,又称高木曲线。

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

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

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()

如图所示:

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

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

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

接下来绘制一下,当区间发生变化时,牛奶冻曲线的变化过程

绘图代码为:

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)**n
    ed = 1/3 + (2/3)**n
    x = 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绘制牛奶冻曲线(高木曲线)案例的文章就介绍到这了,更多相关Python 牛奶冻曲线内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python+NumPy绘制常见曲线的方法详解

    目录 一.利萨茹曲线 二.计算斐波那契数列 三.方波 四.锯齿波和三角波 在NumPy中,所有的标准三角函数如sin.cos.tan等均有对应的通用函数. 一.利萨茹曲线 (Lissajous curve)利萨茹曲线是一种很有趣的使用三角函数的方式(示波器上显示出利萨茹曲线).利萨茹曲线由以下参数方程定义: x = A sin(at + n/2) y = B sin(bt) 利萨茹曲线的参数包括 A . B . a 和 b .为简单起见,我们令 A 和 B 均为1,设置的参数为 a=9 , b=

  • Python+matplotlib实现简单曲线的绘制

    目录 一.安装matplotlib 二.测试 matplotlib 三. 绘制简单的折线 四.使用 scatter() 绘制散点图并设置其样式 1.要绘制单个点 2.要绘制系列点 3.自动计算数据 4.自动保存图表 一.安装matplotlib 1)由于已安装anaconda,可直接打开anaconda prompt,再用命令pip install matplotlib进行安装,因镜像问题,可能较慢,建议第2种方式. 2)访问https://pypi.org/project/matplotlib

  • Python+pyecharts绘制双动态曲线教程详解

    总体跟官方样例相似,但是官方样例因为部分代码有误无法运行,同时需要了解json,以及前后端知识需要一些时间,因此供大家参考. 这个是views def line_base() -> Line: line = ( Line() .add_xaxis(list(range(10))) .add_yaxis(series_name="专注度", y_axis=[randrange(0, 100) for _ in range(10)],areastyle_opts=opts.AreaS

  • Python中ROC曲线绘制

    首先以支持向量机模型为例 先导入需要使用的包,我们将使用roc_curve这个函数绘制ROC曲线! from sklearn.svm import SVC from sklearn.metrics import roc_curve from sklearn.datasets import make_blobs from sklearn. model_selection import train_test_split import matplotlib.pyplot as plt %matplot

  • python读取excel数据绘制简单曲线图的完整步骤记录

    python读写excel文件有很多种方法: 用xlrd和xlwt进行excel读写 用openpyxl进行excel读写 用pandas进行excel读写 本文使用xlrd读取excel文件(xls,sxls格式),使用xlwt向excel写入数据 一.xlrd和xlwt的安装 安装很简单,windos+r调出运行窗口,输入cmd,进入命令行窗口,输入以下命令. 安装xlrd: pip install xlrd 安装xlwt: pip install xlwt xlrd的API(applica

  • 利用python绘制正态分布曲线

    使用Python绘制正态分布曲线,借助matplotlib绘图工具: #-*-coding:utf-8-*- """ python绘制标准正态分布曲线 """ # ============================================================== import numpy as np import math import matplotlib.pyplot as plt def gd(x, mu=0, s

  • 详解如何利用Python绘制科赫曲线

    目录 1. 递归 1.1 定义 1.2 数学归纳法 2. 递归的使用方法 2.1 阶乘 2.2 字符串反转 3. 科赫曲线的绘制 3.1 概要 3.2 绘制科赫曲线 3.3 科赫曲线的雪花效果 3.4 分形几何 1. 递归 1.1 定义 函数作为一种代码封装, 可以被其他程序调用,当然,也可以被函数内部代码调用.这种函数定义中调用函数自身的方式称为递归.就像一个人站在装满镜子的房间中,看到的影像就是递归的结果.递归在数学和计算机应用上非常强大,能够非常简洁地解决重要问题. 数学上有个经典的递归例

  • Python绘制牛奶冻曲线(高木曲线)案例

    前言: 牛奶冻曲线(blancmange curve),因在1901年由高木贞治所研究,又称高木曲线. 在单位区间内,牛奶冻函数定义为: 分形曲线的轮廓会随着阶数的增多而填充细节,即对于下面的来说, N的变化会增添曲线的自相似特性 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(

  • Python绘制二维曲线的日常应用详解

    使用Python绘制出类似Excel或者MATLAB的曲线还是比较容易就能够实现的,需要用到的额外库有两个,numpy和matplotlib.使用这两个模块实现的曲线绘制其实在一定程度上更像是MATLAB的plot功能,不过今天看了一下matplotlib网站上的信息,现在的功能更为强劲了,而且已经支持三维图像的绘制. 模块库的安装非常简单,我使用的Mac,在Mac上用pip进行了两个模块库的安装都十分顺畅.相信其他平台基本上也都这样,如果能够联网,这种安装方式是十分推荐的,确实是简单. 我用P

  • python绘制动态曲线教程

    从txt种获取数据 并且通过动态曲线显示 import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as animation import time # Fixing random state for reproducibility np.random.seed(196) path = "feed.txt" file = open(path, 'r') data = [] for lin

  • python绘制lost损失曲线加方差范围的操作方法

    1. 导入必要的包 我使用了seaborn,通过sns.set_style可以让绘制出来的图更漂亮,而且可以切换不同的类型 import re import seaborn as sns import matplotlib.pyplot as plt import matplotlib.cm as cm import shutil import os sns.set_style('whitegrid') 2. 数据的获取(可跳过此步) 我用的数据是通过深度强化得到的回报曲线.数据结构如下所示,我

  • python绘制浅色范围曲线的示例代码

    借鉴:python绘制lost(损失)曲线 加 方差范围 直接上效果图: 上代码: import re import seaborn as sns import matplotlib.pyplot as plt import matplotlib.cm as cm import shutil import os import math sns.set_style('whitegrid') path=r"F:\pycharm\class\20211008\alexnet_7class_srcDat

  • Python绘制loss曲线和准确率曲线实例代码

    目录 引言 一.数据读取与存储部分 二.绘制 loss 曲线 三.绘制准确率曲线 总结 引言 使用 python 绘制网络训练过程中的的 loss 曲线以及准确率变化曲线,这里的主要思想就时先把想要的损失值以及准确率值保存下来,保存到 .txt 文件中,待网络训练结束,我们再拿这存储的数据绘制各种曲线. 其大致步骤为:数据读取与存储 - > loss曲线绘制 - > 准确率曲线绘制 一.数据读取与存储部分 我们首先要得到训练时的数据,以损失值为例,网络每迭代一次都会产生相应的 loss,那么我

  • pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率

    我用的是Anaconda3 ,用spyder编写pytorch的代码,在Anaconda3中新建了一个pytorch的虚拟环境(虚拟环境的名字就叫pytorch). 以下内容仅供参考哦~~ 1.首先打开Anaconda Prompt,然后输入activate pytorch,进入pytorch. 2.输入pip install tensorboardX,安装完成后,输入python,用from tensorboardX import SummaryWriter检验是否安装成功.如下图所示: 3.

  • 利用Tensorboard绘制网络识别准确率和loss曲线实例

    废话不多说,直接上代码看吧! import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #载入数据集 mnist = input_data.read_data_sets("MNIST_data",one_hot=True) #每个批次的大小和总共有多少个批次 batch_size = 100 n_batch = mnist.train.num_examples // batch_

随机推荐