混沌分形之逻辑斯蒂(Logistic)映射系统

前几天,有个同事看到我生成的一幅逻辑斯蒂分岔图像后,问我:“这是咪咪吗?”我回答:“淫者见淫。”好吧,这里将生成几种分岔映射图形,包括逻辑斯蒂映射系统,正弦映射系统和曼德勃罗映射系统。实际上这几种图形算不上分形,只不过它与我写的其他分形对象使用相同的基类,所以也将其列入混沌分形的范畴。

关于基类FractalEquation的定义及相关软件见:混沌与分形

(1)逻辑斯蒂映射系统

// 逻辑斯蒂映射系统
class LogisticMap : public FractalEquation
{
public:
    LogisticMap()
    {
        m_StartX = 0.0f;
        m_StartY = 0.0f;
        m_StartZ = 0.0f;

        m_ParamA = 0.0f;
        m_ParamB = 4.0f;

        m_nIterateCount = 100;
    }

    void IterateValue(float x, float y, float z, float& outX, float& outY, float& outZ) const
    {
        float R = (float)rand()/RAND_MAX;
        float k = m_ParamA + (m_ParamB - m_ParamA) * R;
        outX = R*4.0f;

        outY = (float)rand()/RAND_MAX;
        for (int i = 0; i < m_nIterateCount; i++)
        {
            outY = k*outY*(1-outY);
        }
        outY *= 2;

        outZ = z;
    }

    bool IsValidParamA() const {return true;}
    bool IsValidParamB() const {return true;}

private:
    int m_nIterateCount;
};

调节下参数后的图形:

(2)正弦映射系统

// 正弦映射系统
class SinMap : public FractalEquation
{
public:
    SinMap()
    {
        m_StartX = 0.0f;
        m_StartY = 0.0f;
        m_StartZ = 0.0f;

        m_ParamA = -2*PI;
        m_ParamB = 2*PI;

        m_nIterateCount = 64;
    }

    void IterateValue(float x, float y, float z, float& outX, float& outY, float& outZ) const
    {
        float R = (float)rand()/RAND_MAX;
        float k = m_ParamA + (m_ParamB - m_ParamA) * R;
        outX = R*4.0f;

        outY = (float)rand()/RAND_MAX;
        for (int i = 0; i < m_nIterateCount; i++)
        {
            outY = k*sinf(outY);
        }

        outY *= 0.5f;

        outZ = z;
    }

    bool IsValidParamA() const {return true;}
    bool IsValidParamB() const {return true;}

private:
    int m_nIterateCount;
};

(3)曼德勃罗映射系统

// 曼德勃罗映射系统
class MandelbrotMap : public FractalEquation
{
public:
    MandelbrotMap()
    {
        m_StartX = 0.0f;
        m_StartY = 0.0f;
        m_StartZ = 0.0f;

        m_ParamA = -2.0f;
        m_ParamB = 0.0f;

        m_nIterateCount = 64;
    }

    void IterateValue(float x, float y, float z, float& outX, float& outY, float& outZ) const
    {
        float R = (float)rand()/RAND_MAX;
        float k = m_ParamA + (m_ParamB - m_ParamA) * R;
        outX = R*4.0f;

        outY = (float)rand()/RAND_MAX;
        for (int i = 0; i < m_nIterateCount; i++)
        {
            outY = outY*outY + k;
        }

        outZ = z;
    }

    bool IsValidParamA() const {return true;}
    bool IsValidParamB() const {return true;}

private:
    int m_nIterateCount;
};

最后发下被我同事当成MM的逻辑斯蒂分岔图像:

之前我还写过一篇关于逻辑斯蒂的文章:混沌数学之logistic模型

时间: 2024-08-15 10:06:53

混沌分形之逻辑斯蒂(Logistic)映射系统的相关文章

逻辑斯蒂回归

1,逻辑斯蒂回归问题有一组病人的数据,我们需要预测他们在一段时间后患上心脏病的“可能性”,就是我们要考虑的问题.通过二值分类,我们仅仅能够预测病人是否会患上心脏病,不同于此的是,现在我们还关心患病的可能性,即 f(x) = P(+1|x),取值范围是区间 [0,1]. 然而,我们能够获取的训练数据却与二值分类完全一样,x 是病人的基本属性,y 是+1(患心脏病)或 -1(没有患心脏病).输入数据并没有告诉我们有关“概率” 的信息. 在二值分类中,我们通过w*x 得到一个"score"

梯度下降法解逻辑斯蒂回归

梯度下降法解逻辑斯蒂回归 本文是Andrew Ng在Coursera的机器学习课程的笔记. Logistic回归属于分类模型.回顾线性回归,输出的是连续的实数,而Logistic回归输出的是[0,1]区间的概率值,通过概率值来判断因变量应该是1还是0.因此,虽然名字中带着"回归"(输出范围常为连续实数),但Logistic回归属于分类模型(输出范围为一组离散值构成的集合). 整体步骤 假如我们的自变量是"数学课和英语课的成绩",x={x1,x2},因变量是"

