文档库 最新最全的文档下载
当前位置:文档库 › 混沌映射(序列)matlab算法“小全”:Logistic、Henon、帐篷、kent(含混沌二值图像生成函数)

混沌映射(序列)matlab算法“小全”:Logistic、Henon、帐篷、kent(含混沌二值图像生成函数)

混沌映射(序列)matlab算法“小全”:Logistic、Henon、帐篷、kent(含混沌二值图像生成函数)
混沌映射(序列)matlab算法“小全”:Logistic、Henon、帐篷、kent(含混沌二值图像生成函数)

混沌映射(序列)matlab 算法“小全”:Logistic 、Henon 、帐篷、kent (含

混沌二值图像生成函数)

1.Logistic (罗切斯特)映射

变换核:

)

1(1n n n x ax x ?=+绘图程序:

n=64;

key=0.512;

an=linspace(3.1,3.99,400);

hold on;box on;axis([min(an),max(an),-1,2]);N=n^2;

xn=zeros(1,N);for a=an;

x=key;for k=1:20;

x=a*x*(1-x);%产生公式end;

for k=1:N;

x=a*x*(1-x);xn(k)=x;

b(k,1)=x;%一维矩阵记录迭代结果end;

plot(a*ones(1,N),xn,'k.','markersize',1);end;

%figure;%imhist(b)

实用混沌加密函数:

function ichao_ans=ichaos_logistic(varargin)%logistic 序列生成算法%函数名:

%logistic 混沌序列生成函数%参数:%(n ,key ),n 为矩阵阶数,key 为迭代初始值。%(n ),n 为矩阵阶数,key=0.600。

%()或(n ,key ,...),n=64,key=0.600。switch nargin;

case 1;

n=varargin{1};key=0.600;case 2;

n=varargin{1};

key=varargin{2};otherwise

key=0.600;n=64;end

N=n^2;

xn=zeros(1,N);a=4;

x=key;for k=1:20;

x=a*x*(1-x);%产生公式end;

for k=1:N;

x=a*x*(1-x);

xn(k)=x;%一维矩阵记录迭代结果end;c=reshape(xn,n,n);%一维矩阵转换二维矩阵d=zeros(n,n);

%二维混沌矩阵调制for a1=1:n;

for a2=1:n;

if c(a1,a2)>=0.5;d(a1,a2)=1;else d(a1,a2)=0;end;end;end;

%figure;title('logistic 映射');%imshow(d);ichao_ans=d;

2.Henon (埃农)映射

变换核:

2

1n 11x {

n n n

n ax y bx y ?+==++绘图程序:

b=0.3;N=400;

an=ones(1,N);xn=zeros(1,N);hold on;box on;x=0;y=0;

for a=0:0.001:1.4

for k=1:N;

xm=x;ym=y;

x=ym+1-a*xm.*xm;y=b*xm;end

xn(1)=x;for n=2:N;

xm=x;ym=y;

x=ym+1-a*xm.*xm;y=b*xm;xn(n)=x;end

plot(an*a,xn,'k.','markersize',1);end

xlim([0,a]);

实用混沌加密函数:

function ichao_ans=ichaos_henon(varargin)%埃农(Henon )映射

%0.2

%参数:%(n ,key ),n 为矩阵阶数,key 为迭代初始值。%(n ),n 为矩阵阶数,key=0.314。

%()或(n ,key ,...),n=64,key=0.314。switch nargin;

case 1;

n=varargin{1};

key=0.314;case 2;

n=varargin{1};key=varargin{2};otherwise

key=0.314;n=64;end

n=64;N=n^2;

an=ones(1,N);xn=zeros(1,N);x=0;y=0;a=1.4;

for cir1=1:N;

xm=x;ym=y;

x=ym+1-a*xm.*xm;y=key*xm;end

xn(1)=x;for cir2=2:N;

xm=x;ym=y;

x=ym+1-a*xm.*xm;y=key*xm;xn(cir2)=x;end

c=reshape(xn,n,n);%一维矩阵转换二维矩阵d=zeros(n,n);%二维混沌矩阵调制for a1=1:n;

for a2=1:n;if c(a1,a2)>=0;d(a1,a2)=1;else d(a1,a2)=0;end;end;end;

ichao_ans=d;

314

.02.0)4.1,0(a ≤<∈b

3.帐篷映射

变换核:

||)1(1n n x a a x +?=+绘图程序:%帐篷映射%0

%a 理想值0.99—1%0

xp=zeros(1,N);Aa=ones(1,N);hold on;box on;x=0.01;%初值for a=0:0.001:1;

for n=1:N;

x=a-(1+a)*abs(x);end

for k=1:N;

x=a-(1+a)*abs(x);xp(k)=x;end

plot(Aa*a,xp,'k.','markersize',1);end

xlim([0,a]);

实用混沌加密函数:

function ichao_ans=ichaos_tent(varargin)%帐篷映射%0

%a 理想值0.99—1%x 初值作为密钥%0

%()或(n ,key ,...),n=64,key=0.99。switch nargin;

case 1;

n=varargin{1};key=0.99;case 2;

n=varargin{1};

key=varargin{2};otherwise

key=0.99;n=64;end

N=n^2;

xp=zeros(1,N);x=key;a=0.998;

for cir1=1:N;

x=a-(1+a)*abs(x);end

for cir2=1:N;

x=a-(1+a)*abs(x);xp(cir2)=x;end

c=reshape(xp,n,n);%一维矩阵转换二维矩阵d=zeros(n,n);%二维混沌矩阵调制for a1=1:n;

for a2=1:n;if c(a1,a2)>=0;d(a1,a2)=1;else d(a1,a2)=0;end;end;end;

%sum(sum(d))ichao_ans=d;

%imshow(ichao_ans);

)

1,0(∈a

4.kent (肯特)映射

a x a x x a a

x n n

x ≤<≤

绘图程序:

%肯特映射n=20;N=n^2;

xp=zeros(1,N);Aa=ones(1,N);x=0.36;

hold on;box on;

for a=0.01:0.001:0.5;

for cir1=1:N;

if x<=a;x=x/a;else

x=(1-x)/(1-a);end end

for cir3=1:N;

if x<=a;x=x/a;else

x=(1-x)/(1-a);end

xp(cir3)=x;end

plot(Aa*a,xp,'k.','markersize',1);end

xlim([0,a]);

实用混沌加密函数:

function ichao_ans=ichaos_kent(varargin)%0.1

%()或(n ,key ,...),n=64,key=0.8。switch nargin;

case 1;

n=varargin{1};key=0.8;case 2;

n=varargin{1};key=varargin{2};otherwise

key=0.8;n=64;

end

N=n^2;

xp=zeros(1,N);x=key;a=0.4;

for cir1=1:N;

if x<=a;x=x/a;else

x=(1-x)/(1-a);end end

for cir3=1:N;

if x<=a;x=x/a;else

x=(1-x)/(1-a);end

xp(cir3)=x;end

c=reshape(xp,n,n);%一维矩阵转换二维矩阵%figure;%imhist(c);d=zeros(n,n);

%二维混沌矩阵调制for a1=1:n;

for a2=1:n;

if c(a1,a2)>=0.5;d(a1,a2)=1;else d(a1,a2)=0;end;end;end;

%sum(sum(d))ichao_ans=d;figure;

imshow(ichao_ans);

最短路径的Dijkstra算法及Matlab程序

两个指定顶点之间的最短路径 问题如下:给出了一个连接若干个城镇的铁路网络,在这个网络的两个指定城镇间,找一条最短铁路线。 以各城镇为图G 的顶点,两城镇间的直通铁路为图G 相应两顶点间的边,得图G 。对G 的每一边e ,赋以一个实数)(e w —直通铁路的长度,称为e 的权,得到赋权图G 。G 的子图的权是指子图的各边的权和。问题就是求赋权图G 中指定的两个顶点00,v u 间的具最小权的轨。这条轨叫做00,v u 间的最短路,它的权叫做00,v u 间的距离,亦记作),(00v u d 。 求最短路已有成熟的算法:迪克斯特拉(Dijkstra )算法,其基本思想是按距0u 从近到远为顺序,依次求得0u 到G 的各顶点的最短路和距离,直至0v (或直至G 的所有顶点),算法结束。为避免重复并保留每一步的计算信息,采用了标号算法。下面是该算法。 (i) 令0)(0=u l ,对0u v ≠,令∞=)(v l ,}{00u S =,0=i 。 (ii) 对每个i S v ∈(i i S V S \=),用 )}()(),({min uv w u l v l i S u +∈ 代替)(v l 。计算)}({min v l i S v ∈,把达到这个最小值的一个顶点记为1+i u ,令}{11++=i i i u S S 。 (iii). 若1||-=V i ,停止;若1||-

蔡氏电路MATLAB混沌仿真

蔡氏电路的Matlab混沌 仿真研究 班级: 姓名: 学号:

摘要 本文首先介绍非线性系统中的混沌现象,并从理论分析与仿真计算两个方面细致研究了非线性电路中典型混沌电路,即蔡氏电路反映出的非线性性质。通过改变蔡氏电路中元件的参数,进而产生多种类型混沌现象。最后利用软件对蔡氏电路的非线性微分方程组进行编程仿真,实现了双涡旋和单涡旋状态下的同步,并准确地观察到混沌吸引子的行为特征。 关键词:混沌;蔡氏电路;MATLAB仿真 Abstract This paper introduce s the chaos phenomenon in nonlinear circuits. Chua’s circuit was a typical chaos circuit, thus theoretical analysis and simulation was made to research it. Many kinds of chaos phenomenon on would generate as long as one component parameter was altered in C hua’s circuit.On the platform of Matlab, mathematical model of Chua’s circuit was programmed and simulated to acquire the synchronization of dual and single cochlear volume. Meanwhile, behavioral characteristics of chaos attractor were observed. Key words:chaos phenomenon;Chua’s circuit;Simulation

最短路dijkstra算法Matlab程序

function [c0,c,path0,path]=dijkstra(s,t,C,flag) % Use the Dijkstra's algorithm to find the shortest path from % s to t and can also find the shortest path between s and all % the other points. % Reference: Graph Theory with Applications by J. A. Bondy and % U. S. R. Murty. % Input -- s is the starting point and also is the point s. % -- t is the given terminal point and is the point t. % -- C \in R^{n \times n}is the cost matrix, where % C(i,j)>=0 is the cost from point i to point j. % If there is no direct connection between point i and % j, C(i,j)=inf. % -- flag: if flag=1, the function just reports the % shortest path between s and t; if flag~=1, the % function reports the shortest path between s and t, % and the shortest paths between s and other points. % Output -- c0 is the minimal cost from s to t. % -- path0 denotes the shortest path form s to t. % -- c \in R{1\times n} in which the element i is the % minimal cost from s to point i. % -- path \in R^{n \times n} in which the row i denotes % the shortest path from s to point i. % Copyright by MingHua Xu(徐明华), Changhzou University, 27 Jan. 2014. s=floor(s); t=floor(t); n=size(C,1); if s<1 || t < 1 || s > n || t > n error(' The starting point and the terminal point exceeds the valid range'); end if t==s disp('The starting point and the terminal point are the same points'); end label=ones(1,n)*inf; label(s)=0; S=[s]; Sbar=[1:s-1,s+1:n]; c0=0; path=zeros(n,n); path(:,1)=s; c=ones(1,n)*inf; parent=zeros(1,n); i=1; % number of points in point set S. while i label(S(k))+C(S(k),Sbar(j)) label(Sbar(j))=label(S(k))+C(S(k),Sbar(j)); parent(Sbar(j))=S(k); end end

用Matlab观察分岔与混沌现象

M a t l a b 实验报告 实验目的:用Matlab 观察分岔与混沌现象。 题目:Feigenbaum 曾对超越函数sin()y x λπ=(λ为非负实数)进行了分岔与混沌的研究,试利用迭代格式1sin()k k x x λπ+=,做出相应的Feigenbaum 图 算法设计: 1、因为λ为非负实数,所以试将λ的范围限制在[0,3],制图时x 的坐标限制在[0,3],考虑到y 的值有正有负,所以把y 的坐标限制在 [-3,3]。 2、根据课本上给的例题,编写程序代码来绘图。 程序代码: clear;clf; hold on axis([0,3,-3,3]); grid for a=0:0.005:3 x=[0.1]; for i=2:150 x(i)=a*sin(pi*x(i-1)); end pause(0.1) for i=101:150 plot(a,x(i),'k.'); end end 图像: 结果分析:在λ取值在[0,0.3]区间内时,y 的值保持在0,然后开始上升,在λ取值在0.75附近时,开始分岔为两支。从整体上看,随着λ的值越来越大,所产生的迭代序列越来越复杂,可能会随机地落在区间(-3,3)的任一子区间内。并可能重复,这就是混沌的遍历性。 进一步分析:由于λ的取值空间偏小,考虑扩大其取值范围

到[0,6],再进一步观察图像。程序代码如下: clear;clf; hold on axis([0,6,-6,6]); grid for a=0:0.05:6 x=[0.1]; for i=2:150 x(i)=a*sin(pi*x(i-1)); end pause(0.1) for i=101:150 plot(a,x(i),'k.'); end end 图像: 分析:由图像可见,随着 取值范围的增大,图像呈现出周期性的特点。 总结:1、当取值范围比较小,不足以发现图像规律时,可以考虑扩大变量的取值范围。 2、由于图像是由大量点构成的,所以在编程的时候注意循环 语句的应用。

混沌映射(序列)matlab算法“小全”:Logistic、Henon、帐篷、kent(含混沌二值图像生成函数)

混沌映射(序列)matlab 算法“小全”:Logistic 、Henon 、帐篷、kent (含 混沌二值图像生成函数) 1.Logistic (罗切斯特)映射 变换核: ) 1(1n n n x ax x ?=+绘图程序: n=64; key=0.512; an=linspace(3.1,3.99,400); hold on;box on;axis([min(an),max(an),-1,2]);N=n^2; xn=zeros(1,N);for a=an; x=key;for k=1:20; x=a*x*(1-x);%产生公式end; for k=1:N; x=a*x*(1-x);xn(k)=x; b(k,1)=x;%一维矩阵记录迭代结果end; plot(a*ones(1,N),xn,'k.','markersize',1);end; %figure;%imhist(b) 实用混沌加密函数: function ichao_ans=ichaos_logistic(varargin)%logistic 序列生成算法%函数名: %logistic 混沌序列生成函数%参数:%(n ,key ),n 为矩阵阶数,key 为迭代初始值。%(n ),n 为矩阵阶数,key=0.600。 %()或(n ,key ,...),n=64,key=0.600。switch nargin; case 1; n=varargin{1};key=0.600;case 2; n=varargin{1}; key=varargin{2};otherwise key=0.600;n=64;end N=n^2; xn=zeros(1,N);a=4; x=key;for k=1:20; x=a*x*(1-x);%产生公式end; for k=1:N; x=a*x*(1-x); xn(k)=x;%一维矩阵记录迭代结果end;c=reshape(xn,n,n);%一维矩阵转换二维矩阵d=zeros(n,n); %二维混沌矩阵调制for a1=1:n; for a2=1:n; if c(a1,a2)>=0.5;d(a1,a2)=1;else d(a1,a2)=0;end;end;end; %figure;title('logistic 映射');%imshow(d);ichao_ans=d;

dijkstra算法的matlab实现

学号: 课程设计 题目Dijkstra算法的MATLAB实现 学院信息工程学院 专业通信工程 班级 姓名 指导教师 2012 年 1 月9 日 课程设计任务书 学生姓名:专业班级:通信 0901班 指导教师:工作单位:信息工程学院 题目: Dijkstra算法的MATLAB实现 初始条件: (1)MATLAB应用软件的基本知识以及基本操作技能 (2)高等数学、线性代数等基础数学中的运算知识 (3)数据结构里面关于Dijkstra算法的基本原理和思想 要求完成的主要任务: 必做题:采用MATLAB选用适当的函数或矩阵进行如下计算 (1)极限的计算、微分的计算、积分的计算、级数的计算、求解代数方程、求解常微分方程; (2)矩阵的最大值、最小值、均值、方差、转置、逆、行列式、特征值的计算、矩阵的相乘、右除、左除、幂运算;

(3)多项式加减乘除运算、多项式求导、求根和求值运算、多项式的部分分式展开、多项式的拟合、插值运算。 选做题:Dijkstra算法的MATLAB实现 时间安排: 第一周,安排任务地点:鉴主17楼实验室 第1-17,周仿真设计地点:鉴主13楼计算机实验室 第18周,完成答辩,提交报告地点:鉴主17楼实验室 指导教师签名:年月日 系主任(或责任教师)签名:年月

目录 摘要................................................................................................................................. I Abstract ......................................................................................................................... II 1 MATLAB的基本运算 .. 0 1.1 基础微积分计算 0 1.1.1 极限的基本运算 0 1.1.2 微分的计算 0 1.1.3 积分的计算 (1) 1.1.4 级数的运算 (1) 1.1.5 求解代数微分方程 (1) 1.1.6 求解常微分方程 (2) 1.2 矩阵的基本运算 (2) 1.2.1 矩阵的最大最小值 (2) 1.2.2 矩阵的均值方差 (3) 1.2.3 矩阵的转置和逆 (3) 1.2.4 矩阵的行列式 (3) 1.2.5 矩阵特征值的计算 (3) 1.2.6 矩阵的相乘 (4) 1.2.7 矩阵的右除和左除 (4) 1.2.8 矩阵的幂运算 (4) 1.3 多项式的基本运算 (4) 1.3.1 多项式的四则运算 (4) 1.3.2 多项式的求导、求根、求值运算 (5) 1.3.3 多项式的部分分式展开 (5) 1.3.4 多项式的拟合 (5) 1.3.5 多项式的插值运算 (6) 2关于Dijkstra的问题描述 (6) 2.1问题的提出 (6) 2.2 Dijkstra算法的算法思想 (7) 2.3 Dijkstra算法的算法原理 (7) 3 Dijkstra算法的设计分析 (8) 3.1 Dijkstra算法部分的设计分析 (8) 3.2 程序主体的设计分析 (9) 4程序源代码与算法思想 (10) 4.1 文件isIn.m的源代码 (10) 4.2 文件default_dat.m的源代码 (11) 4.3 文件input_dat.m的源代码 (11) 4.4 文件menu.m的源代码 (11) 4.5 文件dijkstra.m的源代码 (13) 5 测试报告 (16) 6 心得体会 (17) 7 参考文献 (18)

(完整版)基于MATLAB的混沌序列图像加密程序

设计题目:基于MATLAB的混沌序列图像加密程序 一.设计目的 图像信息生动形象,它已成为人类表达信息的重要手段之一,网络上的图像数据很多是要求发送方和接受都要进行加密通信,信息的安全与保密显得尤为重 要,因此我想运用异或运算将数据进行隐藏,连续使用同一数据对图像数据两次异或运算图像的数据不发生改变,利用这一特性对图像信息进行加密保护。 熟练使用matlab运用matlab进行编程,使用matlab语言进行数据的隐藏加密,确保数字图像信息的安全,混沌序列具有容易生成,对初始条件和混沌参数敏感等特点,近年来在图像加密领域得到了广泛的应用。使用必要的算法将信息进行加解密,实现信息的保护。 .设计内容和要求 使用混沌序列图像加密技术对图像进行处理使加密后的图像 使用matlab将图像信息隐藏,实现信息加密。 三.设计思路 1. 基于混沌的图像置乱加密算法 本文提出的基于混沌的图像置乱加密算法示意图如图1所示 加密算法如下:首先,数字图像B大小为MX N( M是图像B的行像素数,N是图像B的列像素数),将A的第j行连接到j-1行后面(j=2,3, A,M,形成长度为MX N的序列C。其次,用Logistic混沌映射产生一个长度为的混沌序列{k1,k2,A,kMX N},并构造等差序列D: {1,2,3, A,MX N-1,MX N}。再次,将所

产生的混沌序列{kl, k2. A, kMX N}的M N个值由小到大排序,形成有序序列{k1', k2'. A' kMX N' },确定序列{k1, k2, A, kMX N}中的每个ki在有序序列{k1', k2', A , kMX N' }中的编号,形成置换地址集合 {t1 , t2 , A, tM X N},其中ti为集合{1 , 2, A, MX N}中的一个;按置换地址集合{t1 , t2 , A, tM X N}对序列C进行置换,将其第i个像素置换至第ti列, i=1 , 2, A, MX N,得到C'。将等差序列D做相同置换,得到D'。 最后,B'是一个MX N 的矩阵,B' (i ,j)=C ' ((i-1) X M+j),其中i=1 , 2, A, M j=i=1 , 2, A, N,则B'就是加密后的图像文件。 解密算法与加密算法相似,不同之处在于第3步中,以序列C'代替随机序列{k1, k2, A, kMX N},即可实现图像的解密。 2. 用MATLAB勺实现基于混沌的图像置乱加密算法 本文借助MATLAB^件平台,使用MATLAB!供的文本编辑器进行编程实现加密功能。根据前面加密的思路,把加密算法的编程分为三个主要模块:首先,构造一个与原图a等高等宽的矩阵b加在图像矩阵a后面形成复合矩阵c: b=zeros(m1, n1); ifm1>=n1 ifm1> n1 fore=1: n1 b=(e,e); end else fore=1: n1 end fore=1:( n1-m1) b((m1+e-1),e)=m1+e-1 end end c=zeros(m1*2, n1); c=zeros(m1*2,1); c=[b,a]; 然后,用Logitic映射产生混沌序列:

dijkstra算法原理及MATLAB代码

Dijkstra算法是寻找最短路径的一种搜索算法,由荷兰科学家提出。 1)算法思想:设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最短路径, 就将加入到集合S中,直到全部顶点都加入到S中,算法就结束了),第二组为其余未确定最短路径的顶点集合(用U表示),按最短路径长度的递增次序依次把第二组的顶点加入S中。在加入的过程中,总保持从源点v到S中各顶点的最短路径长度不大于从源点v 到U中任何顶点的最短路径长度。此外,每个顶点对应一个距离,S中的顶点的距离就是从v到此顶点的最短路径长度,U中的顶点的距离,是从v到此顶点只包括S中的顶点为中间顶点的当前最短路径长度。 2)算法步骤: a.初始时,S只包含源点,即S={v},v的距离为0。U包含除v外的其他顶点, 即:U={其余顶点},若v与U中顶点u有边,则正常有权值,若u不是v的出边邻接点,则权值为∞。 b.从U中选取一个距离v最小的顶点k,把k,加入S中(该选定的距离就是v到k 的最短路径长度)。 c.以k为新考虑的中间点,修改U中各顶点的距离;若从源点v到顶点u的距离(经 过顶点k)比原来距离(不经过顶点k)短,则修改顶点u的距离值,修改后的距离值的顶点k的距离加上边上的权。 d.重复步骤b和c直到所有顶点都包含在S中。 算法描述:通过为每个节点保留目前为止所找到的从s到e的最短路径。为了记录最佳路径轨迹,记录路径上每个节点的前趋,通过回溯法找出最短路径轨迹。

过程如下: 在网上搜索一些版本的Matlab实现方法,感觉都有些毛病。经过修改,得到比较好的效果。[cpp]view plain copy 1.function [ distance path] = Dijk( W,st,e ) 2.%DIJK Summary of this function goes here 3.% W 权值矩阵 st 搜索的起点 e 搜索的终点 4.n=length(W);%节点数 5. D = W(st,:); 6.visit= ones(1:n); visit(st)=0; 7.parent = zeros(1,n);%记录每个节点的上一个节点 8. 9.path =[]; 10. 11.for i=1:n-1

Dijkstra算法

最短路径—Dijkstra算法 Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。注意该算法要求图中不存在负权边。 问题描述:在无向图G=(V,E) 中,假设每条边E[i] 的长度为w[i],找到由顶点V0 到其余各点的最短路径。(单源最短路径) 2.算法描述 1)算法思想:设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S 中只有一个源点,以后每求得一条最短路径, 就将加入到集合S中,直到全部顶点都加入到S中,算法就结束了),第二组为其余未确定最短路径的顶点集合(用U表示),按最短路径长度的递增次序依次把第二组的顶点加入S中。在加入的过程中,总保持从源点v到S中各顶点的最短路径长度不大于从源点v到U中任何顶点的最短路径长度。此外,每个顶点对应一个距离,S中的顶点的距离就是从v到此顶点的最短路径长度,U中的顶点的距离,是从v到此顶点只包括S中的顶点为中间顶点的当前最短路径长度。 2)算法步骤: a.初始时,S只包含源点,即S={v},v的距离为0。U包含除v外的其他顶点,即:U={其余顶点},若v与U中顶点u有边, 则正常有权值,若u不是v的出边邻接点,则权值为∞。 b.从U中选取一个距离v最小的顶点k,把k,加入S中(该选定的距离就是v到k的最短路径长度)。 c.以k为新考虑的中间点,修改U中各顶点的距离;若从源点v到顶点u的距离(经过顶点k)比原来距离(不经过顶点k)短, 则修改顶点u的距离值,修改后的距离值的顶点k的距离加上边上的权。 d.重复步骤b和c直到所有顶点都包含在S中。 GPSR路由协议:(车载自组织网络中自适应路由协议研究_李诗雨) 2>基于地理位置的路由 随着科技的发展,现在的车辆通常都会具有全球定位系统,利用这个系统, 车辆可以随时随地查找出自己的地理坐标。于是越来越多的学者开始利用这些定 位系统来制定新的路由,如Greedy Perimeter Stateless Routing(GPSR)}ZO}。GPSR 是影响最广和应用范围最大的一个路由协议。它脱离了传统路由协议需要维护一 个全局静态路由,需要时刻去查看该路由的有效性的方式,而开始将更多的注意 力放到车辆四周的临近车辆,只依赖它们进行短距离的路由计算。在GPSR协议 中[[21],网络节点都可以通过GPS等方法获取自身的地理位置,源节点在发送数据 时会在报文里加入目的节点的GPS坐标,在后面每一跳节点都会查找自己的邻居 车辆,在其中找到一个距离目的节点在地理位置上最近的节点作为下一跳节点。

连续时间混沌系统MATLAB程序和SIMULINK模型

第6章连续时间混沌系统 本章讨论连续时间混沌系统的基本特点与分析方法,主要包括混沌数值仿真和硬件实验方法简介、混沌系数平衡点的计算、平衡点的分类与性质、相空间中的轨道、几类典型连续混沌系统的介绍、混沌机理的分析方法、用特征向量空间法寻找异宿轨道、Lorenz系统及混沌机理定性分析、Lorenz映射、Poincare截面、Chua系统及其混沌机理定性分析、时间序列与相空间重构等内容。 6.1 混沌数值仿真和硬件实验方法简介 混沌的数值仿真主要包括MA TLAB编程、SIMULINK模块构建、EWB仿真以及其他一些相关的软件仿真或数值计算等方法,从而获取混沌吸引子的相图、时域波形图、李氏指数、分叉图和功率谱等。混沌的硬件实验主要包括模拟/数字电路设计与硬件实验、现场可编程门阵列器件(FPGA)、数字信号处理器(DSP)等硬件实现方法来产生混沌信号。本节仅对各种数值仿真方法作简单介绍。 1)混沌系统的MA TLAB数值仿真 该方法主要根据混沌系统的状态方程来编写MA TLAB程序。现举二例来说明这种编程方法。(1)已知Lorenz系统的状态方程为 dx/dt=-a(x-y) dy/dt=bx-xz-y dz/dt=-cz+xy 式中a=10,b=30,c=8/3。 MA TLAB仿真程序如下: >> %************************************************** Function dxdt=lorenz(t,x) %除符号dxdt外,还可用其他编程者习惯的有意义的符号 A=10; B=30; C=8/3; dxdt=zeros(3,1); dxdt(1)=-A*(x(1)-x(2)); dxdt(2)=B*x(1)-x(1).*x(3)-x(2); dxdt(3)=x(1)*x(2)-C*x(3); %************************************************* options=odeset('RelTol',1e-6,'AbsTol',[ 1e-6 1e-6 1e-6]); t0=[0 200]; x0=[0.02,0.01,0.03]; [t,x]=ode45('lorenz',t0,x0,options); %************************************************** n=length(t) n1=round(n/2) %n1=1; %************************************************** figure(1); plot(t(n1:n,1),x(n1:n,1));

