实验五 迭代与分形
- 格式:pdf
- 大小:459.18 KB
- 文档页数:11
实验名称:迭代与分形专业:信息工程班级:09级四班姓名:序号:29,38提交日期:2011年4月29日一、实验目的与要求1.认识Fibonacci数列,体验发现其通项公式的过程;2.了解matlab软件中进行数据显示与数据拟合的方式;3.掌握matlab软件中plot, polyfit等函数的基本用法;4.提高对数据进行分析与处理的能力。
二、问题描述几何学研究的对象是客观世界中物体的形状。
传统欧氏几何学的研究对象,都是规则并且光滑的,比如:直线、曲线、曲面等。
但客观世界中物体的形状,并不完全具有规则光滑等性质,因此只能近似当作欧氏几何的对象,比如:将凹凸不平的地球表面近似为椭球面。
虽然多数情况下通过这样的近似处理后,能够得到符合实际情况的结果,但是对于极不规则的形态,比如:云朵、烟雾、树木等,传统的几何学就无能为力了。
如何描述这些复杂的自然形态?如何分析其内在的机理?这些就是分形几何学所面对和解决的问题。
三、问题解决(1)对一个等边三角形,每条边按照Koch曲线的方式进行迭代,产生的分形图称为Koch雪花。
编制程序绘制出它的图形,并计算Koch雪花的面积,以及它的分形维数。
(2)自己构造生成元(要有创意),按照图形迭代的方式产生分形图,用计算机编制程序绘制出它的图形,并计算其分形维数。
1、程序如下:function plottrkoch(a,k)%函数,a为迭代0次的三角形的边长,k为迭代次数p=[0 0;a 0;a/2 a/2*sqrt(3);0 0];n=3;A=[cos(pi/3) -sin(pi/3);sin(pi/3) cos(pi/3)];for s=1:kj=0;for i=1:nq1=p(i,:);q2=p(i+1,:);d=(q2-q1)/3;j=j+1;r(j,:)=q1;j=j+1;r(j,:)=q1+d;j=j+1;r(j,:)=q1+d+d*A';j=j+1;r(j,:)=q1+2*d;endn=4*n;clear pp=[r;q2];endmianji=sqrt(3)*(1+3*(1-(4/9)^k)/5)/4*a^2%计算迭代k次后的面积大小weishuD=log(4)/log(3)%计算维数plot(p(:,1),p(:,2))axis equal当k=1时当k=3时当k=5时因为是Koch曲线,所以维数d=ln4÷ln3=1.2619计算面积:假设最初的正三角形边长为1,则其周长为,面积为。
《数学实验》报告学院:电子信息学院专业班级:信息工程电联班学号:姓名:实验名称:迭代与分析实验日期:2016/05/031.实验目的了解分形几何的基本特性了解通过迭代方式产生分形图的方法欣赏美妙的分形艺术了解分形几何的简单应用2.实验任务对一条横向线段,先将其等分成4段,然后将第2段向上平移,将第3段向下平移,再将4段的相邻端点连接起来,迭代一次后变成下图。
继续迭代得到的分形图,称为Minkowski香肠。
编制程序绘制出它的图形,并计算它的分形维数。
图1Minkowski香肠1次迭代3.实验过程3.1实验原理通过观察该图形可以得知,该图形的相似形个数为8,边长放大倍数为4。
所以要把八条边进行迭代运行,同时把每个点的坐标放入数组中。
3.2算法与编程minkowski的算法代码:function plotminkowski(k)p=[0,0;10,0];n=1;A=[0,1;-1,0];for s=1:kj=0;for i=1:nq1=p(i,:);q2=p(i+1,:);d=(q2-q1)/4;j=j+1;r(j,:)=q1;j=j+1;r(j,:)=q1+d;j=j+1;r(j,:)=q1+d+d*A;j=j+1;r(j,:)=q1+2*d+d*A;j=j+1;r(j,:)=q1+2*d;j=j+1;r(j,:)=q1+2*d-d*A;j=j+1;r(j,:)=q1+3*d-d*A;j=j+1;r(j,:)=q1+3*d;endn=8*n;clear p;p=[r;q2];endfigureplot(p(:,1),p(:,2)) %显示各结点的连线图axis equal3.3计算结果或图形执行命令行:plotminkowski(4)输出图形:图3.3.1四次迭代的minkowski分形图执行命令行:plotminkowski(3)输出图形:图3.3.2三次迭代的minkowski分形图执行命令行:plotminkowski(1)输出图形:图3.3.3一次迭代的minkowski分形图3.4结果分析相似形个数:m=8边长倍数:c=4minkowski分形维度d=ln m/ln c=1.54. 实验总结和实验感悟通过这次实验,我们以迭代的方式来体验生成分形图的过程,从而对分形几何有了一个直观的了解,并感受美丽的分形图案。
数学实验实验练习3.1对一个等边三角形,每条边按照Koch曲线的方式进行迭代,产生的分形图称为Koch雪花。
实验练习3.2对一条竖向线段,在三分之一点处,向左上方向画一条线段,在其三分之二分点处,向右上方向再画一条线段,线段长度都是原来的三分之一,夹角都为30度。
代码3.1Homework1.mfunction homework1(d,a) % d为图形基础边长,a为图形阶数A=[cos(pi/3),-sin(pi/3);sin(pi/3),cos(pi/3)]; %正负30°旋转因子p=[0,0;[0,0]+[d,0]*A';(0+d),0;0,0]; %分形点列矩阵n=3;if n~=1for s=1:(a-1)j=0;for i=1:n %一直线段新增3点q1=p(i,:);q2=p(i+1,:);d=(q2-q1)/3;j=j+1;r(j,:)=q1;j=j+1;r(j,:)=q1+d;j=j+1;r(j,:)=q1+d+d*A';j=j+1;r(j,:)=q1+2.*d;endclear pp=[r;q2];n=4*n;endendfill(p(:,1),p(:,2),'r')axis equal代码3.2Homework2.mfunction homework2(n) %n为图形阶数,一阶是长度为1的竖直直线born=[0;1i];plot(born); %画出主树干hold onzhuan=[exp(1i*pi/6),exp(-1i*pi/6)]; %正负30°旋转因子if n~=1for s=1:(n-1)j=0;b=0;sizeb=size(born);hua=zeros(2,2*3^(s-1)); %装要画出的线段构成的矩阵r=zeros(2,3^s); %装成为新生枝的主干的矩阵for a=1:sizeb(2)p1=born(1,a); %分主干的根点p2=born(2,a); %分主干的顶点d=(p2-p1)/3;j=j+1;hua(1,j)=p1+d; %要画出的分支线段装进hua矩阵hua(2,j)=p1+d+d*zhuan(1);b=b+1;r(1,b)=hua(1,j); %要要成为新分主干的线段装进r矩阵r(2,b)=hua(2,j);j=j+1;hua(1,j)=p1+2*d;hua(2,j)=p1+2*d+d*zhuan(2);b=b+1;r(1,b)=hua(1,j);r(2,b)=hua(2,j);b=b+1;r(1,b)=p1+2*d;r(2,b)=p2;endplot(hua); %画出新分支hold onclear huaborn=r; %装进新的分主干clear rendendaxis equal。
一、实验目的:1、初步认识迭代,体会迭代思想的重要性。
2、通过在mathematica 环境下编写程序,利用迭代的方法求解方程的根、线性方程组的解、非线性方程组的解。
3、了解分形的的基本特性及利用mathematica 编程生成分形图形的基本方法, 在欣赏由mathematica 生成的美丽的分形图案的同时对分形几何这门学科有一个直观的了解。
从哲理的高度理解这门学科诞生的必然性,激发读者探寻科学真理的兴趣。
4、从一个简单的二次函数的迭代出发,利用mathematica 认识混沌现象及其所 蕴涵的规律。
5、.进一步熟悉Mathematic 软件的使用,复习总结Mathematic 在数学作图中的应用,为便于研究数学图像问题提供方便,使我们从一个新的视角去理解数学问题以及问题的实际意义。
6、在学习和运用迭代法求解过程中,体会各种迭代方法在解决问题的收敛速度上的异同点。
二、实验的环境:学校机房,mathematica4环境三、实验的基本理论和方法:1、迭代(一)—方程求解函数的迭代法思想:给定实数域上光滑的实值函数)(x f 以及初值0x 定义数列1()n n x f x +=, ,3,2,1,0=n , (1)n x , ,3,2,1,0=n ,称为)(x f 的一个迭代序列。
(1)方程求根给定迭代函数)(x f 以及初值0x 利用(1)迭代得到数列n x , ,3,2,1,0=n .如果数列收敛到某个*x ,则有)(**x f x =. (2)即*x 是方程)(x f x =的解。
由此启发我们用如下的方法求方程0)(=x g 的近似解。
将方程0)(=x g 改写为等价的方程)(x f x =, (3) 然后选取一初值利用(1)做迭代。
迭代数列n x 收敛的极限就是方程0)(=x g 的解。
为了使得迭代序列收敛并尽快收敛到方程0)(=x g 的某一解的条件是迭代函数)(x f 在解的附近的导数将的绝对值尽量小,因此迭代方程修订成x x f x h x )1()()(λλ-+== (4) 选取λ使得|)(|x h '在解的附近尽量小. 为此, 我们可以令,01)()(=-+'='λλx f x h得)(11x f '-=λ. 于是 1)()()(-'--=x f x x f x x h . 特别地,如果取x x g x f +=)()(, 则可得到迭代公式 .,1,0,)()(1 ='-=+n x g x g x x n n n n (5) (2)线性方程组的数值解的迭代求解理论与矩阵理论给定一个n 元线性方程组⎪⎩⎪⎨⎧=++=++,,1111111n n nn n n n b x a x a b x a x a (6)或写成矩阵的形式,b Ax = (7) 其中)(ij a A =是n 阶方阵,T n x x x x ),,(21 =及T n b b b b ),,,(21 =均为n 维列向量.熟知,当矩阵A 的行列式非零时,以上的方程组有唯一解.如何有效,快速地寻求大型的线性方程组的数值解释科学工程计算中非常重要的任务.而迭代法常常是求解这些问题的有效方法之一。
迭代:分形姓名:学号:班级:数学与应用数学4班实验报告实验目的:以迭代的观点介绍分形的基本特性以及生成分形图形的基本方法,使读者在欣赏美丽的分形图案的同时对分形几何这门学科有一个直观的了解,并从哲理的高度理解这门学科诞生的必然,激发读者探寻科学真理的兴趣。
实验环境:Mathematica软件实验基本理论和方法:在19世纪末及20世纪初,一些数学家就构造出一些边界形状极不光滑的图形,而这类图形的构造方式都有一个共同的特点,即最终图形F都是按照一定的规则R通过对初始图形不断修改得到的。
其中最有代表性的图形是Koch曲线,Koch曲线的构造方式是:给定一条直线段,将该直线段三等分,并将中间的一段用以该线段为边的等边三角形的另外两条边代替,得到图形,然后再对图形中的每一小段都按上述方式修改,以至无穷。
则最后得到的极限曲线即是所谓的Koch曲线。
生成元:Koch曲线的修改规则R是将每一条直线段用一条折线代替,我们称为该分形的生成元。
分形的基本特性完全由生成元确定,因此,给定一个生成元,我们就可以生成各种各样的分形图形。
Julia集绘制方法:(1)设定初值p,q,一个最大的迭代次数N,图形的分辨率的大小a,b,和使用的颜色数(如K=16)(或者给定灰度级L);(2)设定一个上界值;(3)将矩形区域分成的网格,分别以每个网格点,,,,作为初值利用riter做迭代(实际上,只需对满足的初值点做迭代)。
如果对所有,,则将图形的像素点用黑色显示,否则,如果从迭代的某一步开始有,则用modK种颜色显示相应像素(或者用相应的灰度级显示)。
Mandelbrot集绘制方法:设定一个最大的迭代次数N,图形的分辨率的大小a,b,和使用的颜色数(如K=16)(或者给定灰度级L);(2)设定一个上界值;(3)将矩形区域分成的网格,分别以每个网格点,,,,作为参数值利用riter做迭代(实际上,只需对的初值点做迭代),每次迭代的初值均取为。
《数学实验》报告学院:电子与信息学院专业班级:通信工程4班学号:*************名:***实验名称:迭代与分形实验日期:2013.04.7第三次实验1. 实验内容1.对一个等边三角形,每条边按照Koch 曲线的方式进行迭代,产生的分形图称为Koch 雪花。
编制程序绘制出它的图形,并计算Koch 雪花的面积,以及它的分形维数。
2. 实验过程方法一仿照Koch 曲线代码对三角形的每条边进行Koch 曲线化,函数的输入参数有三角形的边长R 和迭代次数k,输出Koch 雪花图形以及雪花所围面积S.KochSnow 面积推导如下所示:迭代次数k 面积S0: S=24r1: 2+ (13R)2*32: 2+ (13R)2*3 + 13)2R)2*323: S=4R 2+ 4(13R)2*3 + 4((13)2R)2*32 + 4((13)3R)2*33 ``````N: R 2+ 13R)2*3 + ((13)2R)2*32 + ((13)3R)2*33+…((13)n R)2*3n 如此相加下去,当N 无穷时,S 将为无穷大源代码如下:function kochsnow(R,k) %R为正三角形边长,k为迭代次数p01=[0,0];p02=[R/2,sqrt(3)*R/2];p03=[R,0]; %3个起始点S = 0; % S为面积,开始设为0 for line=0:2 %依次对3条边进行Koch曲线运算if line==0;p=[p01;p02];elseif line==1;p=[p02;p03];else line==2;p=[p03;p01];endn=1; %存放线段的数量,初始值为1A=[cos(pi/3),-sin(pi/3);sin(pi/3),cos(pi/3)]; %变换矩阵用于计算新的结点for s=1:kj=0; % j为行数for i=1:nq1=p(i,:); %目前线段的起点坐标q2=p(i+1,:); %目前线段的终点坐标d=(q2-q1)/3;j=j+1;r(j,:)=q1; %原起点存入rj=j+1;r(j,:)=q1+d; %新1点存入rj=j+1;r(j,:)=q1+d+d*A'; %新2点存入rj=j+1;r(j,:)=q1+2*d; %新3点存入rendn=4*n; %全部线段迭代一次后,线段数量乘4clear p %清空p ,注意:最后一个终点q2不在r中p=[r;q2]; %一条边的全部结点clear rendif line==0; %把第一条边的全部结点放在aa=p;elseif line==1; %把第二条边的全部结点放在bb=p;else line==2; %把第三条边的全部结点放在cc=p;endendall=[a;b;c]; %三条边全部结点放入all plot(all(:,1),all(:,2)) %连接各个结点fill(all(:,1),all(:,2),'g')%填充所围区域for i=0:k %计算KochSnow的面积S = S + (3^(0.5-i))*0.25*(R^2);endSaxis equalKoch雪花图形输入半径R=2K=0时是正三角形此时面积为 1.7321K=1时是正六边形此时面积为 2.3094 K=2时的koch雪花此时面积为 2.5019K=3时的Koch雪花此时面积为 2.5660 K=4时的Koch雪花此时面积为 2.5874分形维数:根据迭代的规律得到:相似形个数:m=6 边长放大倍数:c=3,d m c=÷=÷=1.631ln ln ln6ln3方法2只生成一次Koch曲线,然后对生成的Koch曲线进行旋转变换,旋转3次即可得到所需图形。