Skip to main content
 首页 » 编程设计

python之如何在 python 中生成市场的分形图

2025年05月04日16mfryf

我希望在 python 中生成它:

http://classes.yale.edu/fractals/RandFrac/Market/TradingTime/Example1/Example1.html

但我对这个概念非常陌生。有人知道这方面的图书馆或要点吗?

编辑: 据我了解,您每次都需要将分形一分为二。所以你必须从两个中点之间的线计算 y 轴点。那么这两个截面需要根据分形形成吗?

请您参考如下方法:

不是 100% 确定您在问什么,但正如我从您的评论中了解到的那样,您想使用链接中描述的递归生成一条看起来很逼真的股票市场曲线。

据我了解链接页面中的描述和some of the parent pages ,它是这样工作的:

  1. 给定起点、终点和多个转折点,格式为(t1, v1), (t2, v2)等,例如start=(0,0), end=(1, 1), turns = [(1/4, 1/2), (3/4, 1/4)],其中 ti 和 < em>vi 是 0 到 1 之间的分数。
  2. 您确定按比例缩放到开始 和结束 之间的间隔的实际转折点,并计算这些点之间的差异,即距离p< sub>i 达到 pi+1。
  3. 您打乱这些片段以引入一些随机性;当放在一起时,它们仍然覆盖完全相同的距离,即它们连接原始的开始和结束点。
  4. 通过递归调用新点之间不同段的函数来重复。

这是我刚刚整理的一些 Python 代码:

from __future__ import division 
from random import shuffle 
 
def make_graph(depth, graph, start, end, turns): 
    # add points to graph 
    graph.add(start) 
    graph.add(end) 
 
    if depth > 0:    
        # unpack input values 
        fromtime, fromvalue = start 
        totime, tovalue = end 
 
        # calcualte differences between points 
        diffs = [] 
        last_time, last_val = fromtime, fromvalue 
        for t, v in turns: 
            new_time = fromtime + (totime - fromtime) * t 
            new_val = fromvalue + (tovalue - fromvalue) * v 
            diffs.append((new_time - last_time, new_val - last_val)) 
            last_time, last_val = new_time, new_val 
 
        # add 'brownian motion' by reordering the segments 
        shuffle(diffs) 
 
        # calculate actual intermediate points and recurse 
        last = start 
        for segment in diffs: 
            p = last[0] + segment[0], last[1] + segment[1] 
            make_graph(depth - 1, graph, last, p, turns) 
            last = p 
        make_graph(depth - 1, graph, last, end, turns) 
 
from matplotlib import pyplot 
depth = 8 
graph = set() 
make_graph(depth, graph, (0, 0), (1, 1), [(1/9, 2/3), (5/9, 1/3)]) 
pyplot.plot(*zip(*sorted(graph))) 
pyplot.show() 

这里是一些示例输出: