Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Уральский Федеральный Университет



Уральский Федеральный Университет

имени Первого Президента РФ

Б.Н.Ельцина

Кафедра теоретической физики и прикладной математики

 

Процессы роста фракталов

 

 

дисциплина: Вычислительная физика

 

преподаватель: Мазуренко В.В.

 

группа: Фт-38042

 

выполнили: Корейша В.А.

Левина Ю.В.

 

Екатеринбург 2011г.


1)Разработали компьютерную программу генерирующую кластеры на квадратной решетке в соответствии с моделью Эдена.

2)Определили число занятых ячеек М(r) в радиусе r от затравочной ячейки. Получили М для нескольких значений r.

Из графика видно, что d=1,5 (среднее значение).


Приложение. Код программы

//---------------------------------------------------------------------------

 

#include <vcl.h>

#pragma hdrstop

#include <math.h>

#include <stdio.h>

#include <time.h>

#include <stdlib.h>

 

 

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

int P=0;

int n,i,g,p,r,r1,t;

 

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{ P = 1;

randomize();

 

t = 100000;

r=0;

r1=0;

g = 2;

p = 0;

for(i=0; i < StrToInt(Edit1->Text); i++)

for(n=0; n < StrToInt(Edit1->Text); n++)

StringGrid1->Cells[n][i] = 0;

 

 

StringGrid1->ColCount = StrToInt(Edit1->Text);

StringGrid1->RowCount = StrToInt(Edit1->Text);

StringGrid1->DefaultColWidth = 600/StrToInt(Edit1->Text) - sqrt(sqrt(sqrt(sqrt(StrToInt(Edit1->Text)))));

StringGrid1->DefaultRowHeight = 600/StrToInt(Edit1->Text)- sqrt(sqrt(sqrt(sqrt(StrToInt(Edit1->Text)))));

n = int(StrToInt(Edit1->Text)/2);

i = int(StrToInt(Edit1->Text)/2);

StringGrid1->Cells[n][i] = 1;

 

 

while (t>0)

{

 

for(i=1; i < StrToInt(Edit1->Text)-1; i++)

for(n=1; n < StrToInt(Edit1->Text)-1; n++)

if (StringGrid1->Cells[n][i] == 1)

{

if (StringGrid1->Cells[n-1][i]!= 1)

StringGrid1->Cells[n-1][i] = g;

if (StringGrid1->Cells[n+1][i]!= 1)

StringGrid1->Cells[n+1][i] = g;

if (StringGrid1->Cells[n][i-1]!= 1)

StringGrid1->Cells[n][i-1] = g;

if (StringGrid1->Cells[n][i+1]!= 1)

StringGrid1->Cells[n][i+1] = g;

}

 

for(i=0; i < StrToInt(Edit1->Text); i++)

for(n=0; n < StrToInt(Edit1->Text); n++)

if (StringGrid1->Cells[n][i] == g)

p = p+1;

 

 

r = random (p)+1;

 

for(i=0; i < StrToInt(Edit1->Text); i++)

for(n=0; n < StrToInt(Edit1->Text); n++)

{

if (StringGrid1->Cells[n][i] == g)

r1++;

if (r1==r)

{StringGrid1->Cells[n][i] = 1;

break;

}

}

 

for(i=0; i < StrToInt(Edit1->Text); i++)

StringGrid1->Cells[0][i] = 0;

 

 

for(i=0; i < StrToInt(Edit1->Text); i++)

if(StringGrid1->Cells[0][i] > 1)

t = -1;

for(i=0; i < StrToInt(Edit1->Text); i++)

if(StringGrid1->Cells[i][0] > 1)

t = -1;

for(i=0; i < StrToInt(Edit1->Text); i++)

if(StringGrid1->Cells[i][StrToInt(Edit1->Text)] > 1)

t = -1;

for(i=0; i < StrToInt(Edit1->Text); i++)

if(StringGrid1->Cells[StrToInt(Edit1->Text)][i] > 1)

t = -1;

 

 

for(i=1; i < StrToInt(Edit1->Text)-1; i++)

for(n=1; n < StrToInt(Edit1->Text)-1; n++)



if (StringGrid1->Cells[n][i] == 1)

{

if (StringGrid1->Cells[n-1][i]!= 1)

StringGrid1->Cells[n-1][i] = g;

if (StringGrid1->Cells[n+1][i]!= 1)

StringGrid1->Cells[n+1][i] = g;

if (StringGrid1->Cells[n][i-1]!= 1)

StringGrid1->Cells[n][i-1] = g;

if (StringGrid1->Cells[n][i+1]!= 1)

StringGrid1->Cells[n][i+1] = g;

}

 

g++;

t--;

Edit2->Text = IntToStr(StrToInt(Edit2->Text) + 1);

}

 

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

StringGrid1->ColCount = StrToInt(Edit1->Text);

StringGrid1->RowCount = StrToInt(Edit1->Text);

StringGrid1->DefaultColWidth = 600/StrToInt(Edit1->Text) - sqrt(sqrt(sqrt(sqrt(StrToInt(Edit1->Text)))));

StringGrid1->DefaultRowHeight = 600/StrToInt(Edit1->Text)- sqrt(sqrt(sqrt(sqrt(StrToInt(Edit1->Text)))));

 

for(int i=0; i < StrToInt(Edit1->Text); i++)

for(int n=0; n < StrToInt(Edit1->Text); n++)

StringGrid1->Cells[n][i] = 0;

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,

int ARow, TRect &Rect, TGridDrawState State)

{

 

if(P!=0)

{

if(StrToFloat(StringGrid1->Cells[ACol][ARow]) == 1)

{

StringGrid1->Canvas->Brush->Color = clBlack;

StringGrid1->Canvas->FillRect(Rect);

}

else

if(StrToFloat(StringGrid1->Cells[ACol][ARow])!= 0)

{

StringGrid1->Canvas->Brush->Color = clRed;

StringGrid1->Canvas->FillRect(Rect);

}

else

{

StringGrid1->Canvas->Brush->Color = clWhite;

StringGrid1->Canvas->FillRect(Rect);

}

 

}

}

//---------------------------------------------------------------------------

 

 


Дата добавления: 2015-10-21; просмотров: 16 | Нарушение авторских прав




<== предыдущая лекция | следующая лекция ==>
Высшие корковые функции человека 47 страница | Мистеру Дэвиду, который напомнил мне, какое удовольствие — писать, который помогал мне и верил в меня 1 страница

mybiblioteka.su - 2015-2024 год. (0.013 сек.)