Фракталы

Автор работы: Пользователь скрыл имя, 28 Декабря 2011 в 20:03, курсовая работа

Описание работы

Поняття фрактал та фрактальна геометрія, що з'явилися в кінці 70-х, з середини 80-х міцно увійшли в обіг математиків і програмістів. Слово фрактал утворена від латинського fractus і в перекладі означає що складається із фрагментів. Воно було запропоновано Бенуа Мандельбротом в 1975 році для позначення нерегулярних, але самоподібних структур, якими він займався. Народження фрактальної геометрії прийнято пов'язувати з виходом в 1977 році книги Мандельброта `The Fractal Geometry of Nature '. У його роботах використані наукові результати інших вчених, які працювали в період 1875-1925 років в тій же області (Пуанкаре, Фату, Жюліа, Кантор, Гаусдорф). Але лише в наш час вдалося об'єднати їх роботи в єдину систему.

Файлы: 1 файл

kursova.DOC

— 411.50 Кб (Скачать файл)

        Щоб проілюструвати алгебраїчні фрактали звернемося до класики - множени Мандельброта.

         Для його побудови нам необхідні комплексні числа. Комплексні числа можна складати, віднімати, множити, ділити, підносити до степеня і витягувати корінь, не можна лише їх порівнювати. Комплексне число можна зобразити як точку на площині, у якої координата Х це дійсна частина a, а Y це коефіцієнт при уявній частині b.  
Функціонально множина Мандельброта визначається як Zn +1 = Zn * Zn + C. На малюнку, що зображує множину Мандельброта я взяв невелику ділянку і збільшив її до розмірів всього екрану (як у мікроскоп). Що ж ми бачимо? Прояв самоподібності. Не точна самоподібність, але близька і з нею ми будемо стикатися постійно, збільшуючи частини нашого фрактала більше і більше. До яких же пір ми можемо збільшувати наше безліч? Так от якщо ми збільшимо його до межі обчислювальної потужності комп'ютерів, то покриємо площу рівну площі сонячної системи аж до Сатурна.

 

       Стохастичні фрактали.  
Ще одним відомим класом фракталів є стохастичні фрактали, що утворюються в тому випадку, якщо в ітераційному процесі випадковим чином змінювати будь-які його параметри. При цьому виходять об'єкти дуже схожі на природні - несиметричні дерева, порізані берегові лінії і т.д. Двовимірні стохастичні фрактали використовуються при моделюванні рельєфу місцевості і поверхні моря.  

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

5. Висновок

 

Метою даної роботи було розроблення програми,  яка дозволить реалізувати та більш наглядно пояснити, за допомогою графіки, що таке фрактал.  В даній роботі реалізовані як геометричні фрактали так и алгебраїчні. Беручи до уваги результати – мета була досягнута.

 
 
 
 
 
 
 
 

6. Література

 

1. http://www.michurin.com.ru/fractal-dim.shtml

2. http://fractalworld.xaoc.ru

4. http://algolist.manual.ru/graphics/fracart.php#frac

5. Балханов В.К. «Введение в теорию фрактального исчисления»

6. Мандельброт Б. Фрактальная геометрия природы. — М.: «Институт компьютерных исследований», 2002.

7. Федер Е. Фракталы. — М: «Мир», 1991.

8.  Шредер М. Фракталы, хаос, степенные законы. Миниатюры из бесконечного рая. — Ижевск: «РХД», 2001.

9.  Кроновер Р. М. Фракталы и хаос в динамических системах. Основы теории.

10. Пайтген Х.-О., Рихтер П. Х. Красота фракталов. — М.: «Мир», 1993.

 
 
 
 
 
 
 
 
 

 

 
 
 

 
 
 
 
 
 
 
 
 
 
 
 

 

7. Код програми

#include<dos.h>

#include<iostream.h>

#include<conio.h>

#include<stdlib.h>

#include<stdio.h>

#include<math.h>

#include<graphics.h>

 

class Start{

int key;

int color;

int pos;

void print(int x, int y, char *str);

void block(int x, int y, int color, char *str);

 

public:

Start();

~Start();

virtual void Draw(int x, int y, int l, float u)=0;

void GD();

void menu();

};

 
 

class TTree: public Start{

public:

int Draw(int x, int y, int l);

};

 
 

class HTree: public Start{

public:

int Draw(int x, int y, int l);

};

 
 

class BTree: public Start{

public:

int Draw(int x, int y, int l);

};

 
 

class VTree: public Start{

public:

int Draw(int x, int y, float l);

int LineTo1(int x, int y, float l, float u);

};

 
 

class PITree: public VTree{

public:

int Draw(int x, int y, float l, float u);

int LineTo1(int x, int y,  float l, float u);

};

 
 

class DTree: public VTree{

public:

int Draw(int x, int y, float l, float u);

LineTo1(float x, float y, float l, float u);

};

 
 

class JuliaFractal{

typedef struct {float Re; float Im;} Complex;

 

Complex Result;

Complex ComplexAdd(Complex X, Complex Y)

      {

       Result.Re = X.Re + Y.Re;

       Result.Im = X.Im + Y.Im;

       return Result;

      }

Complex ComplexMult(Complex X, Complex Y)

      {

       Result.Re = X.Re*Y.Re - X.Im*Y.Im;

       Result.Im = X.Re*Y.Re + X.Im*Y.Re;

       return Result;

      }

float ComplexAbs(Complex X);

 

public:

void JulFrac();

};

 
 

class SPYMBL{

      #define  ZOOM       1

      #define  WDT      640

      #define  HGT      480

 

typedef struct Complex {long double x; long double y;} Complex;

 

void Sqr(Complex *z);

char GetColor(Complex);

 

public:

void MBS(long double, long double, long double, long double);

};

 
 

class THORM{

int iter;

int max1;

 

struct TComplex{ double x; double y;};

 

TComplex z, t, c;

double p;

int x, y, n;

int mx, my;

int i;

 

public:

void  THM();

};

 
 

class HENONIFS{

#define m   3

 

int i, n, l;

float x1, y1, x, y;

float a[m], b[m];

 

public:

void HNIFS();

};

 
 

void Start::print(int x, int y, char *str)

{

gotoxy(x,y);

cprintf(str);

}

 

void Start::block(int x, int y, int color, char *str)

{

textcolor(color);

print(x,y,str);

}

 

void Start::menu()

{

TTree *F0;

HTree *F1;

BTree *F2;

VTree *F3;

PITree *F4;

DTree *F5;

JuliaFractal *F6;

SPYMBL *F7;

THORM *F8;

HENONIFS *F9;

 

Start *reset;

 

color=4;

char *mas[11]=

{

      "є1.  frac1  є",

      "є2.  frac2  є",

      "є3.  frac3  є",

      "є4.  frac4  є",

      "±5.  frac5  є",

      "±6.  frac6  є",

      "±7.  frac7  є",

      "є8.  frac8  є",

      "є9.  frac9  є",

      "є10. frac10 є",

      "є11. exit   є"

};

clrscr();

print(7,12,"ЗД-ДДДД-ДД·");

print(7,13,"є1.  frac1  є");

print(7,14,"є2.  frac2  є");

print(7,15,"є3.  frac3  є");

print(7,16,"є4.  frac4  є");

print(7,17,"±5.  frac5  є");

print(7,18,"±6.  frac6  є");

print(7,19,"±7.  frac7  є");

print(7,20,"є8.  frac8  є");

print(7,21,"є9.  frac9  є");

print(7,22,"є10. frac10 є");

print(7,23,"є11. exit   є");

print(7,24,"ЗД-ДДДД-ДДЅ");

 

block(7,13,color,mas[0]);

pos=0;

 

do

{

key=getch();

switch(key)

{

      case 80:

       {

            if (pos<10)

            {

             pos++;

             block(7, 13+pos-1, 7, mas[pos-1]);

             block(7, 13+pos, color, mas[pos]);

            }

            else

            {

             block(7, 13+pos, 7, mas[pos]);

             pos=10;

             block(7, 13+pos, color, mas[pos]);

            }

            break;

       };

 

      case 72:

       {

            if (pos>0)

            {

             pos--;

             block(7, 13+pos+1, 7, mas[pos+1]);

             block(7, 13+pos, color, mas[pos]);

            }

            if (pos<0)

            {

             block(7, 13+pos, 7, mas[pos]);

             pos=9;

             block(7, 13+pos, color, mas[pos]);

            }

            break;

       };

 

      case 13:

       {

            switch(pos)

             {

                  case  0:{GD(); F0->Draw(320,460,300); getch(); closegraph(); reset->menu();};

                  case  1:{GD(); F1->Draw(320,240,640); getch(); closegraph(); reset->menu();};

                  case  2:{GD(); F2->Draw(320,350,256); getch(); closegraph(); reset->menu();};

                  case  3:{GD(); F3->Draw(320,380,400); getch(); closegraph(); reset->menu();};

                  case  4:{GD(); F4->Draw(320,460,200.0,M_PI/2); getch(); closegraph(); reset->menu();};

                  case  5:{GD();

                                           F5->Draw(320,240,300.0,3.14/2);

                                           F5->Draw(320,240,300.0,3.14/2+4*3.14/3);

                                           F5->Draw(320,240,300.0,3.14/2-4*3.14/3);

                                           getch(); closegraph(); reset->menu();};

                  case  6:{GD(); F6->JulFrac(); getch(); closegraph(); reset->menu();};

                  case  7:{GD(); F7->MBS(-2*ZOOM, 2/3.0*ZOOM, -1*ZOOM, 1*ZOOM); getch(); closegraph(); reset->menu();};

                  case  8:{GD(); F8->THM(); getch(); closegraph(); reset->menu();};

Информация о работе Фракталы