图论算法及matlab程序的三个案例

图论实验三个案例 单源最短路径问题 Dijkstra 算法 Dijkstra 算法是解单源最短路径问题的一个贪心算法。其基本思想是,设置一个顶点集合S 并不断地作贪心选择来扩充这个集合。一个顶点属于集合S 当且仅当从源到该顶点的最短路径长度已知。设v 是图中的一个顶点,记()l v 为顶点 v 到源点v 1的最短距离, ,i j v v V ?∈,若 (,)i j v v E ?,记i v 到j v 的权ij w =∞。 Dijkstra 算法: ① 1{}S v =,1()0l v =;1{}v V v ??-,()l v =∞,1i =,1{}S V v =-; ② S φ=,停止,否则转③; ③ ()min{(),(,)} j l v l v d v v =, j v S ∈,v S ?∈; ④ 存在 1 i v +,使 1()min{()} i l v l v +=,v S ∈; ⑤ 1{} i S S v +=, 1{} i S S v +=-,1i i =+,转②; 实际上,Dijkstra 算法也是最优化原理的应用:如果12 1n n v v v v -是从1v 到 n v 的最短路径,则 12 1 n v v v -也必然是从1v 到 1 n v -的最优路径。 在下面的MATLAB 实现代码中,我们用到了距离矩阵,矩阵第i 行第j 行元 素表示顶点i v 到j v 的权ij w ,若i v 到j v 无边,则realmax ij w =,其中realmax 是 MATLAB 常量,表示最大的实数+308)。 function re=Dijkstra(ma)

Matlab实现混沌系统的控制

基于MATLAB 的各类混沌系统的计算机模拟 混沌是非线性系统所独有且广泛存在的一种非周期运动形式, 其覆盖面涉及到自然科学和社会科学的几乎每一个分支。1972年12月29日,美国麻省理工学院教授、混沌学开创人之一E.N.洛伦兹在美国科学发展学会第139次会议上发表了题为《蝴蝶效应》的论文,提出一个貌似荒谬的论断:在巴西一只蝴蝶翅膀的拍打能在美国得克萨斯州产生一个龙卷风,并由此提出了天气的不可准确预报性。为什么会出现这种情况呢?这是混沌在作怪! “混沌”译自英语中“chaos”一词,原意是混乱、无序,在现代非线性理论中,混沌则是泛指在确定体系中出现的貌似无规则的、类随机的运动。 混沌现象是普遍的,就在我们身边,是与我们关系最密切的现象,我们就生活在混沌的海洋中。一支燃着的香烟,在平稳的气流中缓缓升起一缕青烟,突然卷成一团团剧烈搅动的烟雾,向四方飘散;打开水龙头,先是平稳的层流,然后水花四溅,流动变的不规则,这就是湍流;一个风和日丽的夏天,突然风起云涌,来了一场暴风雨。一面旗帜在风中飘扬,一片秋叶从树上落下,它们都在做混沌运动。可见混沌始终围绕在我们的周围,一直与人类为伴。 1.混沌的基本概念 1. 混沌: 目前尚无通用的严格的定义, 一般认为,将不是由随机性外因引起的, 而是由确定性方程(内因)直接得到的具有随机性的运动状态称为混沌。 2. 相空间: 在连续动力系统中, 用一组一阶微分方程描述运动, 以状态变量(或状态向量)为坐标轴的空间构成系统的相空间。系统的一个状态用相空间的一个点表示, 通过该点有唯一的一条积分曲线。 3. 混沌运动: 是确定性系统中局限于有限相空间的高度不稳定的运动。所谓轨道高度不稳定, 是指近邻的轨道随时间的发展会指数地分离。由于这种不稳定性, 系统的长时间行为会显示出某种混乱性。 4. 分形和分维: 分形是 n 维空间一个点集的一种几何性质, 该点集具有无限精细的结构, 在任何尺度下都有自相似部分和整体相似性质, 具有小于所在空间维数 n 的非整数维数。分维就是用非整数维——分数维来定量地描述分形的基本性质。 5. 不动点: 又称平衡点、定态。不动点是系统状态变量所取的一组值, 对于这些值系统不随时间变化。在连续动力学系统中, 相空间中有一个点0x , 若满足当 t →∞时, 轨迹0()x t x →, 则称0x 为不动点。 6. 吸引子: 指相空间的这样的一个点集 s (或一个子空间) , 对s 邻域的几乎任意一点, 当t →∞时所有轨迹线均趋于s, 吸引子是稳定的不动点。 7. 奇异吸引子: 又称混沌吸引子, 指相空间中具有分数维的吸引子的集合。该吸引集由永不重复自身的一系列点组成, 并且无论如何也不表现出任何周期性。混沌轨道就运行在其吸引子集中。 8. 分叉和分叉点: 又称分岔或分支。指在某个或者某组参数发生变化时, 长时间动力学运动的类型也发生变化。这个参数值(或这组参数值)称为分叉点, 在分叉点处参数的微小变化会产生不同性质的动力学特性, 故系统在分叉点处是结构不稳定的。 9. 周期解: 对于系统1()n n x f x += , 当n →∞时,若存在n i n x x ξ+== , 则称该系统有周期i 解ξ 。不动点可以看作是周期为1的解, 因为它满足1n n x x +=。 10. 初值敏感性:对初始条件的敏感依赖是混沌的基本特征,也有人用它来定义混沌:混沌系统是其终极状态极端敏感地依赖于系统的初始状态的系统。敏感依赖性的一个严重后果就在于,使得系统的长期行为变得不可预见。