用二项逻辑斯蒂回归解决二分类问题

逻辑斯蒂回归: 逻辑斯蒂回归是统计学习中的经典分类方法,属于对数线性模型.logistic回归的因变量可以是二分类的, 也可以是多分类的 基本原理 logistic 分布 折X是连续的随机变量,X服从logistic分布是指X具有下列分布函数和密度函数: 其中为位置参数,为形状参数.与图像如下,其中分布函数是以为中心对阵,越小曲线变化越快 二项logistic回归模型: 二项logistic回归模型如下: 其中是输入,输出,W称为权值向量,b称为偏置, 是w和x的内积 参数估计 ? 假设: ?

逻辑斯蒂和最大熵-李航

1.逻辑斯蒂分布 sigmoid 曲线 二项逻辑斯蒂回归模型,实际上是二项判别模型. 基于逻辑斯蒂的似然函数等于每个取值的概率之积.对数似然是对他们取log 多项逻辑斯蒂回归,实际是二项的扩展. 2.最大熵模型 由5.2.2节的熵模型.使我们需要的公式. 所谓最大熵,是指83页定义的条件熵的最大熵. 我们知道这个熵模型实际上是带负号的,负号变边,将求最大问题变成求最小问题,即凸函数问题. A.引进拉格朗日问题,将该问题变换为拉格朗日问题,由对偶性质,得到求最小值的最大值,最小值可由求导得到,最大

第六章 逻辑斯蒂回归与最大熵模型

书中重要定义及一些理解 先通过介绍逻辑史蒂的分布来引出logist模型 而通过极大似然法来推导模型的参数估计问题 通过对模型参数的似然函数通过求导来得到递归方程 通过公式可以看出logist是对前面的感知机的升级版,感知机的判断方式过于简单.而其梯度下降的时候也将sign的去掉了,否则无法微分. 后通过方程来写出公式,代码如下 import numpy as np from read_data import get_2_kind_data def logistic_Regression(tra_

逻辑斯蒂回归(logisic regression)和SVM的异同

逻辑斯蒂回归主要用于二分类,推广到多分类的话是类似于softmax分类.求 上述问题可以通过最大化似然函数求解. 上述问题可以采用最小化logloss进行求解. 一般地,我们还需要给目标函数加上正则项,参数w加上l1或者l2范数. LR适合大规模数据,数据量太小的话可能会欠拟合(考虑到数据通常比较稀疏).另外,我们可以将连续型属性转化成离散型属性,这样可以提升模型的鲁棒性,防止模型过拟合. LR和SVM的异同点 相同点 1.他们都是分类算法,是监督学习算法. 2.如果不考虑核函数,LR和SVM都

deep learning学习(四) 逻辑斯蒂(logistic)回归深入理解和matlab程序求参数

第一节中说了,logistic 回归和线性回归的区别是:线性回归是根据样本X各个维度的Xi的线性叠加(线性叠加的权重系数wi就是模型的参数)来得到预测值的Y,然后最小化所有的样本预测值Y与真实值y'的误差来求得模型参数.我们看到这里的模型的值Y是样本X各个维度的Xi的线性叠加,是线性的. Y=WX (假设W>0),Y的大小是随着X各个维度的叠加和的大小线性增加的,如图(x为了方便取1维): 然后再来看看我们这里的logistic 回归模型,模型公式是:,这里假设W>0,Y与X各维度叠加和(这里

逻辑斯蒂回归模型

http://blog.csdn.net/hechenghai/article/details/46817031 主要参照统计学习方法.机器学习实战来学习.下文作为参考. 第一节中说了,logistic 回归和线性回归的区别是:线性回归是根据样本X各个维度的Xi的线性叠加(线性叠加的权重系数wi就是模型的参数)来得到预测值的Y,然后最小化所有的样本预测值Y与真实值y‘的误差来求得模型参数.我们看到这里的模型的值Y是样本X各个维度的Xi的线性叠加,是线性的. Y=WX (假设W>0),Y的大小是随

逻辑斯蒂回归(Logistic Regression)

逻辑回归名字比较古怪,看上去是回归,却是一个简单的二分类模型. 逻辑回归的目标函数是如下形式: 其中x是features,θ是feature的权重,σ是sigmoid函数.将θ0视为θ0*x0(x0取值为常量1),那么 这里我们取阈值为0.5,那么二分类的判别公式为: 下面说一下参数θ的求解: 为啥子这样去损失函数呢? 当y=1的时候,显然hθ(x)越接近1我们的预测越靠谱:y=0时同理.所以应该在y=1时,使损失韩式-log(hθ(x))越小越好,y=0时,同样使损失函数-log(1-hθ(x