поговорим о ЛОНИИС

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » поговорим о ЛОНИИС » КОММЕНТАРИИ к ПРОГРАММАМ » Программа "Анализ "Скатерти Улама" блоками


Программа "Анализ "Скатерти Улама" блоками

Сообщений 1 страница 3 из 3

1

Исходник программы
https://yadi.sk/d/D4zAXfuz3QVHS8

http://dreams.niits.ru/index.php?topic=11-13

Отредактировано ABC (2017-12-10 21:46:46)

0

2

Описание программы "Анализ "Скатерти Улама" блоками"

ПРОГРАММА «Анализ «Скатерти Улама» блоками»

1. Скатерть Улама
Математический объект «Скатерть Улама».
Описание, например, в:
http://www.school12-egorievsk.narod.ru/ … chisla.htm

http://letopis.kulichki.net/2010/04-2010/nom1856.htm

2. Определение блоков
2.1 Вертикальные и горизонтальные блоки
Программа «Анализ «Скатерти Улама» блоками» анализирует «Скатерть Улама» на основе подсчёта блоков разных видов.
Блоками названы непрерывные последовательности единиц или нулей.
В квадратной матрице максимальная длина блока равна числу строк (столбцов).

Поясним на примерах вертикальные и горизонтальные блоки.

Горизонтальный блок из четырех 1:
Пять блоков из пяти 0 и один блок из двух 0.
000000
111100
000000
000000
000000
000000

Вертикальный блок из пяти 1.
Пять блоков из пяти 0 и один блок и из одного 0.

000001
000001
000001
000001
000001
000000

2.2.Диагональные блоки

Определение главной и побочной диагонали матрицы:
http://www.fxyz.ru/формулы_по_математике/линейная_алгебра/матрицы/

В квадратных матрицах, главная диагональ – диагональная линия элементов, проходящая с северо-запада на юго-восток.
Диагональ с юго-запада на северо-восток -  побочная диагональ.
Кроме главной и побочной диагонали имеются малые диагонали параллельные главной или побочной диагоналям (мое определение).
Ниже показана матрица, в которой кроме побочной диагонали из 1 имеются  блоки на малых диагоналях параллельных побочной диагонали:
- малая диагональ c блоком из трех 1;
- три малые диагонали с блоками из одного 0.
- две малые диагонали с блоками из двух 0.
- две малые диагонали с блоками из трех 0;
- одна  малая  диагональ с блоком из четырех 0;
- две  малые диагонали с блоками из пяти  0
000001
001010
010100
101000
010000
100000

Проверка.
Общее число элементов по числу различных диагоналей:
1х6 +1х3 + 3х1 + 2х2 +2х3 + 1х4  +2х5 =
6 +3+ 3+4+6+4+10 = 36;
Подобная проверка предусмотрена и в программе «Анализ «Скатерти Улама» блоками».

Ниже матрица с главной диагональю из 1 и блока из трех 1.
Блоки из 0 аналогично примеру выше.

101000
010100
001010
000100
000010
000001

В программе закомментировано построение случайной матрицы. Полезно для анализа расчётов по программе провести расчёты со случайной матрицей.

3. Критерий упорядочения матриц
Для сравнения различных матриц предлагается «показатель длины блоков» по величине и количеству блоков.
Вычисление «Показателя длины блоков» проводится в три этапа:
1) Длины блоков уменьшаются на 1.
Вычисляется сумма произведений полученной величины  и числа блоков.
2) Вычисляется целая часть из произведения корня  квадратного величины по п.1 и 10000.
3) Вычисляется целая часть из частного от деления величины по п.2 и числа строк. Матрица квадратная.
For i1:=1 to mm do
        aa:= aa  + (i1-1)*(i1-1)* uu4[i1];

           aaa1:=      round (Sqrt(aa)*10000);

        aaa:= round (aaa1/mm);
Данный показатель одинаков для случайных матриц разной размерности. При внесении в матрицу горизонтальных или вертикальных блоков показатель меняет свое значение.