Logistic混沌映射

Logistic混沌映射 引言 如果一个系统的演变过程对初始的状态十分敏感,就把这个系统称为是混沌系统。 在1972年12月29日,美国麻省理工教授、混沌学开创人之一E.N.洛仑兹在美国科学发展学会第139次会议上发表了题为《蝴蝶效应》的论文,提出一个貌似荒谬的论断:在巴西一只蝴蝶翅膀的拍打能在美国得克萨斯州产生一个龙卷风,并由此提出了天气的不可准确预报性。至此以后,人们对于混沌学研究的兴趣十分浓厚,今天,伴随着计算机等技术的飞速进步,混沌学已发展成为一门影响深远、发展迅速的前沿科学。 混沌来自于非线性动力系统,而动力系统又描述的是任意随时间变化的过程,这个过程是确定性的、类似随机的、非周期的、具有收敛性的,并且对于初始值有极敏感的依赖性。而这些特性正符合序列密码的要求。1989年Robert Matthews 在Logistic映射的变形基础上给出了用于加密的伪随机数序列生成函数,其后混沌密码学及混沌密码分析等便相继发展起来。混沌流密码系统的设计主要采用以下几种混沌映射:一维Logistic映射、二维He’non映射、三维Lorenz映射、逐段线性混沌映射、逐段非线性混沌映射等,在本文中,我们主要探讨一维Logistic映射的一些特性。 Logistic映射分析 一维Logistic映射从数学形式上来看是一个非常简单的混沌映射,早在20世纪50年代,有好几位生态学家就利用过这个简单的差分方程,来描述种群的变化。此系统具有极其复杂的动力学行为,在保密通信领域的应用十分广泛,其数学表达公式如下: Xn+1=Xn×μ×(1-Xn) μ∈[0,4] X∈[0,1] 其中μ∈[0,4]被称为Logistic参数。研究表明,当X∈[0,1] 时,Logistic 映射工作处于混沌状态,也就是说,有初始条件X0在Logistic映射作用下产生的序列是非周期的、不收敛的,而在此范围之外,生成的序列必将收敛于某一个特定的值。如下图所示:

用Matlab观察分岔与混沌现象

Matlab 实验报告 实验目的:用Matlab 观察分岔与混沌现象。 题目:Feigenbaum 曾对超越函数sin()y x λπ=(λ为非负实数)进行了分岔与混沌的研究,试利用迭代格式1sin()k k x x λπ+=,做出相应的Feigenbaum 图 算法设计: 1、因为λ为非负实数,所以试将λ的范围限制在[0,3],制图时x 的坐标限制在[0,3],考虑到y 的值有正有负,所以把y 的坐标限制在[-3,3]。 2、根据课本上给的例题,编写程序代码来绘图。 程序代码: clear;clf; hold on axis([0,3,-3,3]); grid for a=0:0.005:3 x=[0.1]; for i=2:150 x(i)=a*sin(pi*x(i-1)); end pause(0.1) for i=101:150 plot(a,x(i),'k.'); end end 图像:

结果分析:在λ取值在[0,0.3]区间内时,y的值保持在0,然后开始上升,在λ取值在0.75附近时,开始分岔为两支。从整体上看,随着λ的值越来越大,所产生的迭代序列越来越复杂,可能会随机地落在区间(-3,3)的任一子区间内。并可能重复,这就是混沌的遍历性。 进一步分析:由于λ的取值空间偏小,考虑扩大其取值范围到[0,6],再进一步观察图像。程序代码如下: clear;clf; hold on axis([0,6,-6,6]); grid for a=0:0.05:6 x=[0.1]; for i=2:150 x(i)=a*sin(pi*x(i-1)); end

