分形实验报告_第1页
分形实验报告_第2页
分形实验报告_第3页
分形实验报告_第4页
分形实验报告_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 / 20 分形实验报告 实验:分形 1. 用计算机绘制出 Koch曲线的图形。你能否自己构造一些生成元,并由此绘出相应的分形图形?任取分形图形的一个局部并将它放大,它同原来的分形图形有什么联系? 代码: function result=KochSnow if -a) +-a) c=a+-a)/3 a+-a)/3; d=a+2*-a)/3 a+2*-a)/3; alpha=atan-c)/-c); l=sqrt-c) +-c) ); if e=c+cos*l; e=c+sin*l; result=0; KochSnow;KochSnow; KochSnow;KochSnow; endend clear clc n=input; a=0 0; b=130 0; c=b/2 b*sqrt/2; KochSnow; KochSnow; KochSnow; 2016秋 数学实验实验:分形 页 第 1 页 共 10 实验:分形 运行结果: 请输入次数 :6 120160 2 / 20 806040200-20-40-20 020406080100120160 2. 定义 Weierstrass 函数如下: W?ksin,?1, k?1 ? 1?s?2 对不同的 s 值,画出函数的图像,观察图像的不规则性与的关系,由此猜测 Weierstrass 函数图像的维数与的关系。 代码: function y = Weierstrass n=1000; y=zeros); for i=1:n 2016秋 数学实验实验:分形第 2 页 共 10 页 实验:分形 y=y+*i)* sin; end end clear clc x = linspace; lambda = 2; i = 1; for s = : : y = Weierstrass; subplot plot 3 / 20 title); i = i + 1; end 运行结果: s= 21 0-1-2-4 -2 02 4 s= 21 0-1-2-4 -2 2 4 2016 秋 数学实验实验:分形 页 s= 21 0-1-2-4 -2 02 4 s= 4 / 20 42 0-2-4-4 -2 2 4 第 3 页 共 10 实验:分形 3. 编 写 Julia 集 的 程 序 。 对 不 同 的 参 数 5 / 20 :, 观察 Julia 集的变化。取 Julia集的不同局部放大,你能看出某种自相似现象吗? 代码: function Julia if nargin r=max,2); l=linspace; A=ones*l+i*l); B=zeros; for s = 1:m B = B+ imagesc; colormap; hold off; axis equal; axis off; clear clc A=0 1;-1 0; ;- ;- -; a=;b=; p=0;q=1; n=500; m=14; 2016秋 数学实验实验:分形 页 第 4 页 共 10 实验:分形 for i=1:5 subplot; p=A; q=A; Julia; title) + num2str) i); end 运行结果: c=0+ 1 i c=-+ i c=-+ i 6 / 20 c=-1+ 0 i c=+ i c=-+ - i c=-+ i 2016 秋 数学实验实验:分形第 5 页 共 10 页 实验六:分形图的生成 班级 11信计 2班 学号 20160502078 姓名 刘昱丞 分数 一、实验目的 理解分形图生成的基本原理,掌握几种常见的分形图生成算法,利用 TurboC实现 Koch 曲线和可以无穷放大的 Mandelbrot Set 生成算法。 二、实验内容 1.、利用 Koch 曲线生成规则,在屏幕上生成一段Koch 曲线。 2/、利用 Mandelbrot Set 生成规则,在屏幕上生成可以无穷放大的 Mandelbrot Set 三、实验步骤 预习教材关于 Koch 曲线和可以无穷放大的 Mandelbrot Set 的生成原理。 仿照教材关于 Koch 曲线和可以无穷放大的 Mandelbrot Set 生成算法生成算法,使用 TurboC实现该算7 / 20 法。 调试、编译、运行程序。 四、实验要求 在下次实验时提交本次试验的实验报告。 五、实验过程 Koch 曲线的生成规则 它的构造是:迭代初始把原线段去掉中间的三分之一,代之以底边在被去线段上的等边三角形的两腰;以后每一步的迭代都是这样的重复。 从以上过程可以清楚地看出, Koch曲线可以由简单的图,称为 生成元 ,迭代产生。 在这里, Koch曲线的生成元是: 六、实验代码 1/、 Koch 曲线源程序: #include #include #include #include #include #define rad #define NUMBER 24 koch 8 / 20 int ax,ay,bx,by; float cx,cy,ex,ey,dx,dy,arf,le,c; c=1000; /*30000,20000,10000,5000,1000 tiao jie ci shu */ if *+* line; else cx=ax+/3; cy=ay+/3; ex=bx-/3; ey=by-/3; koch,);/* koch;*/ koch,); le=sqrt*+*); /* koch;*/ arf=atan/); if arf=arf+; dy=cy+sin*le; dx=cx+cos*le; koch,); /*koch;*/ koch,); /* koch; */ main float xa1,xb1,ya1,yb1; float xa,xb,ya,yb; float dex,dey,dx,dy; float x,y,s1,s2; int steps,k; 9 / 20 int gdriver=DETECT,gmode; initgraph; cleardevice; setbkcolor; /* line; */ settextstyle; outtextxy; /* koch ; */ koch ; getch; closegraph; return 0; 输出结果为: 2.、可以无穷放大的 Mandelbrot Set COMPLEX c; = * - * ; = * + * ; return c; / 定义复数“加”运算 10 / 20 COMPLEX operator + COMPLEX c; = + ; = + ; return c; / / 定义颜色及初始化颜色 / / 定义颜色 int ColorMAXCOLOR; / 初始化颜色 void InitColor / 使用 HSL 颜色模式产生角度 h1 到 h2 的渐变色 int h1 = 240, h2 = 30; for 11 / 20 Colori = HSLtoRGBh1, , i * / MAXCOLOR); ColorMAXCOLOR-1-i = HSLtoRGBh2, , i * / MAXCOLOR); / / 绘制 Mandelbrot Set / void Draw COMPLEX z, c; int x, y, k; / 定义循环变量 for = fromx + * ; for = fromy + * ; = = 0; for 12 / 20 if break; z = z * z + c; putpixel ? 0 : Colork % MAXCOLOR); / / 主函数 / void main / 初始化绘图窗口及颜色 initgraph; InitColor; / 初始化 Mandelbrot Set 坐标系 实验:分形 1. 用计算机绘制出 koch 曲线的图形。你能否自己构造一些生成元,并由此绘出相应的 分形图形?任取分形图形的一个局部并将它放大,它同原来的分形图形有什么联系? 代码: function 13 / 20 result=kochsnowif -a) +-a) hold on; else c=a+-a)/3 a+-a)/3; d=a+2*-a)/3 a+2*-a)/3; alpha=atan-c)/-c); l=sqrt-c) +d-c) ); if alpha=alpha+pi; ende=c+cos*l; e=c+sin*l; result=0; kochsnow;kochsnow; kochsnow;kochsnow; endend clear clc n=input; a=0 0; b=130 0; c=b/2 b*sqrt/2;kochsnow; kochsnow; kochsnow; 2016秋 数学实验实验:分形 页 第 1 页 共 10实验:分形 运行结果: 请输入次数 :6 120160 806040200-20-40-20 020406080100120160 2. 定义 weierstrass 函 数 如 下 : w?ksin,?1,k?1 ? 1?s?2 对不同的 s 值,画出函数的图像,观察图像的不规则性与的关系,由此猜测 weierstrass 函数图像的维数与的关系。代码: function y = weierstrass n=1000; y=zeros); 14 / 20 for i=1:n 2016秋 数学实验实验:分形第 2 页 共 10 页 实验:分形 y=y+*i)* sin; end end clear clc x = linspace; lambda = 2; i = 1;for s = : : y = weierstrass; subplot plottitle); i = i + 1; end 运行结果: s= 21 0-1-2-4 -2 02 4 s= 21 0-1-2-4 -2 2 4 2016秋 数学实验实验:分形 s= 21 0-1-2-4 -2 02 4 15 / 20 s= 42 0-2-4-4 -2 2 4第 3 页 共 10实验:分形 3. 编 写 julia 集 的 程 序 。 对 不 页 同 的 参 数 :, 观察 julia 集的变化。取 julia 集的不同局部放大,你能看出某种自相似现象吗? 代码: function julia if nargin n=500; m=14; 16 / 20 2016 秋 数学实验实验:分形 页 第 4 页 共 10实验:分形 for i=1:5 subplot; p=a; q=a; julia; title) + num2str) i); end 运行结果: c=0+ 1 i c=-+ i c=-+ i c=-1+ 0 i c=+ i c=-+ - ic=-+ i 2016 秋 数学实验实验:分形第 5 页 共 10 页 篇二:分形实验报告分形实验报告 一、 操作手册 本程序实现的是分形 koch snow 具体操作: 鼠标左键:可画出绿色雪花,鼠标在屏幕上任意点击一个位置,雪花即可在相应位置显 示。 鼠标右键:清除原先绿色雪花,并重新画出蓝色雪花。按住右键可对雪花进行自由拖动, 当松开右键时,雪花显示在拖动到的位置。 二、 实验思路 1.在实验过程中,我先根据 koch snow 分形递归算法描绘出一个简单的“雪花”图案出 来。基本思想是:将坐标系两点对应一条线段等分为三段,在第一个等分点处偏 移 60角以 相等的长度确定第三个点,如此递归下去将出现多个17 / 20 等边三角形,最后出现雪花形状。 void koch_snow float s=atan/);/两点间正切角 if t=sqrt*+*);/计算两点 s=s+pi; float x121,y121,x122,y122,x123,y123; if glvertex2f; glvertex2f; glend; else /*将线段三等分 */ x121=x1+/; x122=/; y122=/; glbegin; y121=y1+/; 间距离 /* 与 相 差 60 */ x123=x121+t*cos;y123=y121+t*sin; koch_snow; koch_snow;koch_snow; koch_snow; 2.对该图案进行初步的交互,用 glutmousefunc;glutmotionfunc;回 调鼠标函数对鼠标操作进行编写定义 .如单击鼠标左键画出雪花图形,右击清除原有雪花,重 新画出新的雪花并且可对此 雪花进行任意拖动,对于拾取用 void processhits 实现,对于拖动程序,有个标记符 first, flag 进行记录 ,当 first=1 时, 记录此时鼠标位置,并算出拖动结束时图形所在位置。 void mouse glupickmatrixx,80,80,viewport); glpushmatrix; glloadidentity; if if 18 / 20 gluint namebuffer20; glint hits; glint viewport4; glgetintegerv; glselectbuffer; glrendermode; glinitnames; glpushname; glmatrixmode; flag=0; drawsquare;gluortho2d; hits=glrendermode; drawobject; glcolor3f; glmatrixmode; glpopmatrix; glflush; processhits; glutpostredisplay; void move if else if y=wh-y; int x1=x-xx; int x2=y-xy; xx=x; xy=y; display; flag=1; y=wh-y; xx=x; xy=y; display; first=0; gllogicop; pointb0+=x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论