4. Структура программы «Анализ «Скатерти Улама» блоками»

Программа состоит из двух частей:

Часть 1.
Построение на квадратной матрице с нечетными числами строк и столбцов «Скатерти Улама»

Часть 2
Вычисление числа блоков разных видов.

Вначале введем множества малых диагоналей параллельных побочной диагонали: А1 и А2 и  - главной диагонали Б1 и Б2.
Пояснение:

    *
   *
А2*А1
*
*

*
*
Б1*Б2А2
   *

В результате выполнения программы определяются массивы:

uu2 – число блоков 1 по горизонтали
uu3 – число блоков 0 по горизонтали
uu4 – число блоков 1 по вертикали
uu5 – число блоков 0 по вертикали
uu6 – число блоков 1: побочная горизонталь + А1
uu7 – число блоков 1: А2
uu8 – число блоков 1: побочная горизонталь + А1 +А2
uu9 – число блоков 1: главная горизонталь + Б1
uu10 – число блоков 1: Б2
uu11 – число блоков 1: главная горизонталь + Б1 +Б2
uu12 – число блоков 0: главная горизонталь + Б1
uu13 – число блоков 0: Б2
uu14 – число блоков 0: главная горизонталь + Б1 +Б2

5. Вывод по программы «Анализ «Скатерти Улама» блоками»

Таблица 1: «Скатерть Улама».
Простые числа выделены *.
Таблица 3: На «Скатерти Улама» показаны только простые числа.
Таблица 2. Вывод массивов uu2 – uu14.

Каждый столбец:
Имя массива, вид блоков 0 или 1, суммарное число единиц или 0 в блоках, число блоков по нарастанию длины блока, начиная с единичной длины блока.

Кроме того, выведены показатели длины блоков.

Остальные величины для настройки.

6. Результаты

1. Число блоков из 1 (простые числа) длиной более 1 по горизонтали и вертикали весьма мало.
2. Блоки из 0 (составные числа) по горизонтали и вертикали имеют следующую особенность: число блоков нечетной длиной значительно больше числа блоков с четной длиной.
3. В меньшей мере эта закономерность справедлива и для диагональных блоков из 0.

0

3

Программа создания "Скатерти Улама" в графическом формате

А. Жуков «Изучаем DELPHI»

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

   function good(Numb:integer):boolean;
     var
     i:integer;
     begin
     good:= true;   
    for i:=2 to Trunc(Sqrt(Numb)) do
   if (Numb mod i) =0  then
     begin
      good := false;
      exit;
      end; end;

procedure TForm1.Button1Click(Sender: TObject);
   label
up;
var
i,x,y,n,nx,ny,i1:  integer;
     begin

      n:=2;
      x:=Image1.Width div 2+1;
       y:=x-1;
       with Image1.Canvas do
       begin Brush.Color:=clYellow;
       FillRect(ClientRect);
       Pixels[x,y]:=clBlack;
           ny:=1;

       up:  for i:=1 to ny do
         begin
         dec(y); //1
         inc(n);
         if good(n) then Pixels[x,y]:=clBlack;
            end;
              nx:=ny+1;
         for i:=1 to nx do
                 begin
             dec (x); //2
               inc(n);
         if good(n) then  Pixels[x,y]:=clBlack;
           end;
             ny:=nx;
           for i:=1 to ny do
           begin
             inc(y);  //3
         inc(n);
             if good(n) then  Pixels[x,y]:=clBlack;
             end;
             nx:=ny+1;
             for i:=1 to nx do
             begin
               inc(x);  //4
         inc(n);
          if good(n) then  Pixels[x,y]:=clBlack;
          end;
             if n>=Image1.Width*Image1.Height
             then exit;
             ny:=nx;
            { Application.ProcessMessages; }
             goto up;
                   end;
                  end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Close
end;

end.

Отредактировано ABC (2011-09-09 11:22:03)

0


Вы здесь » поговорим о ЛОНИИС » КОММЕНТАРИИ к ПРОГРАММАМ » Программа "Анализ "Скатерти Улама" блоками