利用MATLAB实现Dijkstra算法

利用计算机语言编程实现D算法 一:实验目的 本实验课程主要目的是让学生够熟练掌握图论中的D算法。 二:实验方法 选择MATLAB语言编程实现D算法。 三:实验要求 1.输入必要参数,包括:节点个数、节点间路径长度、给定节点; 2.输出给定节点到其它各节点的最短路径、径长; 3.节点间路径长度用矩阵形式表示。 四:实验内容 无向图共有7个节点,如下图所示。 v1 45 7 计算机输入的节点间路径长度为7×7矩阵: 1234567 1 2 3 4 5 6 7 0123 106 2054 304 5407 6408 780?? ∞∞∞?? ∞∞∞∞?? ??∞∞∞??∞∞∞∞?? ??∞∞∞ ??∞∞∞ ????∞∞∞∞ ??v v v v v v v v v v v v v v 若 1 v为指定节点,则1v到其它各节点的最短路径及径长的计算机计算结果为: 提示:不相邻的两个节点间∞可以用相对较大的数代替(如输入100表示∞)

五:实验原理 1. D 算法原理 已知图G=(V,E),将其节点集分为两组:置定节点集p G 和未置定节点集 p G G -。其中p G 内的所有置定节点,是指定点s v 到这些节点的路径为最短(即已完成最短路径的计算)的节点。而p G G -内的节点是未置定节点,即s v 到未置定节点距离是暂时的,随着算法的下一步将进行不断调整,使其成为最短径。在调整各未置定节点的最短径时,是将p G 中的节点作为转接点。具体地说,就是将p G 中的节点作为转接点,计算(s v ,j v )的径长(j p v G G ∈-),若该次计算的径长小于上次的值,则更新径长,否则,径长不变。计算后取其中径长最短者,之后将j v 划归到p G 中。当(p G G -)最终成为空集,同时p G G =,即求得s v 到所有其他节点的最短路径。 j w 表示s v 与其他节点的距离。 在p G 中,i w 表示上一次划分到p G 中的节点i v 到s v 得最短路径。在 p G G -中,表示s v 到j v (j p v G G ∈-)仅经过p G 中的节点作为转接点所求得的该次的最短路径的长度。 如果s v 与j v 不直接相连,且无置定节点作为转接点,则令j w =∞。 2. D 算法实现流程 D 算法流程如下图所示。

图论算法及matlab程序的三个案例

图论实验三个案例 单源最短路径问题 1.1 Dijkstra 算法 Dijkstra 算法是解单源最短路径问题的一个贪心算法。其基本思想是,设置一个顶点集合S 并不断地作贪心选择来扩充这个集合。一个顶点属于集合S 当且仅当从源到该顶点的最短路径长度已知。设v 是图中的一个顶点,记()l v 为顶点 v 到源点v 1的最短距离, ,i j v v V ?∈,若 (,)i j v v E ?,记i v 到 j v 的权 ij w =∞ 。 Dijkstra 算法: ① 1{}S v =,1()0l v =;1{}v V v ??-,()l v =∞,1i =,1{}S V v =-; ② S φ=,停止,否则转③; ③ ()min{(),(,)} j l v l v d v v =, j v S ∈,v S ?∈; ④ 存在1i v +,使1()min{()}i l v l v +=,v S ∈; ⑤ 1{}i S S v += ,1{}i S S v +=-,1i i =+,转②; 实际上,Dijkstra 算法也是最优化原理的应用:如果121n n v v v v - 是从1v 到n v 的最短路径,则121n v v v - 也必然是从1v 到1n v -的最优路径。 在下面的MATLAB 实现代码中,我们用到了距离矩阵,矩阵第i 行第j 行元素表示顶点i v 到 j v 的权 ij w ,若i v 到 j v 无边,则 realmax ij w =,其中realmax 是 MATLAB 常量,表示最大的实数(1.7977e+308)。 function re=Dijkstra(ma)

数字分析 matlab程序

subplot(2,2,1) x=0.578;c=0.5; hold on; for k=1:60 x y=c*x*(1-x); y plot(x,y,'bd') title('研究一般迭代公式的复杂行为混沌现象') x=y; k=k+1 end subplot(2,2,2) x=0.578;c=1.5; hold on; for k=1:60 x y=c*x*(1-x); y plot(x,y,'g*') title('研究一般迭代公式的复杂行为混沌现象') x=y; k=k+1 end subplot(2,2,3) x=0.578;c=2.5; hold on; for k=1:60 x y=c*x*(1-x); y plot(x,y,'k+') title('研究一般迭代公式的复杂行为混沌现象') x=y; k=k+1 end subplot(2,2,4) x=0.578;c=4; hold on; for k=1:60 x y=c*x*(1-x); y plot(x,y,'ro')

title('研究一般迭代公式的复杂行为混沌现象') x=y; k=k+1 end x = 0.5780 y = 0.1220 k = 2 x = 0.1220 y = 0.0535 k = 3 x = 0.0535 y = 0.0253

k = 4 x = 0.0253 y = 0.0123 k = 5 x = 0.0123 y = 0.0061 k = 6 x = 0.0061 y = 0.0030

k = 7 x = 0.0030 y = 0.0015 k = 8 x = 0.0015 y = 7.5413e-004 k = 9 x = 7.5413e-004 y =

相关文档