Deutsch

Мои программы

3112  1 2 3 4 все
alek4 старожил31.01.25 14:13
31.01.25 14:13 
Ветка закрыта 15.04.25 13:15 (gendy)

Пишу, как хобби, программы,на разные темы.

Дельфи 7.

Поделюсь.


#1 
alek4 старожил31.01.25 14:46
NEW 31.01.25 14:46 
в ответ alek4 31.01.25 14:13

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


|||||||||||||||||||||||||||||||||||||||||||||||||||||

Исходник программы

https://yadi.sk/d/D4zAXfuz3QVHS8

|||||||||||||||||||||||||||||||||||||||||||||||

Скачать файл doc

https://disk.yandex.ru/i/jbTKrr5AjHeMiw

||||||||||||||||||||||||||||||||||||||||||||||||||

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

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

1. Скатерть Улама

Математический объект «Скатерть Улама».

Описание, например, в:

http://www.school12-egorievsk.narod.ru/studies/informat/yr...

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.

||||||||||||||||||||||||||||||

||||||||||||||||||||||||||||||||||||||||||||||||||||||||

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

А. Жуков «Изучаем 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) =0then

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) thenPixels[x,y]:=clBlack;

end;

ny:=nx;

for i:=1 to ny do

begin

inc(y);//3

inc(n);

if good(n) thenPixels[x,y]:=clBlack;

end;

nx:=ny+1;

for i:=1 to nx do

begin

inc(x);//4

inc(n);

if good(n) thenPixels[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.

||||||||||||||||||||||||||||||||||||||||||||

#2 
AlexNek патриот31.01.25 17:50
AlexNek
NEW 31.01.25 17:50 
в ответ alek4 31.01.25 14:46

пост слишком длинный...


Математический объект «Скатерть Улама»

Может в институте кому-то и интересно, но зачем еще енто надо не могу понять смущ Да и дельфи остался в узко определенных кругах.


goto up;

Этой строки было достаточно, чтобы больше никуда не смотреть. спок


Займитесь чем-то более полезным и размещайте код на предназначенных для этого ресурсах типа гитхаб

#3 
alek4 старожил31.01.25 18:25
NEW 31.01.25 18:25 
в ответ AlexNek 31.01.25 17:50

Цель поста.

С компом даже не слишком одаренные могут прогуляться на полях одарённых

Зачем на СИ,если быстрей на Д?


#4 
gendy Dinosaur31.01.25 18:51
gendy
NEW 31.01.25 18:51 
в ответ alek4 31.01.25 14:46

когда я писал проектарбайт, я выбрал программу в bcb5 кажется или 6, уже не помню.

Вот я там точно так же распечатал помимо кода все формы, чтобы записка показалась потолще и меньше самому писать.


Но здесь это зачем? Эти формы создаются через гуй и никому даже в голову не придёт копировать отсюда в файлы и делать проект.


В крайнем случае откройте для себя Git . Ссылки на репрозиторий хватило бы с головой, если кто-то захочет посмотреть как писали 23 года назад

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#5 
AlexNek патриот31.01.25 20:40
AlexNek
NEW 31.01.25 20:40 
в ответ alek4 31.01.25 18:25
Цель поста.С компом даже не слишком одаренные могут прогуляться на полях одарённых

Возможно, эта новость могла показаться интересной на форуме домохозяек, но никак не тут.

Понятно, что интересно и хочется с кем-то поделиться. Но сейчас писать код вообще не проблема. Тем более такой https://regal-wisp-d7e1af.netlify.app/ вполне возможно, что что-то и неправильно, но ведь ни одной строчки кода не написано лично.


Зачем на СИ,если быстрей на Д?

Выбор языка в данном случае лежит на исполнителе. Просто Дельфи был хорош в 90. Сейчас ситуация несколько другая, как и с Си.

#6 
7495 коренной житель31.01.25 21:35
7495
NEW 31.01.25 21:35 
в ответ alek4 31.01.25 14:13

Пишу, как хобби, программы,на разные темы.

Дельфи 7.

Поделюсь.


А Вы по образованию математик? Сейчас надо писать не на Дельфи и Бейсике, а на Яваскрипт и Солидити,


тогда можно в интернетах публиковать, ХТМЛ и Яваскрипт у пользователя сам работает, без компиляции.


Мои темы, мне надо больше числовых последовательностей: https://foren.germany.ru/programmer/f/40788253.html

Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#7 
alek4 старожил02.02.25 09:36
NEW 02.02.25 09:36 
в ответ alek4 31.01.25 14:13

ПРОГРАММА «2-Арифметическая»

ОГЛАВЛЕНИЕ

1. Сведения об арифметической прогрессии

2 Цель программы

3. Исходные данные

4. Алгоритм

5.Вывод

6. Итоги

7. Скачать программу

Приложение 1

Распечатка программы «2-Арифметическая»


1. Сведения об арифметической прогрессии

Википедия

Арифметическая прогрессия

Материал из Википедии — свободной энциклопедии

Арифмети́ческая прогре́ссия - последовательность чисел (членов прогрессии), в которой каждое число, начиная со второго, получается из предыдущего добавлением к нему постоянного числа(шага, или разности прогрессии).

2. Цель программы

Программа «2—Арифметическая» есть продолжение исследований про программе «1-Ариметическая». Цель программы изучить закономерности серий простых чисел при разных комбинациях первого числа прогрессии и шага прогрессии.

3. Исходные данные.

Пример

Const

w1=199;//нижняя граница первых чисел арифметической прогресии

w=1000; //верхняя граница первых чисел арифметической прогресии

ma =30;// нижняя граница шагов арифметической прогрессии

m=600;//верхняяграница шагов арифметической прогрессии

n=300;// число членов арифметической прогрессии

4. Алгоритм

4.1.Общий цикл по переменой r.

На каждой итерации первое число равно r.

Генерируются арифметическиепрогрессии с шагами от 1 до m.

4.2. На каждой итерации цикла r формируется массивы

s:array [1..m,1..n] of cardinal;//таблица арифметических прогрессий,

//каждая из n элементов, при m величин шагов, вычисляется

//последовательнодля 1-w первых чисел

a: array [1..w, 1..m] ofcardinal;//длины маскимальных серий

//простых чисел при разных сочетанияхпервых чисел и величины шага

c: array [1..w,1..m] ofcardinal;

// номер шага началамаксимальных длин серий простых чисел

h: array [1..50] ofcardinal;

//распределениедлинсерий простых чисел

4.3. По матрице ф находится m1 – дли на максимальной серии протычх чисел.

4.4.По числу m1 и матрицам aи c находятся матрицы

p:array [1..10,1..100] ofcardinal;//

//p[1,t] первые числа в максимальной серии

//p[2,t]шагв максимальной серии

//p[3,t]номер шагав максимальной серии

//p[4,t]длинамаксимальной серии

// t- порядковый номер максимальной серии.

//Равен номеру окантовки.

u: array [1..50] of cardinal;

//распределениедлин максимальных серий простыхчисел

h: array [1..50] ofcardinal;

5. Вывод

Выводятся все массивы введенные выше.

Массивы c и a выводятся в одной таблице №1

Пары чисел: ca

6. Итоги

Найдены три сериипо 10 простых.

Первое число – шаг – номер шага – длина серии простых

199210110

21042012610

799420125..10

7. Скачать программу

zip

https://disk.yandex.ru/d/gCPBHHR82Djq8Q

Приложение 1

Распечатка программы2-Арифметическая

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button5: TButton;

Label1: TLabel;

StringGrid2: TStringGrid;

StringGrid3: TStringGrid;

Edit1: TEdit;

Label4: TLabel;

StringGrid1: TStringGrid;

StringGrid4: TStringGrid;

Edit2: TEdit;

procedure Button1Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

const

{ w1=4;//нижняя граница начальных чисел арифметической прогресии

w=40 ;//верхняя граница начальных чисел арифметической прогресии

ma =1;// нижняя граница шагов арифметической прогрессии

m=12;//верхняяграница шагов арифметической прогрессии

n=25;// число членов арифметической прогрессии }

w1=1;//нижняя граница первых чисел арифметической прогресии

w=1500; //верхняя граница первых чисел арифметической прогресии

ma =300;// нижняя граница шагов арифметической прогрессии

m=300;//верхняяграница шагов арифметической прогрессии

n=1000;// число членов арифметической прогрессии

var

Tick: Cardinal;

s:array [1..m,1..n] of cardinal;//таблица арифметических прогрессий,

//каждая из n элементов, при m величин шагов, вычисляется

//последовательнодля 1-w первых чисел

a: array [1..w, 1..m] ofcardinal;//длины маскимальных серий

//простых чисел при разных сочетанияхпервых чисел и величины шага

c: array [1..w,1..m] ofcardinal;

// номер шага началамаксимальных длин серий простых чисел

p:array [1..10,1..100] ofcardinal;//

//p[1,t] первые числа в максимальной серии

//p[2,t]шагв максимальной серии

//p[3,t]номер шагав максимальной серии

//p[4,t]длинамаксимальной серии

// t- порядковый номер максимальной серии.

//Равен номеру окантовки.

u: array [1..50] of cardinal;

//распределениедлин максимальных серий простыхчисел

h: array [1..50] ofcardinal;

//расрпределениедлинсерий простых чисел

i,j,q ,z,r,i1,j1,tt,t,k,x,e ,aa,v,d,y:cardinal;

n1, n2, n3,n4: cardinal;//

m1,m2,m3,m4,m5: cardinal;//

f1,f2,f3,f4,f5:cardinal;//

// Функция нахождения простых чисел

// По книгеЖуков "Программируем в Delphi"

function good(Numb:integer):boolean;

var

i:integer;

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

good:= true;

for i:=2 to Trunc(Sqrt(Numb)) do

if (Numb mod i) =0then

begin

good := false;

exit;

end; end;

procedure TForm1.Button1Click(Sender: TObject);

// окантовка

begin

for q:=1 to m// нумерация по вертикалив табл №1 ,

do if good (q) then StringGrid2.Cells[0,q]:='*'+IntToStr(q)

elseStringGrid2.Cells[0,q]:=IntToStr(q);

for q:=1 to n //нумерация по горизонтали в табл №1 ,

doif good (q) thenStringGrid2.Cells[q,0]:='*'+IntToStr(q)

elseStringGrid2.Cells[q,0]:=IntToStr(q);

for q:= 1 to w// нумерация по вертикалив табл №1 ,

do if good (q) then StringGrid1.Cells[0,q]:='*'+IntToStr(q)

elseStringGrid1.Cells[0,q]:=IntToStr(q);

for q:=1 to m //нумерация по горизонтали в табл №1 ,

doif good (q) thenStringGrid1.Cells[q,0]:='*'+IntToStr(q)

elseStringGrid1.Cells[q,0]:=IntToStr(q);

for q:= 1 to 10// нумерация по вертикалив табл №1 ,

do if good (q) then StringGrid4.Cells[0,q]:='*'+IntToStr(q)

elseStringGrid4.Cells[0,q]:=IntToStr(q);

for q:=1 to 100//нумерация по горизонтали в табл №1 ,

doif good (q) thenStringGrid4.Cells[q,0]:='*'+IntToStr(q)

elseStringGrid4.Cells[q,0]:=IntToStr(q);

//////////////////

aa:=((2*3)*(5*7)) ;

for r:= w1 to w do

begin

n1:=0; n2:=0;

for i:=ma to m do

for j:=1 to n do

s[i,j] :=0;

for i:=mato mdo

s[i,1] :=r;

for I:=ma to m do

for J:=2 to n do

s[i,J] :=s[i,J-1] +i;

//отыскание максимальныхсерийпростых чисел

//вычисление матрицыс[i,j]

for I:=ma to m do begin

n2:=0;n1:=0;

for J:=1 to ndobegin

if good (s[i,j]) thenbegin

x:=1;n2:=n2+1 ;d:=d+1;END;

if good (s[i,j])=FALSE then

begin

h[n2] := h[n2] +1;

v:= v+1;

end;

if (good (s[i,j])=FALSE )AND (N2>N1)

then begin

n1:= n2; n2:=0; a[r,i] :=n1;

n4:=j;c[r,i] := J-n1;

end;

if (((j=n) and(n2>0))and good (s[i,j])) thenh[n2] := h[n2] +1;

if j=n then

if ((good (s[i,j])AND (N2>N1)))

then begin

n1:= n2;h[n1] := h[n1] +1; n2:=0; a[r,i] :=n1; n4:=j;

c[r,i] := J;

end;

if (good (s[i,j])=FALSE )then n2:=0;

end;

if x=0 then e:=e+1;

x:=0;

end;

end;

/////////распределение серий по длине

/////////////////////////////

//отыскание максимальной серии

for i:=w1 to w do

for j:=ma tom do

if a[i,j] >m1 then

begin m1:= a[i,j]; m2:=i; m3:= j;m4:=c[i,j];

end;

for i:=w1 to w do

for j:=ma tom do

if a[i,j]=m1 then

m5:= m5+1;

for i:=w1 to w do

for j:=ma tom do

if a[i,j] = m1 then begin

k:=k+1;p[1,k] :=i;p[2,k]:=j; p[3,k] := c[i,j]; p[4,k] := m1;

end;

u[50]:=0;

for i:=w1 to w dobegin

for j:=ma tom do

if a[i,j]>0 then

begin

t:=a[i,j];

u[t]:=u[t] +1;

end;

end;

for i:=1 to 50 do

if h>0 then

Z:=z+h*i;

for i:=1 to 50 do

if u>0 then

tt:=tt+u*i;

y:= v+d;

StringGrid2.Cells[0,0] := 's[..]';

StringGrid1.Cells[0,0] := 'a[]c[]';

StringGrid4.Cells[0,0] := '№ 4';

StringGrid4.Cells[0,1] := 'p[1,k]';

StringGrid4.Cells[0,2] := 'p[2,k]';

StringGrid4.Cells[0,3] := 'p[3,k]';

StringGrid4.Cells[0,4] := 'p[4,k]';

StringGrid4.Cells[0,7] := 'u[1..50]';

StringGrid4.Cells[0,8] := 'h[1..50]';

Form1.Caption:=IntToStr(GetTickCount-Tick);

for i:=1 to mdo

for j:=1 to n doif s[i,j]>0 then

if good (s[i,j]) then StringGrid2.Cells[j,i]:='*'+ ' '+ IntToStr(s[i,j])

else StringGrid2.Cells[j,i]:= IntToStr(s[i,j]);

Form1.Caption:=IntToStr(GetTickCount-Tick);

for i:=w1 to wdo

for j:=ma to m do

StringGrid1.Cells[j,i]:=

IntToStr( c[i,j])+''+ IntToStr( a[i,j]);

for i:=1 to 5do

for j:=1 to 100 do

if good (p[i,j]) then

StringGrid4.Cells[j,i]:='*'+IntToStr(p[i,j])

elseStringGrid4.Cells[j,i]:= IntToStr(p[i,j]);

for i1:=1 to 50 do

StringGrid4.Cells[i1,7]:= IntToStr(u[i1]);

for i:=1 to 50do

StringGrid4.Cells[i,8]:= IntToStr(h);

Edit1.Text :='n1=' +''+ IntToStr(n1)+''+

'n2=' +''+ IntToStr(n2)

+''+ 'n3=' +''+ IntToStr(n3)

+''+ 'n4=' +''+ IntToStr(n4)

+''+ 'm1=' +''+ IntToStr(m1)

+''+ 'm2=' +''+ IntToStr(m2)

+''+ 'm3=' +''+ IntToStr(m3)

+''+ 'm4=' +''+ IntToStr(m4)

+''+ 'm5=' +''+ IntToStr(m5)

+''+ 'f1=' +''+ IntToStr(f1)

+''+ 'f2=' +''+ IntToStr(f2)

+''+ 'h[1]=' +''+ IntToStr(h[1])

+'' +' h[2] '+''+ IntToStr(h[2])

+'' +'v='+ ''+ IntToStr(v)

+''+ 'd=' +''+ IntToStr(d)

+''+ 'y=' +''+ IntToStr(y) ;

Edit2.Text :=IntToStr(u[50])

+''+'z=' +''+ IntToStr(z)

+''+ ' tt=' +''+ IntToStr(tt)

+''+ ' e=' +''+ IntToStr(e)

+''+ ' x=' +''+ IntToStr(x)

+''+ ' aa=' +''+ IntToStr(aa);

Form1.Caption:=IntToStr(GetTickCount-Tick);

end;

////////////////////////////////////////////////////////////////

procedure TForm1.Button5Click(Sender: TObject);

begin

close

end;

initialization

randomize;

end.

#8 
AlexNek патриот02.02.25 12:15
AlexNek
NEW 02.02.25 12:15 
в ответ alek4 02.02.25 09:36

Странно, когда человек не понимает с первого раза. Банить что ли нужно обязательно?

Не надо постить здесь простыни программ и детский сад. Сделайте себе блог и играйтесь там.


Кстати, программы выводятся здесь с использованием тэга 'pre' в ручном режиме? Но лучше прилагать файл если больше десятка строк.

#9 
alek4 старожил02.02.25 14:11
NEW 02.02.25 14:11 
в ответ AlexNek 02.02.25 12:15
Но лучше прилагать файл если больше десятка строк.


Я прилагаю ссылки на папку программы и doc.

Текст для комфорта.


Что мне интересно, на то программа.


#10 
AlexNek патриот02.02.25 14:28
AlexNek
NEW 02.02.25 14:28 
в ответ alek4 02.02.25 14:11
Текст для комфорта.

не для комфорта, а для раздражения


Что мне интересно

Ну так и делайте то, что вам интересно, зачем это здесь?

Неужели непонятно, что это уровень детского сада.


Я прилагаю ссылки на папку программы и doc.

Неужели серьезно думаете, что кто то это будет смотреть?

#11 
alek4 старожил03.02.25 10:12
NEW 03.02.25 10:12 
в ответ alek4 31.01.25 14:13

Логические многочлены

Скачать текст

https://disk.yandex.ru/i/60DI4OG5bXSvEw

||||||||||||||||||||||||||||||||||||||||||||||||||

ПРОГРАММА

1-многочлен

Генерация случайногологического многочлена

1.Общее описание

2.Условные обозначения

3.Упрощения

4.Структура многочлена

5.Формированиеисходного многочлена

6.Формирование концовки многочлена

7.Ввод – вывод

1.Общее описание

Программа предназначена для формирования случайных логических многочленов.

Случайным образом выбирается порядок элементов логического многочлена:

логические операции (связки), скобки, логические операции (связки), переменные.

Связки: отрицание, конъюкция, дизъюнкция,импликация и эквиаленция

Скобки: левая иправая

Принято: 11 переменных.

2.Условные обозначения

Для упрощения программы введены условные обозначения.

Связки:

Отрицание: знак минус«-»

Связки:

Конъюнкция:1

Дизъюнкция: 2

Импликация:3

Эквиваленция: 4

Скобки:

Левая: 6

Правая: 7

Переменные

Числа в диапазоне:10 -11

В формуле(A связка B): A - первая переменная,B – вторая переменная

3.Упрощения

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

Отрицаниеотрицание,отрицаниеотрицаниеотрицание………………………………………..

Переменная связка переменная связкапеременная ……….

4. Структура многочлена

4.1 Вначале формируется исходный многочлен длиной y.

Левые скобки и переменные, перед которыми отрицания, считаются за один элемент многочлена.

Если исходный многочленлогически не завершен, добавляется концовка.

4.2.Построение многочлена начинается с левой скобки или переменной.

4.3. При формировании многочлена вычисляются:

k - Число левых скобокp – число правых скобок

При формировании многочлена проверяется условие: k>p

В сформированном многочлене k=p

4.4 Формирование исходного многочлена продолжается, пока с учётом концовки можно создать логически непротиворечивый многочлен.

То есть исходные многочлены имеют длину в диапазоне: 3 …y

5.Формированиеисходного многочлена

Левая скобка: левая скобка илипервая переменная

Связка: левая скобка, вторая переменная

Первая переменная: связка

Связка: левая скобка или вторая переменная

Правая скобка: связка или правая скобка

Вторая переменная: правая скобка

6.Формирование концовки многочлена

Левая скобка – правыескобки

Правая скобка – правые скобки

Вторая переменная – правые скобки

Связка – переменная – правые скобки

Первая переменная – связка – вторая переменная – правая скобка

7.Ввод и вывод

Входные данные:

y=25;//предельная длина исходного многочлена

a1 = 5;// для вычисления вероятности

b1 = 5 ; // для вычисления вероятности

b2=5; // для вычисления вероятности

d1=5;// для вычисления вероятности

w=5; // для вычисления вероятности

w1=5;// для вычисления вероятности

w2=5;// для вычисления вероятности

w3=5;// для вычисления вероятности

Вывод:

Первая строка: многочлен

Вторая строка: номер операции, в которой определен элементмногочлена

Третья строка: текущая величина k

Четвертая строка: текущая величина p

Пятая строка: метка T (0 и 1). Служит для определения переменой, первая или вторая.

Скачать

https://yadi.sk/d/TLyaE5TMSo9dFg

///////////////
//////////////////////////////////////

ПРОГРАММА

2- многочлен

Генерация случайногологического многочлена заданной длины

Программа 2- многочлен является развитием программы 1- многочлен.

Отыскиваются путем перебора исходный многочлен длиной y.

Введен циклrepeat …..until.

Числоитераций в этом цикле ограничено числом f.

Которое задается.

Текущее число итераций в цикле – число v.

Если найден исходный многочлен длиной y включается концовка.

Вывод многочлена.

Если за число итераций fискомый многочлен не найден, выводится текущий результат.

Скачать обновление 10 01 2020 h

Программа: 2-2 многочлен

https://yadi.sk/d/SSfiUDsWgz3W9Q

////////////////////////////////////////////

/////////////////////////////////////////////////////

ПРОГРАММА

Вычисление логического многочлена

]1.О программе

2.Исходные данные

3.Алгоритм

4.Данные для отладки

5.Итог

6.Вывод

7.Скачивание

1.О программе

Программа «Вычисление логического многочлена» предназначено для вычисления логического многочлена.

Программа на Дельфи7.

Вычисляется многочлен, генерируемый программой «Генерация случайногологического многочлена».

Цель программы.

Оценить корректность программ:

«Генерация случайногологического многочлена» и«Вычисление логического многочлена».

То есть этап исследования.

]2.Исходные данные[/color]

Исходные данные для вычисления логического многочлена те же, что в программе

«Генерация случайногологического многочлена».

3.Алгоритм

Переменным случайно присваиваются величины 1 и 0.

Затем последовательно осуществляются итерации.

Итерация 1.

Последовательность:

Левая скобка – переменная – правая скобка

Заменяется на– переменная.

Если такой последовательности в многочлене нет, многочлен не меняется.

Итерация 2

Последовательность

Переменная – связка – переменная

Вычисляется: 0 или 1.

Если такой последовательности в многочлене нет, многочлен не меняется.

Последовательность:

переменная 1- связка 1 –переменная 2 – связка 2 – переменная 4

Вычисляется в такой последовательности:

переменная 1- связка 1(переменная 2 – связка 2 – переменная 4)

Редко получается фрагмент многочлена, не доступный сокращению.

4.Данные для отладки

Матрица 1

Первые 5 строк – программа «Генерация случайногологического многочлена».

Строка 6

Число левых скобок после каждой итерации.

rr:array[1..2*y] of integer ;//

Строка 7

Число правых скобок после каждой итерации.

dd:array[1..2*y] of integer ;//

Строка 8

Величины переменных

za:array[1..11] of integer ;//

Строка 9

Позиция в многочлене при очередной итерации 1

Строка 9

xa:array[1..50] of integer ;//

Строка 10

Позиция в многочлене при очередной итерации 2

fa:array[1..300] of integer ;//

строка 11

Переменная aa

1 итерация 1, 0 итерация 0

ga:array[1..300] of integer ;//

Со строки 14 последовательность преобразований исходного многочлена

m:array[1..(2*y),1..300]of Int64;//

Матрица 4

Для отладки

v1:array[1..(2*y),1..300]of Int64;//

5.Итог

Edit 5

www – число итераций, цикл - ii

vvv – значение многочлена

]6.Вывод

Необходимо дальнейшее исследование для исключения

не корректных ситуаций.

]7.Скачивание

Скачать программу

Вычисление логического многочлена.

Исправлено10 01 2012

Программа 2-2 многочлен

]

https://yadi.sk/d/ZwuM25wo4mJyOw

//////////////////////////////

//////////////////////////////////////

ПРОГРАММА

3-1 многочлен

1.Общее описание

2.Алгоритм

3.Вывод

1.Общее описание

Программа, версия 3-1, предназначена для выявления соответствия в многочлене правых и левых скобок.

Кстати.

Недостаток Дельфи 7:

Скобкиbeginend не пронумерованы.

В сложной программе можно совершить ошибку.

]2.Алгоритм

Исходный многочлен генерируется по программе генерации случайного многочлена:

Версия 1-1.

Сканируется многочлен.

На каждом шаге определяется соответствие правой и левой скобки.

Находится фрагментыправая …… левая скобка.

Скобки нумеруются по номеру шага, на котором выявлено соответствие.

Нумерованные скобки исключаются из рассмотрения.

3.Вывод:

Первая строка в таблице № 2: исходный многочлен

Вторая строка: номера левых и правых.

Скачать: версия3-1

https://yadi.sk/d/vg8iwKUdKV5xdQ

/////////////////////////////////

/////////////////////////////////////

#12 
kukka местный житель03.02.25 14:09
kukka
NEW 03.02.25 14:09 
в ответ alek4 31.01.25 14:13

Что даёт эта программа конкретно, учитывая критичность.


#13 
alek4 старожил03.02.25 18:09
NEW 03.02.25 18:09 
в ответ kukka 03.02.25 14:09

А ИИ может решить задачу с логическим многочленом?

Это не туман квантовых вычислений.


#14 
gendy Dinosaur03.02.25 18:41
gendy
NEW 03.02.25 18:41 
в ответ alek4 03.02.25 18:09

Конечно! Вот пример программы на Delphi 7, которая случайным образом генерирует логические многочлены, используя логические операции (связки), скобки и переменные.


unit LogicalPolynomial;

interface

uses

SysUtils, Classes, Controls, Forms, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Memo1: TMemo;

procedure Button1Click(Sender: TObject);

private

function GenerateRandomPolynomial(Depth: Integer): string;

public

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

const

Operations: array[0..4] of string = ('~', '&', '|', '->', '<->');

Variables: array[0..3] of string = ('A', 'B', 'C', 'D');

procedure TForm1.Button1Click(Sender: TObject);

begin

Memo1.Lines.Clear;

Memo1.Lines.Add('Случайный логический многочлен:');

Memo1.Lines.Add(GenerateRandomPolynomial(3));

end;

function TForm1.GenerateRandomPolynomial(Depth: Integer): string;

var

OpIndex, VarIndex: Integer;

SubFormula1, SubFormula2: string;

begin

if Depth = 0 then

begin

VarIndex := Random(Length(Variables));

Result := Variables[VarIndex];

Exit;

end;

OpIndex := Random(Length(Operations));

if Operations[OpIndex] = '~' then

begin

Result := Operations[OpIndex] + '(' + GenerateRandomPolynomial(Depth - 1) + ')';

end

else

begin

SubFormula1 := GenerateRandomPolynomial(Depth - 1);

SubFormula2 := GenerateRandomPolynomial(Depth - 1);

Result := '(' + SubFormula1 + ' ' + Operations[OpIndex] + ' ' + SubFormula2 + ')';

end;

end;

end.


это сочинил copilot проверять не стану.


Кстати это была тема той самой проектарбайт и ваша программа смотрится на фоне той очень бледно. Хотя сейчас понимаю, что сделана она была абсолютно неграмотно. У меня не было ограничения по количеству переменных и итераций. Ну разве что размером окна ввода

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#15 
kukka местный житель03.02.25 20:00
kukka
NEW 03.02.25 20:00 
в ответ alek4 03.02.25 18:09

Вопрос поставлен неверно. Что было последним, так это верность предсказаний типа predict analyse. При данных обстоятельствах работала эффективнее другая схема, состоящая возможно из 7-8 параметров.

#16 
alek4 старожил03.02.25 20:49
NEW 03.02.25 20:49 
в ответ gendy 03.02.25 18:41

Дурной тон давать не законченную прогр, а какой-то фрагмент без комментариев.

Игнор.

#17 
alek4 старожил05.02.25 17:30
NEW 05.02.25 17:30 
в ответ alek4 31.01.25 14:13

ПРОГРАММА «Простые 1»

ОГЛАВЛЕНИЕ

1. Общее

2. Математика

3. Вывод

4.Анализ результатов

5. Примеры многочленов

6.Скачать программу «Простые 1

Приложение 1

Распечатка программы «Простые 1»

1. Общее

Не всем дано доказывать теоремы.

Но каждый может внести что-то новое в науку при помощи компьютера.

Моделируя ситуации в разных областях науки.

Это интересней, чем компьютерные игры, которые, по сути, пустая трата времени.

Но для моделирования всяких ситуаций надо владеть какими-то познаниями в программировании. Изучение современных языков трудностей не представляет.

Так для овладения языком Дельфи 7 достаточно месяца три.

2. Математика

Многие многочлены в определенном диапазоне x дают последовательность простых чисел.

Об этом, например, a*x*x +b*x +c

http://vlad-utenkov.narod.ru/personal2/informat/km/pr/pr.h...

Наиболее известный многочлен такого вида открыт Эйлером:

x*x - x + 41

В программе «Простые 1» собирается статистика по значениям квадратных многочленов

a*x*x +b*x +cв диапазоне от 1 до n.

Статистика собирается для двух многочленов:

a*i*i +b*i +cи a1*i*i+b1*i +c1

где i текущая переменная от 1 до n

a, b, c, a1, b1, c1 и nзадаются, как const, в тексте программы.

Такая же статистика и для ряда натуральных чисел.

3. Вывод

Массивы

s1:array [1..n] of integer;// значения многочлена № 1

s2:array [1..n] of integer;//1 -простое число, 0 - составное число

//многочлен № 1

s3:array [1..n] of integer;// значения многочлена № 2

s4:array [1..n] of integer;// 1 -простое число, 0 - составное число

//многочлен № 21

s5:array [1..n] of integer;// простые числа натурального ряда

s6:array [1..n] of integer;//составные числа натурального ряда

s7:array [1..n] of integer;//ряд простых чисел

s8:array [1..50] of integer;// сравнение максимальных

//цепей простых чисел в многочленах№1 и №2,

// Если длина цепей одинакова

const

n =10000;// число вычислений значений многочленови ряда натуральных чисел

// многочлен Эйлера

a=1;

b = -1;

c=41;

// двойник многочлена Эйлера

a1= 4;

b1= -258 ;

c1=4201;

Переменные

a= 1-первый коэффициент многочлена

b= -1 – второй коэффициент многочлена

c=41 – третий коэффициент многочлена

v=0- равна 0, если все величины многочлена больше нуля.

Если величина многочлена меньше или равна нулю,v равно текущему i(x)

z1=4149- число простых

z2=5851- число составных

w=40 – максимальная длина цепи из простых

m=0 -текущее величина цепи из простых

j1=40- величина i в конце максимальной цепи из простых

j2= 1- величина i в начале максимальной цепи из простых

s=19- максимальная длина цепи из составных

t=2- текущее величина цепи из составных

u1=9283- величина i в конце максимальной цепи из составных

u2= 9265 - величина i в начале максимальной цепи из простых

y1= 9999 – величина i для последнего простого из n величин многочлена

s2[n]= 0

d1= 262125,82080 – средняя величиназначений многочлена

h1= 0,4149 – отношение числа простых к n

Вывод для многочлена №2 и ряда натуральных чисел аналогичен

Рядпростых чисел

n4=5736397 – сумма простых

z7=1230- число простых

d4= 4663,73740- средняя величина простого

4.Анализ результатов

4.1. Последовательности от многочленов можно сравнивать по доле простых.

В натуральном ряду среди первых 10000 доля простых – 0,123

4.2. Подбором коэффициентов многочлена можно получить последовательность без простых.

Например, все члены последовательности делятся на 2 или 3.

4.3. Имеется многочлена с простыми и составными, но доля простых мала.

Например

h2= 0,047

a1=1;

b1= -3 ;

c1=17;

4.4.Многочлен Эйлера даёт последовательность в 40 простых чисел при изменении x от1 до 40.

Величины простых чисел возрастают, но их последовательность не совпадает с последовательностью простых натурального ряда.

Для удобства сравнения во множестве простых натурального рядапростые даны с 41, как и для многочлена Эйлера.

4.5. Найден двойник многочлена Эйлера.

a1= 4;

b1= -258 ;

c1=4201

При n=10000 доля простых для многочлена Эйлера- 0, 4149, для двойника – 0, 3802

Тоже цепочка из 40 простых, но при x = 13-52

Величины многочлена в этом диапазоне те же, что и для многочлена Эйлера, но порядок другой.

Результат сравнения множествоs8.

5. Примеры многочленов

// многочлен Эйлера

a=1;

b = -1;

c=41;

// двойник многочлена Эйлера

//a1= 4;

// b1= -258 ;

//c1=4201;

// двойник многочлена Эйлера

//a1= 1;

//b1= -3 ;

//c1=43;

// нетпростых, только чётные

//a1= 1;

// b1= -5 ;

//c1=40;

//мало простыхполовина чётных

//a1= 1;

// b1= -8 ;

//c1=41;

/// очень мало простых половина чётных

//a1= 2;

//b1= -3 ;

//c1=39;

// простых нет все значения делятся на три

//a1=3;

// b1= -3 ;

//c1=39;

// мало простыхh2= 0,047

//a1=1;

//b1= -3 ;

// c1=17;

6.Скачать программу «Простые 1

https://disk.yandex.ru/d/SVq4kurS6Eo6Ug

Приложение 1

Распечатка программы «Простые 1»

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button5: TButton;

Label1: TLabel;

StringGrid2: TStringGrid;

StringGrid3: TStringGrid;

Edit1: TEdit;

Label2: TLabel;

Label4: TLabel;

Label5: TLabel;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Label3: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

Label10: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

const

n =10000;// число вычмислений значений многочленов

// многочлен Эйлера

a=1;

b = -1;

c=41;

// двойник многочлена Эйлера

//a1= 4;

// b1= -258 ;

//c1=4201;

// двойник многочлена Эйлера

//a1= 1;

//b1= -3 ;

//c1=43;

// нетпростых, только чётные

//a1= 1;

// b1= -5 ;

//c1=40;

//мало простыхполовина чётных

//a1= 1;

// b1= -8 ;

//c1=41;

/// очень мало проствых половина чётных

//a1= 2;

//b1= -3 ;

//c1=39;

// простых нет все занчения делятся на три

//a1=3;

// b1= -3 ;

//c1=39;

// мало простыхh2= 0,047

//a1=1;

//b1= -3 ;

// c1=17;

var

Tick: Cardinal;

s1:array [1..n] of integer;// значения многочлена № 1

s2:array [1..n] of integer;//1 -простое число, 0 - составное число

//многочлен № 1

s3:array [1..n] of integer;// значения многочлена № 2

s4:array [1..n] of integer;// 1 -простое число, 0 - составное число

//многочлен № 21

s5:array [1..n] of integer;// простые числа натурального ряда

s6:array [1..n] of integer;//составные числа нарурального ряда

s7:array [1..n] of integer;//ряд простых чисел

s8:array [1..50] of integer;// сравнение максимальных

//цепей простых чисел в многочленах№1 и №2

r,w, w1, w2, k,f,g, h, ha,q,i,j : integer; //

j1,j2,j3,j4,j5,j6,j7,j8,i2,i1, i3,i4,i5,i6,i7,i8,i9,i0, l: integer; //

x1, x2, z,z1, z2, z3, z4,z5, z6,z7,v,v1,v2, e: integer;//

m, m1, m2, mm, a2,m3,m4,m5 ,vv: integer;//

y, y1, y2,y3, d, p, s, t, u1,u2 , p1, t1, u3,u4 : integer;//

h1,h2,h3: variant;//

n1, n2, n3,n4: cardinal;//

d1, d2, d3, d4: variant;//

// Функция нахождения простых чисел

// По книгеЖуков "Программируем в Delphi"

function good(Numb:integer):boolean;

var

i:integer;

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

good:= true;

for i:=2 to Trunc(Sqrt(Numb)) do

if (Numb mod i) =0then

begin

good := false;

exit;

end; end;

procedure TForm1.Button1Click(Sender: TObject);

// окантовка

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

for q:=1 to n //нумерация по горизонтали в табл №1 ,

do StringGrid2.Cells[q,0]:=IntToStr(q);

for q:=1 to n// нумерация по вертикалив табл №1 ,

doStringGrid2.Cells[0,q]:=IntToStr(q);

////////////////// a b c

for i:=1 to ndo

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

s1:=(a*i*i + b*i + c);

if s1<=0 then begin v:=i; break

end; end;

for j:= 1 to N dobegin

IF S1[j]> 0 then

if good (s1[j]) then

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

s2[j]:=1 ; z1:= z1+1; end

elsebegin s2[j]:=0;z2:= z2+1;

end;end;

// простые - многочлен № 1

for i:=1 to n dobegin

if s2=1 then m:=m+1 ;

if s2 =0 then begin

if m>w then

beginw:=m;j1:= i-1;end;

m:=0

end;

end;

//end;

j2 := j1-w+1;

//составные - многочлен № 1

for i:=1 to n dobegin

if ((s2[i-1] =1) and(s2 =0)) then y1 := i ;

if s2=0 thent:=t+1 ;

if s2 =1 then begin

if t>s then

begins:=t; u1:= i-1;end;

end;

if s2 =1 then t:=0;

end;

u2 := u1-s+1;

///////////a1 b1 c1

for i:=1 to ndo

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

s3:=(a1*i*i+ b1*i+ c1);

if s3<=0 then begin v1:=i; break

end; end;

for j:= 1 to N dobegin

Form1.Caption:=IntToStr(GetTickCount-Tick);

IF S3[j]> 0 then

if good (s3[j]) then

begin

s4[j]:=1 ; z3:= z3+1; end

elsebegin s4[j]:=0;z4:= z4+1;

end;end;

m1:=0;

for i:=1 to n dobegin//простые- многгочлен № 2

if s4=1 then m1:=m1+1 ;

if s4 =0 then begin

if m1>w1 then

beginw1:=m1;j3:= i-1;end;

m1:=0

end;

end;

j4 := j3-w1+1;

//составные- многочлен № 2

for i:=1 to n dobegin

if ((s4[i-1] =1) and(s4 =0)) then y2 := i ;

if s4=0 then t1:=t1+1 ;

if s4 =1 then begin

if t1>d then

begind:=t1;u3:= i-1;t1:=0; end;

if s2 =0 then t1 :=0;

end;

end;

u4 := u3-d+1;

/////////////////////////////натуральный ряд чисел

for j:= 1 to N dobegin

if good (j) then

begin

s5[j]:=j ; z5:= z5+1; end

elsebegin s6[j]:=j;z6:= z6+1;

end;end;

m2:=0;

// натуральный ряд составные числа

for i:=1 to n dobegin

if ((s5[i-1] >0) and(s6 >0)) then y3 := i ;

if s5=0 then m2:=m2+1 ;

if s5 >0 then begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

if m2>w2 then

beginw2:=m2;j5:= i-1;end;

m2:=0

end;

end;

j6 := j5-w2+1;

// ряд простых числел

for j:= 1 to N do

if good (j) then

begin

z7:= z7+1; s7[z7]:=j end;

// частное простых и всех чисел

h1 := z1/n;//многочлен № 1

h2 := z3/n;//многочлен № 2

h3:= z5/n; // ряд натуральных чисел

for i:= 1 to n do

n1 := n1 + s1;

for i:= 1 to n do

n2 := n2 + s3;

for i:= 1 to n do

begin

if s5>0 then n3 := n3+s5;

if s6>0 then n3 := n3+s6;

end;

for i:= 1 to n do

n4 := n4 + s7;

d1 :=n1/n;

d2 :=n2/n;

d3 :=n3/n;

d4 := n4/z7;

for i:= j2 to j1 do

for j:= j4to j3 do

ifs1 = s3[j] then s8 :=s1 ;

//////////////////////////

for i:=1 to ndobegin

StringGrid2.Cells[i,1]:=

IntToStr( s1);

StringGrid2.Cells[i,2]:=

IntToStr( s2);

StringGrid2.Cells[i,4]:=

IntToStr( s3);

StringGrid2.Cells[i,5]:=

IntToStr( s4);

ifs5=0 then

StringGrid2.Cells[i,7]:= '-';

ifs5>0 then

StringGrid2.Cells[i,7]:=IntToStr(i);

ifs5>0 then

StringGrid2.Cells[i,8]:= '-';

ifs5=0 then

StringGrid2.Cells[i,8]:=IntToStr( i);

IntToStr( s6);

StringGrid2.Cells[i,10]:=

IntToStr( s7);

// выоод простых чисел с 41

if s7>=41 then

StringGrid2.Cells[i-13,10]:=

IntToStr( s7);

end;

for i:=1 to 50do

if i<=w then

StringGrid2.Cells[i,12]:=

IntToStr( s8)

else StringGrid2.Cells[i,12]:='-';

Edit1.Text :=

'a='+' '+IntToStr(a)+''+

'b='+' '+IntToStr(b)+''+

'c='+''+IntToStr(c)+''+

'v='+''+IntToStr(v)+''+

'z1='+''+IntToStr(z1)+''+

'z2='+''+IntToStr(z2)+''+

'w='+''+IntToStr(w)+''+

'm='+''+IntToStr(m) +''+

'j1='+''+IntToStr(j1) +''+

'j2='+' '+IntToStr(j2) +''+

's='+''+IntToStr(s) +''+

't='+''+IntToStr(t)+''+

'u1='+''+IntToStr(u1) +''+

'u2='+' '+IntToStr(u2) +''+

'y1='+' '+IntToStr(y1) +''+

's2[n]='+' '+IntToStr(s2[n]) +''+

'd1='+' '+FormatFloat('0.00000',d1)+''+

'h1='+' '+FormatFloat('0.00000',h1);

Edit2.Text :=

'a1='+''+IntToStr(a1)+''+

'b1='+' '+IntToStr(b1)+''+

'c1='+''+IntToStr(c1)+''+

'v1='+''+IntToStr(v1)+''+

'z3='+''+IntToStr(z3)+''+

'z4='+''+IntToStr(z4)+''+

'w1='+''+IntToStr(w1)+''+

'm1='+''+IntToStr(m1) +''+

'j3='+''+IntToStr(j3) +''+

'j4='+' '+IntToStr(j4)+''+

'd='+''+IntToStr(d) +''+

't1='+''+IntToStr(t1)+''+

'u3='+''+IntToStr(u3) +''+

'u4='+' '+IntToStr(u4) +''+

'y2='+' '+IntToStr(y2) +''+

's4[n]='+' '+IntToStr(s4[n]) +''+

'd2='+' '+FormatFloat('0.00000',d2)+''+

'h2='+' '+ FormatFloat('0.00000',h2);

Edit3.Text :=

'v2='+''+IntToStr(v2)+''+

'z5='+''+IntToStr(z5)+''+

'z6='+''+IntToStr(z6)+''+

'w2='+''+IntToStr(w2)+''+

'm2='+''+IntToStr(m2) +''+

'j5='+''+IntToStr(j5) +''+

'j6='+''+IntToStr(j6) +''+

'y3='+''+IntToStr(y3) +''+

's5[n]='+' '+IntToStr(s5[n]) +''+

'd3='+' '+FormatFloat('0.00000',d3)+''+

'h3='+''+FormatFloat('0.00000',h3);

Edit4.Text :=

'n4='+''+IntToStr(n4) +''+

'z7='+''+IntToStr(z7) +''+

'd4='+' '+FormatFloat('0.00000',d4);

end;

////////////////////////////////////////////////////////////////

procedure TForm1.Button5Click(Sender: TObject);

begin

close

end;

initialization

randomize;

end.

///////////////////////////////////

#18 
AlexNek патриот05.02.25 19:39
AlexNek
NEW 05.02.25 19:39 
в ответ alek4 05.02.25 17:30, Последний раз изменено 05.02.25 19:39 (AlexNek)

обидно, когда человек не может научится работать с форумом. хммм

Пожалели бы тех, кто в первых раз пришел, столько скроллировать и смотреть неформатированный код. Ну хоть бы так сделали, если нравиться мусор выкладывать

BEGIN
     ShowTheMenu;
     GetUserChoice;
     IF (UserChoice = 'a') OR (UserChoice = 'b') THEN BEGIN
          GetNumberToConvert;
          DoTheConversion;
          DisplayTheAnswer;
          Wait;
     END;
END;
#19 
7495 коренной житель06.02.25 07:04
7495
NEW 06.02.25 07:04 
в ответ AlexNek 05.02.25 19:39
обидно, когда человек не может научится работать с форумом, если нравиться мусор выкладывать


дедульке 77 лет, врядли он понимает как работает интернеты и форум, это его внучок балуется! зло



Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#20 
7495 коренной житель06.02.25 07:19
7495
NEW 06.02.25 07:19 
в ответ AlexNek 05.02.25 19:39
обидно, когда человек не может научится работать с форумом.

Пожалели бы тех, кто в первых раз пришел, столько скроллировать и смотреть неформатированный код. Ну хоть бы так сделали, если нравиться мусор выкладывать


Если 77-летний дедулька начнёт форматировать тегами, тогда не только метрами скроллить придётся,


он тегами ГОРИЗОНТАЛЬНО страницу порвёт, пусть мусорит только в одной теме, всёравно старый.


Если бы он хотел, мог бы просто свои программы обсудить, зачем они нужны и как на них обогатиться,


Как можно сделать - распечатать в PDF и прикрепить к сообщению форума. Пример я прилепил внизу,


дальше, копируем из 1.PDF файла, обратно в текстовый файл, переименовываем в 1.HTML, обогащаемся.


Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#21 
7495 коренной житель06.02.25 07:25
7495
NEW 06.02.25 07:25 
в ответ 7495 06.02.25 07:19

+


переводим .PDF в .txt, потом в .html, потом можно с любого браузера стартовать: https://7495.strana.de/proverka.html


в первом окошке адрес блокчейна, в последующие окошки адреса кошельков, думаю всё и так интуитивно понятно!




Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#22 
gendy Dinosaur06.02.25 07:26
gendy
NEW 06.02.25 07:26 
в ответ 7495 06.02.25 07:04

откуда внучку знать что такое delphi7 ? Сейчас такое никто не использует.

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#23 
7495 коренной житель06.02.25 07:34
7495
NEW 06.02.25 07:34 
в ответ gendy 06.02.25 07:26
откуда внучку знать что такое delphi7 ? Сейчас такое никто не использует.


в посте #18, автор темы пишет "...Так для овладения языком Дельфи 7 достаточно месяца три."


а может всё бы иначе, пришел проведать деда, в шкафу пыльные учебники по дельфи и бейсику,


включил компьютер, там на старом пентиуме, тоже такие же листинги программ, копирует и постит.


Хотя всё может быть по другому, я же спросил, кто он по профессии, МАТЕМАТИК? ответа пока нет




Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#24 
AlexNek патриот06.02.25 18:23
AlexNek
NEW 06.02.25 18:23 
в ответ 7495 06.02.25 07:19
Если 77-летний дедулька

Как ни странно у меня тоже знакомый "оттуда" на дельфи пишет, только ему уже лет 80.

#25 
Murr патриот06.02.25 18:54
Murr
NEW 06.02.25 18:54 
в ответ gendy 06.02.25 07:26

иногда, однако, появляются вакансии с Дельфи.

Но вот среди рекрутеров точно нет понимающих отличия от СБилдер.

#26 
alex445 патриот06.02.25 20:15
NEW 06.02.25 20:15 
в ответ 7495 06.02.25 07:04
обидно, когда человек не может научится работать с форумом, если нравиться мусор выкладывать

дедульке 77 лет, врядли он понимает как работает интернеты и форум, это его внучок балуется! зло

Реально похоже, будто старый ноут дедов откопал, а там пароли сохранённые. ))

#27 
alex445 патриот06.02.25 20:16
NEW 06.02.25 20:16 
в ответ 7495 06.02.25 07:19

Если 77-летний дедулька начнёт форматировать тегами, тогда не только метрами скроллить придётся,

он тегами ГОРИЗОНТАЛЬНО страницу порвёт, пусть мусорит только в одной теме, всёравно старый.

Алекснек вроде не старый, но страницу горизонтально регулярно рвёт. И ничё - ценный специалист. ))

#28 
alex445 патриот06.02.25 20:17
NEW 06.02.25 20:17 
в ответ 7495 06.02.25 07:25

переводим .PDF в .txt, потом в .html, потом можно с любого браузера стартовать: https://7495.strana.de/proverka.html

в первом окошке адрес блокчейна, в последующие окошки адреса кошельков, думаю всё и так интуитивно понятно!

Нихрена непонятно, как перевести в фургоны, доски и шоколадки.

#29 
AlexNek патриот06.02.25 21:56
AlexNek
NEW 06.02.25 21:56 
в ответ alex445 06.02.25 20:16
но страницу горизонтально регулярно рвёт

моники у вас малые бебе

А ничего не видно при вводе - скокпастил - нормально спок

#30 
7495 коренной житель07.02.25 07:10
7495
NEW 07.02.25 07:10 
в ответ alex445 06.02.25 20:17


переводим .PDF в .txt, потом в .html, потом можно с любого браузера стартовать: https://7495.strana.de/proverka.html

в первом окошке адрес блокчейна, в последующие окошки адреса кошельков, думаю всё и так интуитивно понятно!


Нихрена непонятно, как перевести в фургоны, доски и шоколадки.


Я тебе ещё ТРИ ГОДА назад рассказывал, когда ты ещё всё сравнивал с Новосибирском, сырки просроченные из пальмового масла...


сейчас вроде перестал жрать всякую дрянь, пересел на другую машину, но всё ещё бездомный и по привычке натираешь лоб калом.


Итак, копируешь из .pdf код в .txt файл, потом переименовываешь в .html, до этого момента понятно? а потом в любом магазине:


карточку достал - шоколадку оплатил, или в салоне последней модели теслу, зашел, оплатил, уехал, в чём собственно сложности?





Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#31 
7495 коренной житель07.02.25 07:15
7495
NEW 07.02.25 07:15 
в ответ 7495 07.02.25 07:10

это банковская карточка от бинанцы (криптобиржи), если кто не понял...

Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#32 
alex445 патриот07.02.25 18:58
NEW 07.02.25 18:58 
в ответ 7495 07.02.25 07:10
карточку достал - шоколадку оплатил, или в салоне последней модели теслу, зашел, оплатил, уехал, в чём собственно сложности?

А у вас какая машина?

#33 
alek4 старожил07.02.25 23:04
NEW 07.02.25 23:04 
в ответ alek4 31.01.25 14:13, Последний раз изменено 07.02.25 23:14 (gendy)

ПРОГРАММА «Простые 2»

ОГЛАВЛЕНИЕ

1. Общее

2. Математика

3. Вывод

4.Анализ результатов

5.Скачать программу «Простые 2»

Приложение 1

Распечатка программы «Простые 2»

1. Общее

В программе «Простые 1» исследован многочлен a*x*x +b*x +cв части генерации простых чисел.

Коэффициенты задаются.

В скатерти Улама по диагонали значения этого многочлена при разных последовательностях x.

Для трёх значений предполагаемого многочлена d1, d2, d3 при x1, x2, x3 можно отыскать значениякоэффициентов

a, b, c.

2. Математика

Для

x1 =1

x2 = 2

x3=3

коэффициенты находятся по формулам

d:=((k3-2*k2+k1) Mod 2 ) ;

If (d>0) then

fa:=111else

begin

a:= (k3-2*k2+k1)div 2;

b:= k2-k1-3*a;

c:= k1-a-b;

end;

d:=((k6-2*k5+k4) Mod 2 ) ;

If (d>0) then

fb:=222else

begin

a1:= (k6-2*k5+k4)div 2;

b1:= k5-k4-3*a;

c1:= k4-a-b;

end;

Продолжение расчётов, если коэффициенты целые числа.

Если коэффициенты дробные, выводятся соответственно для многочленов № 1 и № 2:

fa =111 иfb=222.

Дальнейшие вычисления те же, что и в Программе «Простые 1».

3. Вывод

Вывод тот же, что в программе «Простые 1».

Дополнен выводом чисел fa иfb.

4.Анализ результатов

По диагональным числам Скатерти Улама часто удается найти многочлен с большей долей простых чисел, чем в ряду натуральных чисел.

5.Скачать программу «Простые 2»

https://disk.yandex.ru/d/M3YYAVqN3TQuQQ

Приложение 1

Распечатка программы «Простые 2»

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button5: TButton;

Label1: TLabel;

StringGrid2: TStringGrid;

StringGrid3: TStringGrid;

Edit1: TEdit;

Label2: TLabel;

Label4: TLabel;

Label5: TLabel;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Label3: TLabel;

Label6: TLabel;

Label7: TLabel;

Label8: TLabel;

Label9: TLabel;

Label10: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

const

n =20000;// число вычмислений значений многочленов

// k1 =1499;

//k2=1657;

//k3=1823;

k1 =3463;

k2=3701;

k3=3947;

//fb=222

//k4=2;

//k5=3;

//k6=17;

k4=1823;

k5= 1997;

k6= 2179;

var

Tick: Cardinal;

s1:array [1..n] of integer;// значения многочлена № 1

s2:array [1..n] of integer;//1 -простое число, 0 - составное число

//многочлен № 1

s3:array [1..n] of integer;// значения многочлена № 2

s4:array [1..n] of integer;// 1 -простое число, 0 - составное число

//многочлен № 21

s5:array [1..n] of integer;// простые числа натурального ряда

s6:array [1..n] of integer;//составные числа нарурального ряда

s7:array [1..n] of integer;//ряд простых чисел

s8:array [1..50] of integer;// сравнение максимальных

//цепей простых чисел в многочленах№1 и №2

r,w, w1, w2, k,f,g, h, ha,q,i,j : integer; //

j1,j2,j3,j4,j5,j6,j7,j8,i2,i1, i3,i4,i5,i6,i7,i8,i9,i0, l: integer; //

x1, x2, z,z1, z2, z3, z4,z5, z6,z7, v,v1,v2, e: integer;//

m, m1, m2, mm, a2,m3,m4,m5 ,vv: integer;//

y, y1, y2,y3, d, p, s, t, u1,u2 , p1, t1, u3,u4 :integer;//

h1,h2,h3: variant;//

n1, n2, n3,n4: cardinal;//

d1, d2, d3, d4: variant;//

a, b, c, a1, b1, c1, fa, fb:integer;//

// Функция нахождения простых чисел

// По книгеЖуков "Программируем в Delphi"

function good(Numb:integer):boolean;

var

i:integer;

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

good:= true;

for i:=2 to Trunc(Sqrt(Numb)) do

if (Numb mod i) =0then

begin

good := false;

exit;

end; end;

procedure TForm1.Button1Click(Sender: TObject);

// окантовка

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

for q:=1 to n //нумерация по горизонтали в табл №1 ,

do StringGrid2.Cells[q,0]:=IntToStr(q);

for q:=1 to n// нумерация по вертикалив табл №1 ,

doStringGrid2.Cells[0,q]:=IntToStr(q);

// Вычисление коэффициентов многочлена

d:=((k3-2*k2+k1) Mod 2 ) ;

If (d>0) then

fa:=111else

begin

a:= (k3-2*k2+k1)div 2;

b:= k2-k1-3*a;

c:= k1-a-b;

end;

d:=((k6-2*k5+k4) Mod 2 ) ;

If (d>0) then

fb:=222else

begin

a1:= (k6-2*k5+k4)div 2;

b1:= k5-k4-3*a;

c1:= k4-a-b;

end;

////////////////// a b c

//////////////////////////////////

if fa=0 then begin

for i:=1 to ndo

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

s1:=(a*i*i + b*i + c);

if s1<=0 then begin v:=i; break

end; end;

for j:= 1 to N dobegin

IF S1[j]> 0 then

if good (s1[j]) then

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

s2[j]:=1 ; z1:= z1+1; end

elsebegin s2[j]:=0;z2:= z2+1;

end;end;

// простые - многочлен № 1

for i:=1 to n dobegin

if s2=1 then m:=m+1 ;

if s2 =0 then begin

if m>w then

beginw:=m;j1:= i-1;end;

m:=0

end;

end;

//end;

j2 := j1-w+1;

//составные - многочлен № 1

for i:=1 to n dobegin

if ((s2[i-1] =1) and(s2 =0)) then y1 := i ;

if s2=0 thent:=t+1 ;

if s2 =1 then begin

if t>s then

begins:=t; u1:= i-1;end;

end;

if s2 =1 then t:=0;

end;

u2 := u1-s+1;

end;

///////////a1 b1 c1

if fb =0 then begin

for i:=1 to ndo

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

s3:=(a1*i*i+ b1*i+ c1);

if s3<=0 then begin v1:=i; break

end; end;

for j:= 1 to N dobegin

Form1.Caption:=IntToStr(GetTickCount-Tick);

IF S3[j]> 0 then

if good (s3[j]) then

begin

s4[j]:=1 ; z3:= z3+1; end

elsebegin s4[j]:=0;z4:= z4+1;

end;end;

m1:=0;

for i:=1 to n dobegin//простые- многгочлен № 2

if s4=1 then m1:=m1+1 ;

if s4 =0 then begin

if m1>w1 then

begin w1:=m1;j3:= i-1;end;

m1:=0

end;

end;

j4 := j3-w1+1;

//составные- многочлен № 2

for i:=1 to n dobegin

if ((s4[i-1] =1) and(s4 =0)) then y2 := i ;

if s4=0 then t1:=t1+1 ;

if s4 =1 then begin

if t1>d then

begind:=t1;u3:= i-1;t1:=0; end;

if s2 =0 then t1 :=0;

end;

end;

u4 := u3-d+1;

end;

/////////////////////////////натуральный ряд чисел

for j:= 1 to N dobegin

if good (j) then

begin

s5[j]:=j ; z5:= z5+1; end

elsebegin s6[j]:=j;z6:= z6+1;

end;end;

m2:=0;

// натуральный ряд составные числа

for i:=1 to n dobegin

if ((s5[i-1] >0) and(s6 >0)) then y3 := i ;

if s5=0 then m2:=m2+1 ;

if s5 >0 then begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

if m2>w2 then

beginw2:=m2;j5:= i-1;end;

m2:=0

end;

end;

j6 := j5-w2+1;

// ряд простых числел

for j:= 1 to N do

if good (j) then

begin

z7:= z7+1; s7[z7]:=j end;

// частное простых и всех чисел

h1 := z1/n;//многочлен № 1

h2 := z3/n;//многочлен № 2

h3:= z5/n; // ряд натуральных чисел

for i:= 1 to n do

n1 := n1 + s1;

for i:= 1 to n do

n2 := n2 + s3;

for i:= 1 to n do

begin

if s5>0 then n3 := n3+s5;

if s6>0 then n3 := n3+s6;

end;

for i:= 1 to n do

n4 := n4 + s7;

d1 :=n1/n;

d2 :=n2/n;

d3 :=n3/n;

d4 := n4/z7;

for i:= j2 to j1 do

for j:= j4to j3 do

ifs1 = s3[j] then s8 :=s1 ;

//////////////////////////

for i:=1 to ndobegin

StringGrid2.Cells[i,1]:=

IntToStr( s1);

StringGrid2.Cells[i,2]:=

IntToStr( s2);

StringGrid2.Cells[i,4]:=

IntToStr( s3);

StringGrid2.Cells[i,5]:=

IntToStr( s4);

ifs5=0 then

StringGrid2.Cells[i,7]:= '-';

ifs5>0 then

StringGrid2.Cells[i,7]:=IntToStr(i);

ifs5>0 then

StringGrid2.Cells[i,8]:= '-';

ifs5=0 then

StringGrid2.Cells[i,8]:=IntToStr( i);

IntToStr( s6);

StringGrid2.Cells[i,10]:=

IntToStr( s7);

// выоод простых чисел с 41

// if s7>=41 then

// StringGrid2.Cells[i-13,10]:=

// IntToStr( s7);

StringGrid2.Cells[i,10]:=

IntToStr( s7);

end;

for i:=1 to 50do

if i<=w then

StringGrid2.Cells[i,12]:=

IntToStr( s8)

else StringGrid2.Cells[i,12]:='-';

Edit1.Text :=

'a='+' '+IntToStr(a)+''+

'b='+' '+IntToStr(b)+''+

'c='+''+IntToStr(c)+''+

'v='+''+IntToStr(v)+''+

'z1='+''+IntToStr(z1)+''+

'z2='+''+IntToStr(z2)+''+

'w='+''+IntToStr(w)+''+

'm='+''+IntToStr(m) +''+

'j1='+''+IntToStr(j1) +''+

'j2='+' '+IntToStr(j2) +''+

's='+''+IntToStr(s) +''+

't='+''+IntToStr(t)+''+

'u1='+''+IntToStr(u1) +''+

'u2='+' '+IntToStr(u2) +''+

'y1='+' '+IntToStr(y1) +''+

's2[n]='+' '+IntToStr(s2[n]) +''+

'd1='+' '+FormatFloat('0.00000',d1) +''+

'h1='+' '+FormatFloat('0.00000',h1);

Edit2.Text :=

'a1='+''+IntToStr(a1)+''+

'b1='+' '+IntToStr(b1)+''+

'c1='+''+IntToStr(c1)+''+

'v1='+''+IntToStr(v1)+''+

'z3='+''+IntToStr(z3)+''+

'z4='+''+IntToStr(z4)+''+

'w1='+''+IntToStr(w1)+''+

'm1='+''+IntToStr(m1) +''+

'j3='+''+IntToStr(j3) +''+

'j4='+' '+IntToStr(j4)+''+

'd='+''+IntToStr(d) +''+

't1='+''+IntToStr(t1)+''+

'u3='+''+IntToStr(u3) +''+

'u4='+' '+IntToStr(u4) +''+

'y2='+' '+IntToStr(y2) +''+

's4[n]='+' '+IntToStr(s4[n]) +''+

'd2='+' '+FormatFloat('0.00000',d2)+''+

'h2='+' '+ FormatFloat('0.00000',h2);

Edit3.Text :=

'v2='+''+IntToStr(v2)+''+

'z5='+''+IntToStr(z5)+''+

'z6='+''+IntToStr(z6)+''+

'w2='+''+IntToStr(w2)+''+

'm2='+''+IntToStr(m2) +''+

'j5='+''+IntToStr(j5) +''+

'j6='+''+IntToStr(j6) +''+

'y3='+''+IntToStr(y3) +''+

's5[n]='+' '+IntToStr(s5[n]) +''+

'd3='+' '+FormatFloat('0.00000',d3)+''+

'h3='+''+FormatFloat('0.00000',h3);

Edit4.Text :=

'n4='+''+IntToStr(n4) +''+

'z7='+''+IntToStr(z7) +''+

'd4='+' '+FormatFloat('0.00000',d4)+''+

'fa='+''+IntToStr(fa) +''+

'fb='+''+IntToStr(fb) ;

end;

////////////////////////////////////////////////////////////////

procedure TForm1.Button5Click(Sender: TObject);

begin

close

end;

initialization

randomize;

end.

#34 
gendy Dinosaur07.02.25 23:22
gendy
NEW 07.02.25 23:22 
в ответ Murr 06.02.25 18:54
иногда, однако, появляются вакансии с Дельфи.Но вот среди рекрутеров точно нет понимающих отличия от СБилдер.

В точности мой случай. Тоже как то написал бевербунг упомянув знания делфи, хотя знал только BCB и то последние годы его не касался. Взяли потому как шеф загорелся идеей скинуть на меня древнюю делфи программу, которую давно хотели заменить, но как то потом.

Вот так до знакомства с этой программой дело так и не дошло, всё другие проекты были.

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#35 
AlexNek патриот07.02.25 23:30
AlexNek
NEW 07.02.25 23:30 
в ответ alek4 07.02.25 23:04

ну Вы русский язык то хоть понимаете!!!

Не нужно постить длинный неформатированный код.

#36 
Murr патриот08.02.25 00:23
Murr
NEW 08.02.25 00:23 
в ответ AlexNek 07.02.25 23:30

Да оставь - пусть постит.

Напостися - успокоится.

Вот что было бы полезно - написать Фри чтобы добавили обрезку и опцию "море"...

#37 
Murr патриот08.02.25 00:25
Murr
NEW 08.02.25 00:25 
в ответ gendy 07.02.25 23:22

У нас не такие продвинутые шефы... и совсем мало тех кто программил на дельфях/сбилдере...

#38 
AlexNek патриот08.02.25 11:32
AlexNek
NEW 08.02.25 11:32 
в ответ Murr 08.02.25 00:23
Да оставь - пусть постит.

Да, похоже случай клинический, научить делать вложение или форматирование кода не получится хммм

Ну может, хоть код шарить научится

https://www.tutorialspoint.com/compile_pascal_online.php

https://www.jdoodle.com/execute-pascal-online

#39 
alek4 старожил08.02.25 13:18
NEW 08.02.25 13:18 
в ответ alek4 31.01.25 14:13

«Моделирование отбора длялокусов в разных хромосомах»

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

Скачать текст

https://disk.yandex.ru/i/SV4Ke8iYp8NYGg

Программа:

«Моделирование отбора длялокусов в разных хромосомах»

Вступление

Приводится описание программы моделирования одного гипотетического

варианта естественного отбора: Мутации в двух хромосомах.

1. Естественный отбор

По Дарвину особи с полезными признаками, дают больше потомства.

Чаще, но не всегда,достигается или повышением плодовитости при сохранении времени жизни, или увеличением времени жизни при сохранении прежней плодовитости, или действуют оба фактора одновременно.

По Дарвину это и есть положительный отбор. Имеются в виду признаки, полученные при мутациях и передающиеся по наследству. Понятие альтруизма здесь не рассматривается. Наследование генов альтруизма рассмотрено в ветви: АЛЬТРУИЗМ. Генетика конкретизировала основу понятия «признак» - гены. Основные определения по генетике в приложениях 1 - 6. Каждый признак определяется определенным геном или комбинацией генов. Гены поразличным причинаммутируют. Мутация определенного гена порождает аллели этого гена.

А, следовательно, и новые признаки организма. Естественный отбор может происходить по разным вариантам.

Вариант 1. Гены мутируют. Последствия мутаций в одном гене могут быть: положительные, отрицательные и нейтральные. Положительные мутации в процессе сохраняютсявсё большего числа особей. Отрицательные мутации «вымываются».

Вариант 2. При совпадении нескольких определенных нейтральных мутаций в разных хромосомах организм приобретает новые признаки, способствующие увеличению численности таких организмов. Для исследования такого варианта отбора разработана программа «Моделирование естественного отбора длялокусов в разных хромосомах».

]2. Цель программы

В программе «Моделирование естественного отбора длялокусов в разных хромосомах» изучается ситуация. Некие существа размножаются половым путем. Для определенности: «мужчины» и «женщины». Название условное. Могут быть и кузнечики. От перемены местами мужчин и женщин задача не меняется. Сделано гипотетическое допущение. Особь, у которой в определенных хромосомах в заданных локусах расположенызаданные гены из списка аллель генов,получает преимущество перед другими особями: меньше вероятность смерти. Такие особи получают условное название: особи с геномом плюс(+). Моделируется половой процесс с обменом хромосом между родителями при зачатии. Выясняется, сколько должно произойти рождений и смертей, для преобладания в сообществе особей с геномом плюс.

Две хромосомы 1 и 2, одинаковы для мужчин и женщин.

Гены в хромосоме 1: x1 и x2.

Гены в хромосоме 2: y1 и y2.

Аллели генов x1 и x2: 1,2…,.c

Аллели генов y1 и y2: 1,2…,.c

Гены в хромосомах 1 и 2 различны.

В конкретной программе особыс аллелеями:

x1 = 1

x2 = 1

y1 = 2

y2 = 2

Названы особями с геномом +.

Они имеют меньшую вероятность смерти.

То есть могут за «жизнь» произвести больше потомства.

В исходном состоянии задается некоторое множество мужчин и женщин.

Мужчин p3, женщинp4.

Для первой позиции (особи) в соответствующем массиве задается геном +.

Для остальных геном случайно.

Далее имитируется процесс размножения.

До достижения количества мужчин и женщин соответственно: p1 и p2.

В примере программы

p1 = p2

p3 = p4

]3. Формат программы.

Программа составлена на DELPHI 7. Ввод исходных данных непосредственно в тексте программы. Для работы с программой необходимо установить DELPHI 7.

Скачать программу A-2chr

https://yadi.sk/d/42DrSMFQfcv8x

]3. Биологическая интерпретация

Программа имеет следующую биологическую интерпретацию.

На необитаемом острове появилась популяция из p3 – «мужчин» и p4 – «женщин».

Один мужчина и одна женщина имеют геном +.

Данный геном уменьшает вероятность смерти.

Популяция может из-за ограниченных ресурсов увеличить численность только до p1 – «мужчин» и p2 – «женщин».

Другой вариант вымереть.

В определенное время года происходит вымирание, в другой сезон размножение.

Задано ограничение на число лет существования популяции - kk

Определяется: какая доля особей через kk лет с геномом плюс среди живущих мужчин и женщин и среди потенциально возможного числа мужчин и женщин.

4. Алгоритм

Алгоритм состоит из следующих блоков.

БЛОК ОКАНТОВКИ ТАБЛИЦ

БЛОК СУПЕРЦИКЛА

БЛОК СМЕРТЬ +РОЖДЕНИЕ

БЛОК СМЕРТЬ

БЛОК РОЖДЕНИЕ

БЛОК ВЫВОДА

]4.1. БЛОК ОКАНТОВКИ ТАБЛИЦ

Проставка номеров строк и столбцов

4.2. БЛОК СУПЕРЦИКЛА

В ходе суперцикла повторяется:

БЛОК СМЕРТЬ+РОЖДЕНИЕ

.

Смысл суперцикла.

Данные по выполнению БЛОК СМЕРТЬ+РОЖДЕНИЕ

имеют большой вероятностный разброс.

Поэтому следует использовать усредненные данные по ходу выполнения суперцикла.

4.3. БЛОК СМЕРТЬ+РОЖДЕНИЕ

Поочередно выполняются:

БЛОК СМЕРТЬ

БЛОК РОЖДЕНИЯ

Ограничениями служат:

Максимальное число мужчин – константа p1;

Максимальное число женщин – константа p2;

Заданное число итераций – константаkk.

Используется цикл while

4.4. БЛОК СМЕРТИВ ходе выполнения этого блока поочередно сканируются массивы мужчин и женщин.

С заданной вероятности имитируется смерть, то есть обнуление просканированных позиций массивов.

Для особей с геномом + устанавливается меньшая вероятность смерти.

Число проведения итераций БЛОК СМЕРТИ задается.

Константа t.

4.4. БЛОК РОЖДЕНИЯВ ходе выполнения БЛОК РОЖДЕНИЯ вначале определяется число рождений.

Если число мужчин превышает число женщин, число рождений задается долей от числа мужчин.

В противном случае число рождений- доля от числа женщин.

Рождение мужчины или женщины случайно.

Далее случайным образом выбирается пара мужчина – женщина.

Далее имитируется рождение новой особи.

Генотип определяется в соответствии с законом Менделя.

4.5. Исходные данные

Исходные данные (const) вводятся непосредственно в тексте программы.

5. Массивы и переменные

Основныемассивы. Массив исходных мужчин u1[1..k,1..p3,1..2], где: k – число пар гомологичных хромосом, комбинации которых исследуются. p3 – число мужчин на старте программы. Позиции 1 и 2 соответствуют аллелям гена в гомологичных хромосомах.

Все аллели гена для заданного локуса пронумерованы

от 1 до с.

Принято: число аллель генов для всех локусов одинаково. Константа c задается в исходных данных.

Задается также массив u2[1..k,1..p4,1..2].

Где p4 число женщин.

Также задаются числа, определяющие вероятность смерти, вероятность рождения мужчины или женщины, вероятность для выбора варианта комбинации генов мужчины и женщины у потомка.

В тексте программы задаются особи с геномом плюс.

В данном варианте программы по одной особи на позиции № 1.

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

ua[1..k,1..p3,1..2] и ub[1..k,1..p3,1..2], соответственно мужчины и женщины.

6. БЛОК ВЫВОДА

6.1 Общее

Выводятся данные следующего вида:

А) Усредненные данные по всем итерациям суперцикла.

Б) Данные по первым 20 итерациям суперцикла

В) Данные по заданной итерации № ss суперцикла.

+.1. Данные по совокупности суперцикла

Дано в разделе 7.

6.2. Данные по 20 итерациям суперцикла:

Вывод массивы v[1..20], m[1..20] и d[1..20] соответственно для каждой итерации итог: число мужчин с геномом плюс, число мужчин и число незаполненных ячеек в массиве ua[1..20], то есть число потенциально возможных мужчин.

6.3. Данные по заданной итерации суперцикла

Смотреть по тексту программы

]7. Результаты счета.

Предусмотрен вывод:

a: integer; // сумма мужчин за суперцикл

l: integer; // сумма отсутствия мужчин за суперцикл

v: integer; // сумма мужчин с геномом плюс за суперцикл

b: currency; // среднее число мужчин за суперцикл

l1: currency; //среднее число отсутствия мужчин за суперцикл

w: currency; среднее число мужчин с геномом плюс за суперцикл

g: currency; //за супер цикл. Отношение числа мужчин с геномом плюс к общему числу мужчин

g1: currency; // за супер цикл. Отношение числа мужчин с геномом плюс к потенциальномучислу мужчин

aa: integer; // сумма женщин за суперцикл

y1: integer; // сумма отсутствия сумма отсутствия женщин за суперциклза суперцикл

vv: integer; // сумма женщин с геномом плюс за суперцикл

1bb: currency; // среднее число женщин за суперцикл

yy: currency; // среднее число отсутствия женщин за суперцикл

ww: currency; // среднее число женщин с геномом плюс за суперцикл

gg: currency; //за супер цикл. Отношение числа женщин с геномом плюс к общему числу женщин

gg1: currency; // за супер цикл. Отношение числа женщин с геномом плюс к потенциальномучислу женщин

gg2: integer; //число циклов суперцикла без вымирания для мужчин

gg3: integer; //число циклов суперцикла без вымирания для мужчин

r1: currency; //за суперцикл. Число циклов без вымирания для мужчин к общему числу циклов

r2: currency; //за суперцикл. Число циклов без вымирания для женщин к общему числу циклов

Имеются три варианта счета:

А) Вымирание: обнуление массивов ua[1..k,1..p1,1..2]и ub[1..k,1..p2,1..2] .

Б) Число элементов массивов ua[1..k,1..p1,1..2]и ub[1..k,1..p2,1..2] с геномом плюс в ходе расчётов существенно не изменились.

В) Число элементов массивов ua[1..k,1..p1,1..2]и ub[1..k,1..p2,1..2] с геномом плюс в ходе расчётов существенно увеличилось.

Интересен вариант В.

Иллюстрация эволюции.

Пример.

Исходные данные:

t = 1;// Число циклов смертей

kk = 1;// допустимое число циклов в основном цикле

p1 =2000;// Число мужчин- конечное(не более)

p2 = 2000; // Число женщин- конечное(не более)

p3 = переменная;//начальное число мужчин

p4 =переменная;//начальное число женщин

принято

p3 =p4

ff=5; // 1критерий для определения вероятностейсмерти

o3 = 2 ;//числодля расчёта рождений за цикл размножения (рождений) // наo3 делится числомужчин (женщин в текущий момент расчета)

fff = 20; // длярасчёта случайной величиныпри определении вероятности// смерти мужчин и женщин вне генома плюс

rr = 40 ; // для расчёта случайной величиныпри определении вероятности// смерти мужчин и женщин c геномом плюс

k = 2; // число независимо наследуемых генов

// размещены в неголомогичных хромосомах

c = 5; //число независимо наследуемых генов в расчете

sss =100; // число суперциклов

Ниже вывод для

p3 =p4: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30

b: currency; // среднее число мужчин за суперцикл

w: currency; среднее число мужчин с геномом плюс за суперцикл

g: currency; // за супер цикл. Отношение числа мужчин с геномом плюс к общему числу мужчин

g1: currency; // за супер цикл. Отношение числа мужчин с геномом плюс к потенциальномучислу мужчин

r1: currency; //за суперцикл. Число циклов без вымирания для мужчин к общему числу циклов

0

Результаты счёта

p3= p41bwgg1r1

1---891,26---891,26---1---0,4456---0,77

2---752,65---714,11---0,9487---0,3571---0,725

3---537,235---532,585---0,9913---0,2663---0,68

4---372,075---366,135---0,984---0,1831---0,645

5---265,49---261,89---0,9864---0,1309---0,6

6---220,29---219,275---0,9954---0,1096---0,53

7---173,2---172,055---0,9984---0,086---0,5

8---260,415---259,295---0,9957---0,1296---0,525

9---200,31---199,03---0,9936---0,0995---0,55

10---194,4---192,9---0,9923---0,0964---0,585

15---142,38---140,67---0,988---0,0703---0,6

20---99,335---97,59---0,9824---0,0488---0,58

25---111,91---109,55---0,9789---0,0548---0,56

30---142,3---139,8---0,9825---0,0699---0,58

35---88,395---86,355---0,5769---0,0432---0,59

40---93,26---90,495---0,9704---0,0452---0,58

50---95,885---92,33---0,929---0,0462---0,67

60---48,495---44,28---0,9131---0,221---0,695

70---86,67---80,21---0,9255---0,0401---0,759

80---80,27---71,505---0,8908---0,0358---0,79

90---34,945---24,325---0,691---0,0122---0,835

100---51,1---33,48---0,6552---0,0167---0,89

150---47,545---11,28---0,2372---0,0056---0,97

200---72,07---11,405---0,1582---0,0057---1

250---110,35---11,99---0,1087---0,006---1

300---144,59---10,45---0,0723---0,0052---1

|||||||||||||||||||||||||||||||||||||||||||||||||

Приложение 1

Основные принципы

Организм состоит из клеток. В клетках ядра. В ядрах хромосомы. Наборы хромосом почти во всех клетках одинаковы. Исключения половые клеткии красные кровяные тельца. Общее название совокупности хромосом – генотип организма. Каждая хромосома последовательность генов. Каждый ген кодирует определенную функцию организма. Например, синтез белка. Местоположения генов в хромосоме называется локусами. Вариантывариантов генов длякакого-либо локуса хромосомы носит название – аллеля. В диплоидном организме хромосомы образуют гомологичные пары. В хромосомах - гомологах местоположение локусов совпадают.

Каждая из хромосом гомологичной пары в каждом локусе имеет определенную аллелю гена. Аллели могут совпадать, а могут и отличаться. Исключение половые хромосомы.

Ниже они не рассматриваются. В одинаковых локусах хромосом - гомологов содержатся гены из списка аллель генов для данного локуса. Набор хромосом определяет построение и функции организма. Используется термин – фенотип. Фенотип определяется всеми хромосомами. В результате сложного процесса размноженияу потомка каждая пара хромосом гомологов состоит из одной хромосомы отца и из одной хромосомы матери. Множество пар хромосом сохраняется. Выбор одной из двух гомологичных хромосом родителей для потомка происходит случайным образом с вероятностью 0,5.

||||||||||||||||||||||||||||||||||||||||||

Приложение 2.

Законы комбинации аллелей при размножении в http://tigrasp.narod.ru/s-g3.html

||||||||||||||||||||||||||||||||||

Приложение 3

http://ru.wikipedia.org/wiki/Локус в биологии означает фиксированное положение (локализацию) на хромосоме, например, положение гена. Вариант последовательности ДНК в данном локусе называется аллелью. Упорядоченный перечень локусов для какого-либо генома называется генетической картой. Генное картирование — это определение локусa для специфического биологического признака.

Диплоидные или полиплоидные клетки, которые несут одинаковые аллели на каком-либо локусе называются гомозиготными по этому локусу, а те, которые несут различные аллели — гетерозиготными.

||||||||||||||||||||||||||||||||||||||||||||||||||Приложение 4

http://ru.wikipedia.org/wiki/

Изучением генов занимается наука генетика, родоначальником которой считается Грегор Мендель, который в 1865 году опубликовал результаты своих исследований о передаче по наследству признаков при скрещивании гороха. Сформулированные им закономерности впоследствии назвали Законами Менделя.….В настоящее время, в молекулярной биологии установлено, что гены — это участки ДНК, несущие какую-либо целостную информацию — о строении одной молекулы белка или одной молекулы РНК. Эти и другие функциональные молекулы определяют развитие, рост и функционирование организма.

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

]Приложение 5

http://dic.academic.ru/dic.nsf/enc_medicine/33962/Хромосомы

Хромосомы

(греч. chrōma цвет, окраска + sōma тело) основные структурно-функциональные элементы клеточного ядра, содержащие гены. Название «хромосомы» обусловлено их способностью интенсивно окрашиваться основными красителями во время деления клетки. Каждый биологический вид характеризуется постоянством числа, размеров и других морфологических признаков X. Хромосомный набор половых и соматических клеток различен. В соматических клетках содержится двойной (диплоидный) набор Х. который можно разделить на пары гомологичных (идентичных) хромосом, сходных по величине и морфологии. Один из гомологов всегда отцовского, другой— материнского происхождения. В половых клетках (гаметах) эукариот (многоклеточных организмов, в т.ч. человека) все хромосомы набора представлены в единственном числе (гаплоидный хромосомный набор). В оплодотворенной яйцеклетке (зиготе) гаплоидные наборы мужских и женских гамет объединяются в дном ядре, восстанавливая двойной набор хромосом. У человека диплоидный хромосомный набор (кариотип) представлен 22 парами хромосом (аутосом) и одной парой половых хромосом (гоносом). Половые хромосомы различаются не только по составу содержащихся в них генов, но и по своей морфологии. Развитие из зиготы женской особи определяет пара половых хромосом, состоящая из двух Х-хромосом, то есть ХХ-пара, а мужской — пара, состоящая из X-хромосомы и У-хромосомы, — то есть ХУ-пара.

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

Приложение 6

http://dic.academic.ru/dic.nsf/enc_psyc … оминантные

Доминантные и рецессивные гены (genetic dominance and recessiveness)

По иронии судьбы, о наследственности животных нам известно гораздо больше, чем о наследственности чел. Наследственность является результатом комбинаций генов. Гены — это биохимические функциональные элементы хромосом, определяющие потенциальный пол и др. признаки у зародыша. Хромосомы представлены парами в ядре каждого сперматозоида и каждой яйцеклетки. У чел. имеется 23 пары, или 46 хромосом, причем одну пару называют половыми хромосомами, потому что они определяют пол будущего организма. Клетки женского организма несут две Х-хромосомы, тогда как клетки мужского содержат одну Х- и одну Y-хромосому. Y-хромосома мельче по размеру и содержит меньше генов на своей поверхности, чем Х-хромосома.

В результате клеточного деления в яичниках все яйцеклетки содержат одну Х-хромосому, тогда как клеточное деление в яичках приводит к тому, что половина сперматозоидов содержит Х-хромосому, а др. их половина — Y-хромосому. Т. о., в половине случаев челов. яйцеклетка оплодотворяется сперматозоидами, несущими Х-хромосому, и еще в половине — сперматозоидами, несущими Y-хромосому, так что половина рождающихся в популяции детей должна бы иметь мужской пол, а половина — женский. (Мальчиков все же рождается чуть больше, но среди них и смертность выше, а потому соотношение полов быстро уравнивается; по мере того как дети становятся старше, соотношение полов сдвигается в сторону преобладания представительниц женского пола вследствие большей устойчивости женского организма к болезням.) ………………..X. К. Финк

#40 
7495 коренной житель08.02.25 13:54
7495
NEW 08.02.25 13:54 
в ответ alek4 08.02.25 13:18

Кажется это отец Бората. Старый отец, Борат старый, Борат поздний ребёнок...


А Вы видели, вам тут одну ночную простыню затерли? Про скатерть Пифагора, не?


Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#41 
gendy Dinosaur08.02.25 22:28
gendy
NEW 08.02.25 22:28 
в ответ Murr 08.02.25 00:25

этого шефа раннее взяли делфи-программером, а потом уже подняли до начальника отдела ит, так что ничего удивительного,

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#42 
alex445 патриот08.02.25 23:15
NEW 08.02.25 23:15 
в ответ gendy 08.02.25 22:28, Последний раз изменено 08.02.25 23:24 (alex445)

А почему тег details фильтруется? Тут никак спойлер создать нельзя?

#43 
alek4 старожил09.02.25 13:01
NEW 09.02.25 13:01 
в ответ alek4 31.01.25 14:13

ФАНТАЗИИ НА ТЕМУ КВАРКОВ

Скачать текст

https://disk.yandex.ru/i/bgSTyfFpIcpAqA

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

ПРОГРАММА«4-кварк»

ОГЛАВЛЕНИЕ

1.Общее

2.Ядро атома

3.Программа «4-кварк»

4.Алгоритм

5.Ввод

6.Вывод

7.Программа

1.Общее

В наукетри метода:

А) Эксперимент

Б) Теория

В) Моделирование

Программа «4-кварк» мысленный эксперимент по моделированию сборки кварков в объекты атомного ядра.

Естьещё одна цель.

Популяризацияязыка программирования Дельфи 6, как самого комфортного для изучения.

2. Ядро атома

Ядросостоит из протонов и нейтронов.

Протон: два кварка u, один – d.

Нейтрон: два кварка d, один – u.

Число протонов меньше или равно числу нейтронов.

Но возможно кварки образуют и другие структуры.

Например,

Суперпротон: четыре кварка u, два –d.

Супернейтрон: четыре кварка d, два – u.

Косвенно это подтверждает эксперимент

http://nuclphys.sinp.msu.ru/mirrors/qnuc.htm

]3. Программа «4-кварк»

Программа «4-кварк» моделирует вариант сборки кварковв протоны и нейтроны.

Это мысленный эксперимент.

Изучение вероятности сборки заданного числа кварков в протоны и нейтроны.

Задача может решена и аналитически.

Однако моделирование позволяет вводить разные ограничения.

Что затруднительно в математических методах.

В дальнейшем намечено моделировать сборки кварков в более массивные структуры,

чем протоны и нейтроны.

4. Алгоритм

Программа содержит 3 цикла.

«Суперциклтерации - основные циклы.

«Основной цикл»: итерации «циклы по три». В ходе «основного цикла» делается попытка сборки атомного ядра с заданным числом протонов и нейтронов.

Цикл по три – попытка сборки нуклон (протона или нейтрона).

Кваркшифруется -1, d -2.

Протон: два 1 и один 2

Нейтрон: два 2, один 1.

Нет смысла: три 1 и три 2.

5. Ввод

Ввод непосредственно в программе.

z – число протонов

n – число нейтронов.

В программе определяется число кварков для заданного z иn.

Сборка по полученному числу кварков.

ttt - -допустимое число итераций суперцикла.

6. Вывод

Матрица s – состав нуклонов.

Матрица p – число кварков в отдельных нуклонах.

tt- число итераций для получения сборки ядра.

Программа

Программа на языке Дельфи 7.

Практически расчеты в допустимое время при числе нуклонов менее 50.

Скачать программу «4-кварк».

https://yadi.sk/d/y2dAiTNl4353WA

////////////////////////////////////////////////////////////////////////////////////////////

ПРОГРАММА«ф-кварк»

ОГЛАВЛЕНИЕ

]1.Общее

2.Ядро атома

3.Программа «ф-кварк»

4.Алгоритм

5.Ввод

6.Вывод

7.Программа

1.Общее

Программа «ф-кварк» продолжение программы «4-кварк».

Тоже научная фантастика в части строения атомного ядра.

2. Ядро атома

Ядросостоит из протонов и нейтронов.

Протон: два кварка u, один – d.

Нейтрон: два кварка d, один – u.

В отличие от программы «4-кварк»

добавлена возможность существования

Суперпротон: четыре кварка u, два –d.

Супернейтрон: четыре кварка d, два – u.

3. Программа «ф-кварк»

Программа «ф-кварк» моделирует вариант сборки кварковв протоны, нейтроны, суперпротоны, супернейтроны.,

Это мысленный эксперимент.

Пока тестируется алгоритм.

Изучение статистических закономерностей на потом.

4. Алгоритм

Программа содержит 3 цикла.

«Суперцикл»: итерации - основные циклы.

«Основной цикл»: итерации «циклы по шесть.

В ходе «основного цикла» делается попытка сборки атомного ядра с заданным числом протонов и нейтронов.

Цикл по шести – попытка сборки нуклон (протона или нейтрона, суперпротон или супернейтрон).

Кваркшифруетсяu-1, d -2.

Протон: два 1 и один 2

Нейтрон: два 2, один 1.

Суперпротон: четыре 1 и два 2.

Супернейтрон: четыре 2 идва 1.

Если первые три кварка = 4, протон

Если первые три кварка =5, нейтрон

Если шесть кварков = 8, суперпротон

Если шесть кварков =10,супернейтрон

5. Ввод

Ввод непосредственно в программе.

z – число протонов

n – число нейтронов.

tt - -допустимое число итераций суперцикла.

6. Вывод

Матрица s – состав нуклонов.

Матрица p – сумма чисел 1 и 2 , присвоенных кваркам u и d

Матрица m: 1 – протон или нейтрон, 2 – суперпротон или супернейтрон, 3 – выборка пустая

7. Программа

Скаать программу «ф-кварк».[/color][/size]

https://yadi.sk/d/AMSnmgt61tOlVA

///////////////////////////////////////////////////////////////////////////

ПРОГРАММА«ы-кварк»

ОГЛАВЛЕНИЕ

1.Общее

2.Ядро атома

3.Программа «ы-кварк»

4.Алгоритм

5.Ввод

6.Вывод

7.Программа

1.Общее

Программа «ы-кварк» продолжение программы «ф-кварк».

Тоже научная фантастика в части строения атомного ядра.

2. Ядро атома

Допущение.

Ядросостоит из протонов, нейтронови суперпрототонов, супернейтронов.

Протон: два кварка u, один – d.

Нейтрон: два кварка d, один – u.

Суперпротон: четыре кварка u, два –d.

Супернейтрон: четыре кварка d, два – u.

3. Программа «ы-кварк»

Программа «ы-кварк» моделирует вариант сборки кварковв протоны, нейтроны и суперпротоны, супернейтроны.,

Это мысленный эксперимент.

В дополнении к «ф-программе» в программе «ы-кварк» введен цикл по сбору статистики.

4. Алгоритм

Программа содержит 4 цикла.

Цикл статистики: итерации суперциклы

«Суперцикл»: итерации - основные циклы.

По суперциклу фиксируется нахождение ядра с заданными числами протонов и нейтронов.

«Основной цикл»: итерации «циклы по шесть.

В ходе «основного цикла» делается попытка сборки атомного ядра с заданным числом протонов и нейтронов.

Цикл по шести – попытка сборки нуклон (протона или нейтрона, суперпротон или супернейтрон).

Кваркшифруетсяu-1, d -2.

Протон: два 1 и один 2

Нейтрон: два 2, один 1.

Суперпротон: четыре 1 и два 2.

Супернейтрон: четыре 2 идва 1.

Если первые три кварка = 4, протон

Если первые три кварка =5, нейтрон

Если шесть кварков = 8, суперпротон

Если шесть кварков =10,супернейтрон

5. Ввод

Ввод непосредственно в программе.

h – число итераций для сбора статистики

z – число протонов

n – число нейтронов.

tt - -допустимое число итераций суперцикла.

6. Вывод

Матрицаs – состав нуклонов.

Матрица u: сумма чисел присвоенных нуклонам

Матрицаm:1 – протон или нейтрон, 2 – суперпротон или супернейтрон, 3 – выборка пустая

Матрицаk1:для каждой итерации цикла статистики числа протонов и нейтронов, одиночных и составе суперпротонов и супернейтронов.

n1 – отношение числа одиночных протонов к числу протонов в составе суперпротонов

n2 - отношение числа одиночных нейтронов к числу протонов в составе суперпротонов

hh – равно 7777при превышении допустимого числа итераций суперцикла

7. Программа

Программа на Дельфи 7.

Ввод непосредственно в программе.

Скачать программу «ы-кварк».

https://yadi.sk/d/KSgqNWGN4Qh9og

#44 
kukka местный житель09.02.25 19:50
kukka
NEW 09.02.25 19:50 
в ответ alek4 03.02.25 18:09

Проблема в ИИ что каждое предложение она интерпретирует по своему. Как пример степень числа она заменяет на обычную мультипликацию ++. Площади вычисляет по своему. И вообще, в немецких школах к примеру абитуриенты некоторые не могли ещё 10 лет назад найти значение х как процентуальную долю.

#45 
alek4 старожил10.02.25 11:05
NEW 10.02.25 11:05 
в ответ alek4 31.01.25 14:13

ПРОГРАММА «+-Алгебраический многочлен»

ОГЛАВЛЕНИЕ

1. Общее

2. Исходные данные

3. Алгоритм

4. Итог

5. Скачать программу

Приложение 1

Распечатка программы


1. Общее

Программа «+-Алгебраический многочлен» разработана в развитие программы «1-Алгебраический многочлен».

Снято ограничение: положительные степени и коэффициенты одночлена.

Моё мнение.

Курс информатики в школе должен быть пересмотрен.

Необходимо.

1.Школьник должен освоить язык программирования.

Разный по школам.

Самый простой Дельфи 7.

Остальное не важно.

2.Программирование должно быть на основе школьных предметов.

Знаний программирования для освоения в объеме решения задач школьной программы нужно немного.

Михаил Фленов

БИБЛИЯDELPHI

676 стр.

Для решения многих задач по школьной программы достаточно изучить 40 стр.

Программирование, как плавание. Одни люди плавают, другие нет.

Можно плавать по-собачьи, можно баттерфляем.

Алгебра в школе – много об операциях с алгебраическими многочленами.

О многочленах

https://math-prosto.ru/ru/pages/polynomials/polynomial_deg...

Программа «1 –Алгебраический многочлен» создает случайный многочлен.

Есть разные способы генерации случайного многочлена.

Отдельный вопрос насколько разные способы тождественны.

Генерация в программе включает:

1.Генерация членов многочлена

2.Приведение подобных членов

3.Группировка по степени многочлена.

2. Исходные данные]

b=50;//число одночленов в исходном многочлене

c= 20;// задание вероятности одночлена не равного нулю

c1=10;//задание вероятности одночлена не равного нулю

d=20;// задание вероятности степени переменой

f=191; //задание вероятности значения коэффициента в одночлене

e1=8; //знак степени

e2=13;//знак степени

e3= 9; //знак коэффициента

e4= 15;//знак коэффициента

3. Алгоритм

Действие 1

Формируется исходный многочлен

w:array [1..2,1..b] ofcardinal;//

Выбор знака степени одночлена: e1 и e2

Выбор знака коэффициента: e3 и e4

Действие 2

Приводятся подобные члены

u1:array [1..2,1..b] ofcardinal;//массив после приведения

Действие 3

Расстановка одночленов по степени неизвестной

u2:array [1..2,1..b] ofcardinal;// одночлены расставлены по степени

//неизвестной

4. Итог

Массив u2.

5. Скачать программу

https://disk.yandex.ru/d/tbpUMe7ALG3_XQ

Приложение 1

Распечатка программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button5: TButton;

Label1: TLabel;

StringGrid2: TStringGrid;

StringGrid3: TStringGrid;

Edit1: TEdit;

Label4: TLabel;

StringGrid1: TStringGrid;

StringGrid4: TStringGrid;

Edit2: TEdit;

procedure Button1Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

const

b=50;//число одночленов в исходном многочлене

c= 20;// задание вероятности одночлена не равного нулю

c1=10;//задание вероятности одночлена не равного нулю

d=20;// задание вероятности степени переменой

f=191; //задание вероятности значения коэффициента в одночлене

e1=8; //знак степени

e2=13;//знак степени

e3= 9; //знак коэффицинта

e4= 15;//знак коэффицинта

var

Tick: Cardinal;

w:array [1..2,1..b] ofinteger;//

//1 - степень переменной, 2 - коэффицент одночлена

p : array [1..b] of integer;//номера одночленов не равных нулю

p1 :array [1..b] of integer;//массив номеров цикла

u:array [1..2,1..b] ofinteger;//дубль массива

// подобных одночленов массива u

u2:array [1..2,1..b] ofinteger;// одночлены расставлены по степени

y:array [1..199] ofinteger;// массив сложения одночленов

tt,i,j,q ,z,r,i1,i2,i3,i4,i5,i6,j1,j2,j3,g ,k, v:integer;

t,n1, n2, n3,n4 ,n5,n6: integer;//

m1,m2,m3,m4,m5: integer;//

f1,f2,f3,f4,f5,z2,z4,z6,z8,z9, x: integer;//

z1,z3,z5,z7 : real;

n: variant;

procedure TForm1.Button1Click(Sender: TObject);

// окантовка

begin

for q:=1 to 10// нумерация по вертикалив табл №1 ,

doStringGrid1.Cells[0,q]:=IntToStr(q) ;

for q:=1 to b //нумерация по горизонтали в табл №1 ,

doStringGrid1.Cells[q,0]:=IntToStr(q);

for q:= 1 to b// нумерация по вертикалив табл №2 ,

do StringGrid2.Cells[0,q]:=IntToStr(q);

for q:=1 to b //ну2мерация по горизонтали в табл №2 ,

doStringGrid2.Cells[q,0]:=IntToStr(q);

for q:= 1 to 10// нумерация по вертикалив табл №1 ,

doStringGrid3.Cells[0,q]:=IntToStr(q);

for q:=1 to 500//нумерация по горизонтали в табл №1 ,

doStringGrid3.Cells[q,0]:=IntToStr(q);

StringGrid1.Cells[0,0] := '№1';

StringGrid2.Cells[0,0] := '№2';

StringGrid1.Cells[0,1] := 'w[1,..]';

StringGrid1.Cells[0,2] := 'w[2,..]';

StringGrid1.Cells[0,3] := 'p[..]';

StringGrid1.Cells[0,4] := 'p1[..]';

StringGrid1.Cells[0,7] := 'y[..]';

StringGrid2.Cells[0,1] := 'u1[1,..]';

StringGrid2.Cells[0,2] := 'u1[2,..]';

StringGrid2.Cells[0,5] := 'u2[1,..]';

StringGrid2.Cells[0,6] := 'u2[2,..]';

For i:=1 to b do//формирование случайного многочлепна

if(random (c) +1) <=c1 then

begin

k:=k+1;

p[k] :=k;

p1[k] :=i;

if e1<random (e2) then

w[1,k]:= random(d)

else w[1,k] := -random(d);

if e3<random (e4) then

w[2,k]:= random(f)

else w[2,k] := -random(f)

end;

for i:=1to b do//приведение подобных одночленов

for j:= 1 to bdo

begin

u[1,j] := w[1,j];

u[2,j] := w[2,j];

end;

for z:=1 to b do

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

for i2:=z+1 to b do

if u[1,z] = u[1,i2] thenbegin

v:=i2; x:=x+1; y[i2] :=i2;

u[2,z]:= u[2,z]+u[2,i2];

u[1,i2] :=0;

u[2,i2] :=0;

end;

end;

//Растановка одночленов по величине

// степени переменной

for i:=1 to 2 do

for j:=1 to b do begin

u2[1,j]:= u[1,j]+d;

u2[2,j]:= u[2,j];

end;

for tt:=1 to b*b do

for i3 := 2 to bdo

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

begin

n1:=u2[1,i3-1] ;

n2 :=u2[2,i3-1] ;

n3 :=u2[1,i3];

n4 := u2[2,i3] ;

end;

if (n1>0) and ((n3>=0)and (n4<>0))then

ifn1< n3then

begin

u2[1,(i3-1)]:=n3;

u2[2,i3-1]:=n4;

u2[1,(i3)] :=n1 ;

u2[2,i3] :=n2;

end;

if(n2=0) and (n4<>0) then

begin

u2[1,(i3-1)]:=n3;

u2[2,i3-1]:=n4;

u2[1,(i3)] :=n1 ;

u2[2,i3] :=n2;

end;

end;

for j2:=1 to b do

u2[1,j2]:=u2[1,j2] -d;

//////////////////////////////////////////////////////////////

for j:=1 tob do begin

StringGrid2.Cells[j,1] := IntToStr(u[1,j]);

StringGrid2.Cells[j,2] := IntToStr(u[2,j]);

StringGrid2.Cells[j,5] := IntToStr(u2[1,j]);

StringGrid2.Cells[j,6] := IntToStr(u2[2,j]);

end;

for i:=1 to 2 do

for j:=1 tob do

StringGrid1.Cells[j,i] := IntToStr(w[i,j]);

for i:=1 to b do begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

StringGrid1.Cells[i,3] := IntToStr(p);

StringGrid1.Cells[i,4] := IntToStr(p1);

//StringGrid1.Cells[i,5] := IntToStr(p2);

StringGrid1.Cells[i,7] := IntToStr(y);

end;

Edit1.Text :=

'k=' +''+ IntToStr(k)

+''+ 'p[2]=' +''+ IntToStr(p[2])

+''+ 't=' +''+FormatFloat('0.00',t)

+''+ 'x=' +''+ IntToStr(x)

+''+ 'y[2]=' +''+ IntToStr(y[2])

+''+ 'n1=' +''+ IntToStr(n1)

+''+ 'n2=' +''+ IntToStr(n2)

+''+ 'n3=' +''+ IntToStr(n3)

+''+ 'n4=' +''+ IntToStr(n4)

+''+ 'u2[1,10]=' +''+ IntToStr(u2[1,10]) ;

end;

////////////////////////////////////////////////////////////////

procedure TForm1.Button5Click(Sender: TObject);

begin

close

end;

initialization

randomize;

end.

#46 
alek4 старожил10.02.25 15:06
NEW 10.02.25 15:06 
в ответ alek4 31.01.25 14:13

Экономика

||||||||||||||||||||||||||||||||||||||||||||||||||

Первый вариант:программа "Ресурсы А"

Задача - Ресурсы.

Имеется s ресурсов.

Имеется r производств.

Для каждого производства расходуется некоторое

количество ресурсов.

Продукт производства прямо пропорционален объему

израсходованных ресурсов.

Для каждого производства ресурсы в заданной пропорции.

То есть объем производства прямо пропорционален

любому из израсходованных ресурсов.

Продуктам производства присваивается цена и объем.

Общая задача:

Максмизировать доход от производств.

Пока решается элементарная задача: одно производство.

r = 1

Цель:оценить максимальный расход ресурсов при разных

способах задания исходных ресурсов и ресурсов для производства.

Принято случайное задание объемов исходных ресурсов

и ресурсов для производства.

Определяется средний расход суммы ресурсов за t циклов статистики.

В ходе расчётов можно менять:

Число ресурсов,

Средний объем исходных ресурсов

Средний объем ресурсов для производства.

Скачать программу

https://yadi.sk/d/Y5YEsQ p3PitZN

#47 
alek4 старожил11.02.25 08:03
NEW 11.02.25 08:03 
в ответ alek4 31.01.25 14:13

ПРОГРАММА «1-Опознание»


ОГЛАВЛЕНИЕ

1. Исследование опознания

2. Исходные данные

3 Цель программы

4. Алгоритм

5.Вывод

6. Итоги

7. Скачать программу

Приложение 1

Распечатка программы «1-Опознание»

1. Исследование опознания

Исследование опознания можно разделить на три этапа.

Этап 1.

Задаются объекты опознания.

Этап 2

Задаются условия опознания.

Этап 3

Задается алгоритм опознания.

2. Исходные данные.

Пример

Const

a=1000; //размер матрицы объектов

b=30;//число объектов

c=12;// номер объекта для вывода

d=2;//задание вероятности

x1=1;//координата1 окна опознания

y1=1;// координата 1 окна опознания

x2=200;//координата2 окна опознания

y2=200;// координата 2 окна опознания

3. Цель программы

В процессе опознания определяется наиболее вероятные центры объектов в окне опознания.

4. Алгоритм]

4.1.Находятся центры объектов на исходной матрице.

w:array [1..3, 1..b] ofcardinal;//1, 2 координаты центров объектов

// объектов опознания

4.2. Находятся элементы объектов.

Вероятность элемента объекта определяется расстоянием от центра объекта.

Чем больше расстояние, тем меньше вероятность появления элемента объекта.

Расстояние находится в прямоугольнойметрике.

s:array [1..a,1..a,1..b] ofcardinal;// матрицаразмещения элементов

//объектов на матрице

4.3. Вычисляются матрицы

u: array [1..b] of variant;//частное суммы элементов объекта в окне опознания

//к сумме элементов всех объектов

u1: array [1..b] of variant;// частное суммы элементов объекта в окне опознания

//к сумме элементовобъекта

4.4. Находится максимальный элемент множества u –z1, объект –z2.

Находится максимальный элемент множества u1 –z3, объект –z4.

4.5. Находится второй по величине максимальный элемент множества u –z5, объект –z6.

Находится второй по величине максимальный элемент множества u1 –z7, объект –z8.

6. Итоги]

Как показали расчёты, центр объекта z1 часто, но не всегда, лежит в окне опознания.

7. Вывод

Выводятся все массивы введенные вышеz1,z2, z3, z4.

7. Скачать программу

https://disk.yandex.ru/d/uqpxmWG8Pj8HLA

]

]

Приложение 1

Распечатка программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button5: TButton;

Label1: TLabel;

StringGrid2: TStringGrid;

StringGrid3: TStringGrid;

Edit1: TEdit;

Label4: TLabel;

StringGrid1: TStringGrid;

StringGrid4: TStringGrid;

procedure Button1Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

const

a=1000; //размер матрицы объектов

b=30;//число объектов

c=12;// номер объекта для вывода

d=2;//задание вероятности

x1=1;//координата1 окнаопзнавания

y1=1;// координата 1 окнаопзнавания

x2=250;//координата2опзнавания

y2=250;// координата 2 окна опзнавания

var

Tick: Cardinal;

w:array [1..3, 1..b] ofcardinal;//1, 2 координаты центров объектов

// объектов опознания

//3 число элементов объекта

s:array [1..a,1..a,1..b] ofcardinal;// матрицаразмещения элементов

//объектов на матрице

p:array [1..b] ofcardinal;// сумма элементовдля каждого объекта

// в окне опознания

u: array [1..b] of variant;//частное суммы элементов объекта в окне опознания

//к сумме элементов всех объектов

u1: array [1..b] of variant;//частное сумме элементов объекта в окне опознания

//к сумме элементовобъекта

i,j,q ,z,r,i1,j1,tt,t,g ,k, v,y:integer;

n1, n2, n3,n4: integer;//

m1,m2,m3,m4,m5: integer;//

f1,f2,f3,f4,f5,z2,z4,z6,z8 : integer;//

z1,z3,z5,z7 : real;

procedure TForm1.Button1Click(Sender: TObject);

// окантовка

begin

for q:=1 to 5// нумерация по вертикалив табл №1 ,

doStringGrid1.Cells[0,q]:=IntToStr(q) ;

for q:=1 to b //нумерация по горизонтали в табл №1 ,

doStringGrid1.Cells[q,0]:=IntToStr(q);

for q:= 1 to a// нумерация по вертикалив табл №2 ,

do StringGrid2.Cells[0,q]:=IntToStr(q);

for q:=1 to a //ну2мерация по горизонтали в табл №2 ,

doStringGrid2.Cells[q,0]:=IntToStr(q);

for q:= 1 to 10// нумерация по вертикалив табл №1 ,

doStringGrid3.Cells[0,q]:=IntToStr(q);

for q:=1 to b//нумерация по горизонтали в табл №1 ,

doStringGrid3.Cells[q,0]:=IntToStr(q);

StringGrid1.Cells[0,0] := 'w[ ]';

StringGrid2.Cells[0,0] := 's[ ]';

StringGrid3.Cells[0,1] := 'p[ ]';

StringGrid3.Cells[0,2] := 'u[ ]';

StringGrid3.Cells[0,3] := 'u1[ ]';

////////////////// Генерация объектов

for r:= 1 to b do

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

n1:=0; n2:=0;

begin

n1:= random(a)+1;

n2:= random(a)+1;

w[1,r] := n1;

w[2,r] := n2;

end;

begin

for i:=1 to a do

for j:=1 to a do

if ((random (((abs(n1-i)+abs(n2-j)))+1)*3) <=d )

then s[i,j,r] :=r;

end;

end;

fort:=1 to b do

for i:=1 to a do

for j:=1 to a do

if s[i,j,t] >0then

w[3,t] :=w[3,t]+1;

//// Опознавание объъектов

for g:=1 to bdo

for i:=y1 to y2 do

for j:=x1 to x2 do

if s[i,j,g] >0thenbegin

Form1.Caption:=IntToStr(GetTickCount-Tick);

p[g] :=p[g] +1;

z:=z+1;

end;

for i:=1 to b do begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

u := 100*p /z;

u := 100*p /z;

u1 := 1000* p/w[3,i];

end;

//Опознание центров z2 и z4в окне опознанпия

for i:=1 to b do

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

ifu > z1 then begin z1:= u; z2:=i;end;

ifu1 > z3 then begin z3:= u1; z4:=i;end;

end;

//Опознание центров z6 и z8в окне опознанпия

for i:=1 to b do

begin

if i<>z2 then ifu > z5 then begin z5:= u; z6:=i;end;

if i<>z4 then ifu1 > z7 then begin z7:= u1; z8:=i;end;

end;

////Вывод

for i:=1 to bdobegin

Form1.Caption:=IntToStr(GetTickCount-Tick);

StringGrid1.Cells[i,1]:= IntToStr(w[1,i]);

StringGrid1.Cells[i,2]:= IntToStr(w[2,i]);

StringGrid1.Cells[i,3]:= IntToStr(w[3,i]);

end;

for I:=1 to a do

for J:=1 to ado

StringGrid2.Cells[j,i]:= IntToStr(s[i,j,z4])+' * '+IntToStr(s[i,j,z8]);

for j:=1 to b do

StringGrid3.Cells[j,1]:= IntToStr(p[j]) ;

fori:=1 to b dobegin

Form1.Caption:=IntToStr(GetTickCount-Tick);

StringGrid3.Cells[i,2]:=FormatFloat('0.00',u);

StringGrid3.Cells[i,3]:=FormatFloat('0.00',u1);

end;

Edit1.Text :='w[1,1]=' +''+ IntToStr(w[1,1])

+''+ 'w[2,1]=' +''+ IntToStr(w[2,1])

+''+ 'n1=' +''+ IntToStr(n1)+''+ 'n2=' +''+ IntToStr(n2)

+''+ 'z=' +''+ IntToStr(z)

+''+ 'z1=' +''+ FormatFloat('0.00',z1) +''+ 'z2=' +''+ IntToStr(z2)

+''+ 'z3=' +''+ FormatFloat('0.00',z3) +''+ 'z4=' +''+ IntToStr(z4)

+''+ 'z5=' +''+ FormatFloat('0.00',z5) +''+ 'z6=' +''+ IntToStr(z6)

+''+ 'z7=' +''+ FormatFloat('0.00',z7) +''+ 'z8=' +''+ IntToStr(z8);

Form1.Caption:=IntToStr(GetTickCount-Tick);

end;

////////////////////////////////////////////////////////////////

procedure TForm1.Button5Click(Sender: TObject);

begin

close

end;

initialization

randomize;

end.

ПРОГРАММА «1-Опознание»

]

ОГЛАВЛЕНИЕ]

1. Исследование опознания

2. Исходные данные

3 Цель программы

4. Алгоритм

5.Вывод

6. Итоги

7. Скачать программу

Приложение 1

Распечатка программы «1-Опознание»

1. Исследование опознания

Исследование опознания можно разделить на три этапа.

Этап 1.

Задаются объекты опознания.

Этап 2

Задаются условия опознания.

Этап 3

Задается алгоритм опознания.

2. Исходные данные.

Пример

Const

a=1000; //размер матрицы объектов

b=30;//число объектов

c=12;// номер объекта для вывода

d=2;//задание вероятности

x1=1; //координата 1 окна опознания

y1=1; // координата 1 окна опознания

x2=200; //координата 2 окна опознания

y2=200; // координата 2 окна опознания

3. Цель программы

В процессе опознания определяется наиболее вероятные центры объектов в окне опознания.

4. Алгоритм]

4.1. Находятся центры объектов на исходной матрице.

w: array [1..3, 1..b] of cardinal;//1, 2 координаты центров объектов

// объектов опознания

4.2. Находятся элементы объектов.

Вероятность элемента объекта определяется расстоянием от центра объекта.

Чем больше расстояние, тем меньше вероятность появления элемента объекта.

Расстояние находится в прямоугольной метрике.

s: array [1..a,1..a,1..b] of cardinal;// матрица размещения элементов

//объектов на матрице

4.3. Вычисляются матрицы

u: array [1..b] of variant;//частное суммы элементов объекта в окне опознания

//к сумме элементов всех объектов

u1: array [1..b] of variant;// частное суммы элементов объекта в окне опознания

//к сумме элементов объекта

4.4. Находится максимальный элемент множества u –z1, объект –z2.

Находится максимальный элемент множества u1 –z3, объект –z4.

4.5. Находится второй по величине максимальный элемент множества u –z5, объект –z6.

Находится второй по величине максимальный элемент множества u1 –z7, объект –z8.

6. Итоги]

Как показали расчёты, центр объекта z1 часто, но не всегда, лежит в окне опознания.

7. Вывод

Выводятся все массивы введенные выше z1, z2, z3, z4.

7. Скачать программу

https://disk.yandex.ru/d/uqpxmWG8Pj8HLA

]

]

Приложение 1

Распечатка программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button5: TButton;

Label1: TLabel;

StringGrid2: TStringGrid;

StringGrid3: TStringGrid;

Edit1: TEdit;

Label4: TLabel;

StringGrid1: TStringGrid;

StringGrid4: TStringGrid;

procedure Button1Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

const

a=1000; //размер матрицы объектов

b=30;//число объектов

c=12;// номер объекта для вывода

d=2;//задание вероятности

x1=1; //координата 1 окна опзнавания

y1=1; // координата 1 окна опзнавания

x2=250; //координата 2 опзнавания

y2=250; // координата 2 окна опзнавания

var

Tick: Cardinal;

w: array [1..3, 1..b] of cardinal;//1, 2 координаты центров объектов

// объектов опознания

//3 число элементов объекта

s: array [1..a,1..a,1..b] of cardinal;// матрица размещения элементов

//объектов на матрице

p: array [1..b] of cardinal;// сумма элементов для каждого объекта

// в окне опознания

u: array [1..b] of variant;//частное суммы элементов объекта в окне опознания

//к сумме элементов всех объектов

u1: array [1..b] of variant;//частное сумме элементов объекта в окне опознания

//к сумме элементов объекта

i,j,q ,z,r,i1,j1,tt,t,g ,k, v,y: integer;

n1, n2, n3,n4 : integer;//

m1,m2,m3,m4,m5: integer;//

f1,f2,f3,f4,f5,z2,z4,z6,z8 : integer;//

z1,z3,z5,z7 : real;

procedure TForm1.Button1Click(Sender: TObject);

// окантовка

begin

for q:=1 to 5 // нумерация по вертикали в табл №1 ,

do StringGrid1.Cells[0,q]:=IntToStr(q) ;

for q:=1 to b //нумерация по горизонтали в табл №1 ,

do StringGrid1.Cells[q,0]:=IntToStr(q);

for q:= 1 to a // нумерация по вертикали в табл №2 ,

do StringGrid2.Cells[0,q]:=IntToStr(q);

for q:=1 to a //ну2мерация по горизонтали в табл №2 ,

do StringGrid2.Cells[q,0]:=IntToStr(q);

for q:= 1 to 10 // нумерация по вертикали в табл №1 ,

do StringGrid3.Cells[0,q]:=IntToStr(q);

for q:=1 to b//нумерация по горизонтали в табл №1 ,

do StringGrid3.Cells[q,0]:=IntToStr(q);

StringGrid1.Cells[0,0] := 'w[ ]';

StringGrid2.Cells[0,0] := 's[ ]';

StringGrid3.Cells[0,1] := 'p[ ]';

StringGrid3.Cells[0,2] := 'u[ ]';

StringGrid3.Cells[0,3] := 'u1[ ]';

////////////////// Генерация объектов

for r:= 1 to b do

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

n1:=0; n2:=0;

begin

n1:= random(a)+1;

n2:= random(a)+1;

w[1,r] := n1;

w[2,r] := n2;

end;

begin

for i:=1 to a do

for j:=1 to a do

if ((random (((abs(n1-i)+abs(n2-j)))+1)*3) <=d )

then s[i,j,r] :=r;

end;

end;

for t:=1 to b do

for i:=1 to a do

for j:=1 to a do

if s[i,j,t] >0 then

w[3,t] := w[3,t]+1;

//// Опознавание объъектов

for g:=1 to b do

for i:=y1 to y2 do

for j:=x1 to x2 do

if s[i,j,g] >0 then begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

p[g] := p[g] +1;

z:=z+1;

end;

for i:=1 to b do begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

u := 100* p /z;

u := 100* p /z;

u1 := 1000* p/w[3,i];

end;

//Опознание центров z2 и z4 в окне опознанпия

for i:=1 to b do

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

if u > z1 then begin z1:= u; z2:=i;end;

if u1 > z3 then begin z3:= u1; z4:=i;end;

end;

// Опознание центров z6 и z8 в окне опознанпия

for i:=1 to b do

begin

if i<>z2 then if u > z5 then begin z5:= u; z6:=i;end;

if i<>z4 then if u1 > z7 then begin z7:= u1; z8:=i;end;

end;

////Вывод

for i:=1 to b do begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

StringGrid1.Cells[i,1]:= IntToStr(w[1,i]);

StringGrid1.Cells[i,2]:= IntToStr(w[2,i]);

StringGrid1.Cells[i,3]:= IntToStr(w[3,i]);

end;

for I:=1 to a do

for J:=1 to a do

StringGrid2.Cells[j,i]:= IntToStr(s[i,j,z4])+' * '+IntToStr(s[i,j,z8]);

for j:=1 to b do

StringGrid3.Cells[j,1]:= IntToStr(p[j]) ;

for i:=1 to b do begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

StringGrid3.Cells[i,2]:= FormatFloat('0.00',u);

StringGrid3.Cells[i,3]:= FormatFloat('0.00',u1);

end;

Edit1.Text :='w[1,1]=' +' '+ IntToStr(w[1,1])

+' '+ 'w[2,1]=' +' '+ IntToStr(w[2,1])

+' '+ 'n1=' +' '+ IntToStr(n1) +' '+ 'n2=' +' '+ IntToStr(n2)

+' '+ 'z=' +' '+ IntToStr(z)

+' '+ 'z1=' +' '+ FormatFloat('0.00',z1) +' '+ 'z2=' +' '+ IntToStr(z2)

+' '+ 'z3=' +' '+ FormatFloat('0.00',z3) +' '+ 'z4=' +' '+ IntToStr(z4)

+' '+ 'z5=' +' '+ FormatFloat('0.00',z5) +' '+ 'z6=' +' '+ IntToStr(z6)

+' '+ 'z7=' +' '+ FormatFloat('0.00',z7) +' '+ 'z8=' +' '+ IntToStr(z8);

Form1.Caption:=IntToStr(GetTickCount-Tick);

end;

///////// ///////////////////////////////////////////////////////

procedure TForm1.Button5Click(Sender: TObject);

begin

close

end;

initialization

randomize;

end.

#48 
alek4 старожил12.02.25 16:43
NEW 12.02.25 16:43 
в ответ 7495 08.02.25 13:54

Распечатка прог для народа без Дельфи.

Для понимания алгоритма.


#49 
kukka местный житель12.02.25 17:30
kukka
NEW 12.02.25 17:30 
в ответ 7495 08.02.25 13:54

internal class Program

{

private static ulong idCounter = 0;

static void Main(string[] args)

{

Task[] tasks = new Task[10];

for (int j = 0; j < tasks.Length; j++) {

tasks[j] = Task.Factory.StartNew(Increment);

}

Task.WaitAll(tasks);

Debug.WriteLine($"Counter: {idCounter}");

}

private static void Increment()

{

for (int i = 0; i < 10000; i++) {

idCounter++;

}

}

}


К вашему восприятию ИТ здесь работает не логически..и это уже какой год.

Настрогать приложений ну совсем не хорошая идея. Сколько человек этим заинтересуются??

А порт можно самим поменять.

#50 
alek4 старожил17.02.25 00:54
NEW 17.02.25 00:54 
в ответ alek4 31.01.25 14:13

]ПРОГРАММА «2-Опознание»

]

ОГЛАВЛЕНИЕ

1. Исследование опознания

2. Исходные данные

3 Цель программы

4. Алгоритм

5.Вывод

6. Итоги

7. Скачать программу

]Приложение 1

Распечатка программы «2-Опознание»

1. Исследование опознания

Исследование опознания можно разделить на три этапа.

Этап 1.

Задаются объекты опознания.

Этап 2

Задаются условия опознания.

Этап 3

Задается алгоритм опознания.

2. Исходные данные.

Пример

Const

a=1000; //размер матрицы объектов

b=30;//число объектов

c=12;// номер объекта для вывода

d=2;//задание вероятности

x1=1;//координата1 окнаопознавания

y1=1;// координата 1 окнаопознавания

x2=150;//координата2опознавания

y2=150;// координата 2 окна опознавания

h=5;//суперцикл

3. Цель программы

Программа ««2-Опознание» развитие программы«1-Опознание».

По программе«1-Опознание» в процессе опознания определяется центры объектов в окне опознания.

По программе «2-Опознание»собирается статистика нахождения, хотя бы одного центра объекта

в окне опознания.

4. Алгоритм

4.1.Находятся центры объектов на исходной матрице.

w:array [1..3, 1..b] ofcardinal;//1, 2 координаты центров объектов

// объектов опознания, 3 – число элементов объекта опознания

4.2. Находятся элементы объектов.

Вероятность элемента объекта определяется расстоянием от центра объекта.

Чем больше расстояние, тем меньше вероятность появления элемента объекта.

Расстояние находится в прямоугольнойметрике.

s:array [1..a,1..a,1..b] ofcardinal;// матрицаразмещения элементов

//объектов на матрице

4.3. Вычисляются матрицы

u: array [1..b] of variant;//частное суммы элементов объекта в окне опознания

//к сумме элементов всех объектов

u1: array [1..b] of variant;// частное суммы элементов объекта в окне опознания

//к сумме элементовобъекта

4.4. Находится максимальный элемент множества u –z1, объект –z2.

Находится максимальный элемент множества u1 –z3, объект –z4.

4.5. Находится второй по величине максимальный элемент множества u –z5, объект –z6.

Находится второй по величине максимальный элемент множества u1 –z7, объект –z8.

4.6. Расчёты по 4.1 – 4.5 проводятся h раз – суперцикл.

Вычисляются:

Z9 – число нахождений, хотя бы одного центра объекта

в окне опознания за суперцикл.

n – частное от деления z9 на h.

Массив u2[1..h] – элемент u2 равен 1, при нахождения на шаге i суперцикла, хотя бы одного центра объекта в окне опознания, и -0 в противном случае.

6. Итоги

Как показали расчёты, центр объекта z1 часто, но не всегда, лежит в окне опознания.

Можно выявить соответствие размера окна опознания и z10.

7. Вывод

Выводятся все массивы введенные вышеи z1, z2, z3, z4, z5, z6, z7, z8, z9, z10.

Массив s[1..a,1..a,1..b] выводится при значениях s[1..a,1..a,z4] и s[1..a,1..a,z8].

Элемент матрицы s[1..a,1..a,z4] * s[1..a,1..a,z8]

7. Скачать программу

https://disk.yandex.ru/d/lwAc9bq2Lkohrg

Приложение 1

Распечатка программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button5: TButton;

Label1: TLabel;

StringGrid2: TStringGrid;

StringGrid3: TStringGrid;

Edit1: TEdit;

Label4: TLabel;

StringGrid1: TStringGrid;

StringGrid4: TStringGrid;

Edit2: TEdit;

procedure Button1Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

const

a=1000; //размер матрицы объектов

b=30;//число объектов

c=12;// номер объекта для вывода

d=2;//задание вероятности

x1=1;//координата1 окнаопознания

y1=1;// координата 1 окнаопознания

x2=150;//координата2опознания

y2=150;// координата 2 окна

h=5;//суперцикл

var

Tick: Cardinal;

w:array [1..3, 1..b] ofcardinal;//1, 2 координаты центров объектов

// объектов опознания

//3 число элементов объекта

s:array [1..a,1..a,1..b] ofcardinal;// матрицаразмещения элементов

//объектов на матрице

p:array [1..b] ofcardinal;// сумма элементовдля каждого объекта

// в окне опознания

u: array [1..b] of variant;//частное суммы элементов объекта в окне опознания

//к сумме элементов всех объектов

u1: array [1..b] of variant;//частное сумме элементов объекта в окне опознания

u2: array [1..h] of cardinal;//1 центр объекта в окне опознания, 0 - вне окна

i,j,q ,z,r,i1,i2,i3,j1,tt,t,g ,k, v,y:integer;

n1, n2, n3,n4: integer;//

m1,m2,m3,m4,m5: integer;//

f, f1,f2,f3,f4,f5,z2,z4,z6,z8,z9 : integer;//

z1,z3,z5,z7 : real;

n: variant;

procedure TForm1.Button1Click(Sender: TObject);

// окантовка

begin

for q:=1 to 5// нумерация по вертикалив табл №1 ,

doStringGrid1.Cells[0,q]:=IntToStr(q) ;

for q:=1 to b //нумерация по горизонтали в табл №1 ,

doStringGrid1.Cells[q,0]:=IntToStr(q);

for q:= 1 to a// нумерация по вертикалив табл №2 ,

do StringGrid2.Cells[0,q]:=IntToStr(q);

for q:=1 to a //ну2мерация по горизонтали в табл №2 ,

doStringGrid2.Cells[q,0]:=IntToStr(q);

for q:= 1 to 10// нумерация по вертикалив табл №1 ,

doStringGrid3.Cells[0,q]:=IntToStr(q);

for q:=1 to 500//нумерация по горизонтали в табл №1 ,

doStringGrid3.Cells[q,0]:=IntToStr(q);

StringGrid1.Cells[0,0] := 'w[ ]';

StringGrid2.Cells[0,0] := 's[ ]';

StringGrid3.Cells[0,1] := 'p[ ]';

StringGrid3.Cells[0,2] := 'u[ ]';

StringGrid3.Cells[0,3] := 'u1[ ]';

StringGrid3.Cells[0,4] := 'u2[ ]';

////////////////// Генерация объектов

forf:=1 to h do//Суперрцикл

begin //f

for i:=1 to b do

begin

p :=0;

u :=0;

u1 := 0;

end;

for i:=1 to 3 do

for j:=1 to b do

w[i,j] :=0;

for i1:=1 to a do

for i2:=1 to a do

for i3:=1 to b do

s[i1,i2,i3] :=0;

z1:=0; z2:=0; z3:=0; z4:=0;

z5:=0; z6:=0; z7:=0; z8:=0;

for r:= 1 to b do

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

n1:=0; n2:=0;

begin

n1:= random(a)+1;

n2:= random(a)+1;

w[1,r] := n1;

w[2,r] := n2;

end;

for i:=1 to a do

for j:=1 to a do

if ((random (((abs(n1-i)+abs(n2-j)))+1)*3) <=d )

then s[i,j,r] :=r;

end;

fort:=1 to b do

for i:=1 to a do

for j:=1 to a do

if s[i,j,t] >0then

w[3,t] :=w[3,t]+1;

//// Опознавание объъектов

for g:=1 to bdo

for i:=y1 to y2 do

for j:=x1 to x2 do

if s[i,j,g] >0thenbegin

Form1.Caption:=IntToStr(GetTickCount-Tick);

p[g] :=p[g] +1;

z:=z+1;

end;

for i:=1 to b do begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

u := 100*p /z;

u := 100*p /z;

u1 := 1000* p/w[3,i];

end;

//Опознание центров z2 и z4в окне опознанпия

for i:=1 to b do

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

ifu > z1 then begin z1:= u; z2:=i;end;

ifu1 > z3 then begin z3:= u1; z4:=i;end;

end;

//Опознание центров z6 и z8в окне опознанпия

for i:=1 to b do

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

if i<>z2 then ifu > z5 then begin z5:= u; z6:=i;end;

if i<>z4 then ifu1 > z7 then begin z7:= u1; z8:=i;end;

end;

if ( ((w[1,z4]>=x1) and(w[1,z4]<=x2)) and

((w[2,z4]>=y1) and(w[2,z4]<=y2)) )

thenbegin z9 := z9+1; u2[f] :=1;end;

end;//f

N:= z9/h;

////Вывод

for i:=1 to bdobegin

Form1.Caption:=IntToStr(GetTickCount-Tick);

StringGrid1.Cells[i,1]:= IntToStr(w[1,i]);

StringGrid1.Cells[i,2]:= IntToStr(w[2,i]);

StringGrid1.Cells[i,3]:= IntToStr(w[3,i]);

end;

for I:=1 to a do

for J:=1 to ado

StringGrid2.Cells[j,i]:= IntToStr(s[i,j,z4])+' * '+IntToStr(s[i,j,z8]);

for j:=1 to b do

StringGrid3.Cells[j,1]:= IntToStr(p[j]) ;

fori:=1 to b dobegin

Form1.Caption:=IntToStr(GetTickCount-Tick);

StringGrid3.Cells[i,2]:=FormatFloat('0.00',u);

StringGrid3.Cells[i,3]:=FormatFloat('0.00',u1);

end;

fori3:=1 to h dobegin

StringGrid3.Cells[i3,4]:=IntToStr(u2[i3])

end;

Edit1.Text :=

'n1=' +''+ IntToStr(n1)+''+ 'n2=' +''+ IntToStr(n2)

+''+ 'z=' +''+ IntToStr(z)

+''+ 'z1=' +''+ FormatFloat('0.00',z1) +''+ 'z2=' +''+ IntToStr(z2)

+''+ 'z3=' +''+ FormatFloat('0.00',z3) +''+ 'z4=' +''+ IntToStr(z4)

+''+ 'z5=' +''+ FormatFloat('0.00',z5) +''+ 'z6=' +''+ IntToStr(z6)

+''+ 'z7=' +''+ FormatFloat('0.00',z7) +''+ 'z8=' +''+ IntToStr(z8);

Edit2.Text :=

'z9=' +''+ IntToStr(z9)

+''+ 'n=' +''+ FormatFloat('0.00',n)

+''+ 'n=' +''+'u2[h]=' +''+ IntToStr(u2[h])

end;

////////////////////////////////////////////////////////////////

procedure TForm1.Button5Click(Sender: TObject);

begin

close

end;

initialization

randomize;

end.

#51 
alek4 старожил17.02.25 09:46
NEW 17.02.25 09:46 
в ответ alek4 31.01.25 14:13

ПРОГРАММА «3-Опознание»

1.Алгоритм

Программа «3-Опознание» имеет одно отличие от программы «2-Опознание».

Это нахождение расстояния при определении вероятности появление элемента объекта.

В программе «2-Опознание» вероятность появления элемента объекта находится с использованием

расстояния в прямоугольной метрике.

Википедия

…метрика, введённая Германом Минковским. Согласно этой метрике, расстояние между двумя точками равно сумме модулей разностей их координат.

В программе «3-Опознание» вероятность появления элемента объекта находится с использованием

расстояния в эвклидовой метрике.

То есть по теореме Пифагора.

2. Итог

Z9 – число нахождений, хотя бы одного центра объекта

в окне опознания за суперцикл.

n – частное от деления z9 на h (число шагов суперцикла).

Расчёты показали совпадение величины n длядвух метрик.

Что требует объяснения.

3. Скачать программу

https://disk.yandex.ru/d/eZsrf3cc8zgxiA

Приложение 1

Распечатка программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

Button5: TButton;

Label1: TLabel;

StringGrid2: TStringGrid;

StringGrid3: TStringGrid;

Edit1: TEdit;

Label4: TLabel;

StringGrid1: TStringGrid;

StringGrid4: TStringGrid;

Edit2: TEdit;

procedure Button1Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

const

a=1000; //размер матрицы объектов

b=30;//число объектов

c=12;// номер объекта для вывода

d=2;//задание вероятности

x1=1;//координата1 окнаопознания

y1=1;// координата 1 окнаопознания

x2=150;//координата2опознания

y2=150;// координата 2 окна

h=100 ; //суперцикл

var

Tick: Cardinal;

w:array [1..3, 1..b] ofcardinal;//1, 2 координаты центров объектов

// объектов опознания

//3 число элементов объекта

s:array [1..a,1..a,1..b] ofcardinal;// матрицаразмещения элементов

//объектов на матрице

p:array [1..b] ofcardinal;// сумма элементовдля каждого объекта

// в окне опознания

u: array [1..b] of variant;//частное суммы элементов объекта в окне опознания

//к сумме элементов всех объектов

u1: array [1..b] of variant;//частное сумме элементов объекта в окне опознания

u2: array [1..h] of cardinal;//1 центр объекта в окне опознания, 0 - вне окна

tt,i,j,q ,z,r,i1,i2,i3,j1,t,g ,k, v,y:integer;

n1, n2, n3,n4: integer;//

m1,m2,m3,m4,m5: integer;//

f, f1,f2,f3,f4,f5,z2,z4,z6,z8,z9 : integer;//

z1,z3,z5,z7 : real;

n: variant;

procedure TForm1.Button1Click(Sender: TObject);

// окантовка

begin

for q:=1 to 5// нумерация по вертикалив табл №1 ,

doStringGrid1.Cells[0,q]:=IntToStr(q) ;

for q:=1 to b //нумерация по горизонтали в табл №1 ,

doStringGrid1.Cells[q,0]:=IntToStr(q);

for q:= 1 to a// нумерация по вертикалив табл №2 ,

do StringGrid2.Cells[0,q]:=IntToStr(q);

for q:=1 to a //ну2мерация по горизонтали в табл №2 ,

doStringGrid2.Cells[q,0]:=IntToStr(q);

for q:= 1 to 10// нумерация по вертикалив табл №1 ,

doStringGrid3.Cells[0,q]:=IntToStr(q);

for q:=1 to 500//нумерация по горизонтали в табл №1 ,

doStringGrid3.Cells[q,0]:=IntToStr(q);

StringGrid1.Cells[0,0] := 'w[ ]';

StringGrid2.Cells[0,0] := 's[ ]';

StringGrid3.Cells[0,1] := 'p[ ]';

StringGrid3.Cells[0,2] := 'u[ ]';

StringGrid3.Cells[0,3] := 'u1[ ]';

StringGrid3.Cells[0,4] := 'u2[ ]';

////////////////// Генерация объектов

forf:=1 to h do//Суперрцикл

begin //f

for i:=1 to b do

begin

p :=0;

u :=0;

u1 := 0;

end;

for i:=1 to 3 do

for j:=1 to b do

w[i,j] :=0;

for i1:=1 to a do

for i2:=1 to a do

for i3:=1 to b do

s[i1,i2,i3] :=0;

z1:=0; z2:=0; z3:=0; z4:=0;

z5:=0; z6:=0; z7:=0; z8:=0;

for r:= 1 to b do

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

n1:=0; n2:=0;

begin

n1:= random(a)+1;

n2:= random(a)+1;

w[1,r] := n1;

w[2,r] := n2;

end;

for i:=1 to a do

for j:=1 to a do

begin

if(random (Trunc (Sqrt( Sqr(abs(n1-i))+Sqr(abs(n2-j)) )

+1)) *3)<=dthen s[i,j,r] :=r;

end; end;

tt:=Trunc(Sqrt (0));//для ясности

{?x Sqrt (x) Квадратный корень из x

x2 Sqr (x) Квадрат x

}

fort:=1 to b do

for i:=1 to a do

for j:=1 to a do

if s[i,j,t] >0then

w[3,t] :=w[3,t]+1;

//// Опознавание объъектов

for g:=1 to bdo

for i:=y1 to y2 do

for j:=x1 to x2 do

if s[i,j,g] >0then begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

p[g] :=p[g] +1;

z:=z+1;

end;

for i:=1 to b do begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

u := 100*p /z;

u := 100*p /z;

u1 := 1000* p/w[3,i];

end;

//Опознание центров z2 и z4в окне опознанпия

for i:=1 to b do

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

ifu > z1 then begin z1:= u; z2:=i;end;

ifu1 > z3 then begin z3:= u1; z4:=i;end;

end;

//Опознание центров z6 и z8в окне опознанпия

for i:=1 to b do

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

if i<>z2 then ifu > z5 then begin z5:= u; z6:=i;end;

if i<>z4 then ifu1 > z7 then begin z7:= u1; z8:=i;end;

end;

if ( ((w[1,z4]>=x1) and(w[1,z4]<=x2)) and

((w[2,z4]>=y1) and(w[2,z4]<=y2)) )

thenbegin z9 := z9+1; u2[f] :=1;end;

end;//f

N:= z9/h;

////Вывод

for i:=1 to bdobegin

Form1.Caption:=IntToStr(GetTickCount-Tick);

StringGrid1.Cells[i,1]:= IntToStr(w[1,i]);

StringGrid1.Cells[i,2]:= IntToStr(w[2,i]);

StringGrid1.Cells[i,3]:= IntToStr(w[3,i]);

end;

for I:=1 to a do

for J:=1 to ado

StringGrid2.Cells[j,i]:= IntToStr(s[i,j,z4])+' * '+IntToStr(s[i,j,z8]);

for j:=1 to b do

StringGrid3.Cells[j,1]:= IntToStr(p[j]) ;

fori:=1 to b dobegin

Form1.Caption:=IntToStr(GetTickCount-Tick);

StringGrid3.Cells[i,2]:=FormatFloat('0.00',u);

StringGrid3.Cells[i,3]:=FormatFloat('0.00',u1);

end;

fori3:=1 to h dobegin

StringGrid3.Cells[i3,4]:=IntToStr(u2[i3])

end;

Edit1.Text :=

'n1=' +''+ IntToStr(n1)+''+ 'n2=' +''+ IntToStr(n2)

+''+ 'z=' +''+ IntToStr(z)

+''+ 'z1=' +''+ FormatFloat('0.00',z1) +''+ 'z2=' +''+ IntToStr(z2)

+''+ 'z3=' +''+ FormatFloat('0.00',z3) +''+ 'z4=' +''+ IntToStr(z4)

+''+ 'z5=' +''+ FormatFloat('0.00',z5) +''+ 'z6=' +''+ IntToStr(z6)

+''+ 'z7=' +''+ FormatFloat('0.00',z7) +''+ 'z8=' +''+ IntToStr(z8);

Edit2.Text :=

'z9=' +''+ IntToStr(z9)

+''+ 'n=' +''+ FormatFloat('0.00',n)

+''+'u2[h]=' +''+ IntToStr(u2[h])

+''+'tt=' +''+ IntToStr(tt)

end;

////////////////////////////////////////////////////////////////

procedure TForm1.Button5Click(Sender: TObject);

begin

close

end;

initialization

randomize;

end.

#52 
alek4 старожил19.02.25 21:12
NEW 19.02.25 21:12 
в ответ alek4 31.01.25 14:13

Программа«Мыслеворот»

||||||||||||||||||||||||||||||||||

|||||||||||||||||||||||||||||||||||

[size=20][color=maroon]1. Основной цикл.

На вход блокаприходит переменная ss.

В диапазоне 1-a.

В блоке 1 происходит преобразование числа

ss в число tt.

Порядок преобразований определяется массивом U1[1..a].

Номер входа ss - на выходе число tt.

Число tt равно числу с номером ss в массиве U1[1..a].

В начале вычислений ss = pp.

Далее.

На входе блока числа ss = tt, на выходе ss.

Основной цикл повторяется k1.

Числа ss записываются в массив c[1..k1].

[/color][/size]

[size=20][color=purple]2. Суперцикл

Для набора статистики основной цикл повторяется d раз.

Результаты по сумме циклов определенной длинысуммируются в массиве U4[1..a].

[/color][/size]

[color=fuchsia][size=20]3. Пакеты

По результатам многочисленных вычислений определена следующая закономерность.

Последовательность чисел ss образует периодически повторяющиесяпакеты (последовательности чисел).

Предусмотрено вычисление массива u4[1..a].

Каждая позиция i массива u5[1..a] равна сумме пакетов длины i в суперцикле.

В данном варианте программы Мыслеворот 5 учитываются только пакеты длиной не более 32.

[/size][/color]

[size=20][color=green]4. Вывод.

4.1. pp..2. tt и ss.

4.2. Четырьмя строками в соответствии со значениями k:1 …49, 50 …99, 100 …149,(k1- 4)…k1.

4.3. u4[1..a]

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

4.3. u5[1..a]

Суммарные результаты основных циклов при выполнении суперцикла.

4.4. Edit 2 Входные данные:

a, d, k1.

4.5. p6

Суммарное число выхода из основного цикла

c наличием одного повторяющегося пакета.

Правильный результат

4.6. p7

Суммарное число выхода из основного цикла

наличием двух повторяющихся пакетов.

Это для тестирования сбоев в программе.

4.7. p 8

Суммарное число выхода из основного цикла при наличии трёх повторяющхся циклов.

Это для тестирования сбоев в программе.

4.8. p9

Число нулей в массивах c[k].

Правильный результат a *d – p6

if u5[p5] =1

then p6:= p6 +1;

if u5[p5] =2

then p7:= p7 +1;

if u5[p5] =3

then p8:= p8 +1;

if u5[p5] =0

then p9:= p9 +1

[/color][/size]

[size=20][color=navy]5. Указания к расчётам.

Как было упомянуто, программа не учитывает пакеты длиной более 32.

Поэтому ограничения на числа a и d.

Показатель правильных расчётов: p6 = d.[/color][/size]

[size=20][color=blue]6. Результаты счёта.

6.1. С «возрастанием» a увеличивается длина пакета.

6.2. С «возрастанием» d появляются пакеты большой длины.

5.3. При «малых» k1 и «больших» d и a изредка не формируются повторяющиеся пакеты.

[/color][/size]

[size=20][color=teal]Скачать программу[/color][/size]

https://yadi.sk/d/11p3jtKEuGXn5

//////////////////////////////////////

|||||||||||||||||||||||||||||||||||||||||||||||||||||

[size=20][color=blue]В развитие программы 5 – Мыслеворот создана программа В- Мыслеворот

Отличия:

А) Снято ограничениепо максимальной длине цикла.

Б) Введен массив.

U6[1...a]

Элементы массива равны отношению смежных элементов массива u4[1...a],

То есть сумм циклов, длины которых отличается на единицу.

В) Введен массив.

U7[1...a]

Элементi равен сумме последовательностей ss длиной i.

Отсчёт от начала вычислениядо формировки цикла ss.

Г) Вычисляется p11 – максимально длинный цикл.

Д)Вычисляется p12– максимально длинная последовательность от начала расчёта

до формирования первого цикла ss.

Е) Вычисляется средняя длина цикла – pa

Ж) Вычисляется средняя длина последовательности до формирования цикла- pb[/color][/size]

[size=20][color=maroon]Определена закономерность:

pa примерно равно pb[/color][/size]

[size=18][color=purple]Комментарий: Использован алгоритм определения циклов с двумя допущениями.

1. Длина цикла не превышает a

2. В цикле не повторяющихся чисел.

[/color][/size]

[size=18][color=green]Эти два допущения подтверждены расчётами.

Но следует доказать.[/color][/size]

[size=20][color=red]Скачать исходник[/color][/size]

https://yadi.sk/d/1Vx5n2IQvKBCe

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

[size=20][color=blue]В вероятностных расчётах обычно действует общее правило.

С увеличением числа расчётов результаты «стремятся» к неким

усредненным показателям.

По программе «Мыслеворот» проведен расчёты

при:

k1 = 300a = 50d =100000

Для трёх вариантов расчётов получены следующие результаты

(результаты счёта для трёх вариантов разделены «-»).

[/color][/size]

[size=18][color=maroon]p11 (максимальная длина цикла) = 26-26-25

p12 (максимальная длина последовательности до вхождения в цикл) = 26-26-28

pa (средняя длина цикла) = 4,78-4,79-4,76

pb (средняя длина последовательности до вхождения в цикл) = 4,77-4,77-4,77

[/color][/size]

|||||||||||||||||||||||||||||

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

[size=20][color=blue]Вычиcляются

s(a) = pa : a

где:

а - число чисел в массиве преобразования -u1[1..a] (программа С- Мыслеворот)

pa: -средняя длина цикла(программа С- Мыслеворот)[/color][/size]

[color=maroon][size=18]s(50) = 0,09500

s(150) = 05313

s(1000) = 0,01936

s(2000) = 0,01422

a(5000) = 0,00891

s(10000) = 0,00623

s(30000) = 0,00366

s(50000) = 0,00267

s(60000) = 0,00256 (?)

s(80000) = 0,00019

[/size][/color]

||||||||||||||||||||||||||||||||||||||||||||||||||||||

|||||||||||||||||||||||||||||||||||||

[size=20][color=maroon]Программа Мыслеворот моделирует

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

Причемсвойства фронта меняются под воздействием среды.

Когда-то наступает равновесие.

Характеристики фронта уже не меняются.

[/color][/size]

[size=20][color=purple]Пример для физики.

Кристаллизация.

[/color][/size]

[size=20][color=blue]Пример для человеческого общества.

Распространение слуха.

Вначале слух трансформируется в процессе распространения,

затем принимает законченную форму.[/color][/size]

||||||||||||||||||||||||||||||||||||||||||||||||

|||||||||||||||||||||||||||||||||||||||||||||||||||

[size=20][color=maroon]В программе С - Мыслеворот матрица преобразованийU1[1..a]

формируется следующим образом:

Случайно выбираются числа из последовательности чисел от 1 до a.

Исходная последовательность чисел не изменяется.

Из них формируетсямассив преобразованийU1[1..a].

В результате в массиве преобразований некоторые числа из массива a

могут быть более одного раза, а некоторых чисел может не быть.

В программеП - Мыслеворот массив преобразованийU1[1..a]

- перестановка чисел от 1 до a.[/color][/size]

[color=green]Скачать[/color]

https://yadi.sk/d/tt0QStIL3Gzain

[size=20][color=navy]ПрограммыС - Мыслевороти П - Мыслеворот имеют одинаковый алгоритм.

Только в программеП - Мыслеворот несколько изменены выходные данные.

Для удобства в программеП- Мыслеворот предусмотрен простой переход к

алгоритму программы С - Мыслеворот.[/color][/size]

[size=20][color=purple]Результаты счета по двум программам сильно различаются.

1. С - Мыслеворот.

Суммациклов почти плавно уменьшается с ростом длины цикла.

П - Мыслеворот

Сумма циклов почти одинакова для каждой длины цикла.

2.С - Мыслеворот

Последовательность чисел ss вступает в цикл после нескольких итераций

Массивu9

П. - Мыслеворот

Последовательность чисел ss вступает в цикл с первой итерации

Массивu9

[/color][/size]

#53 
alek4 старожил23.02.25 16:39
NEW 23.02.25 16:39 
в ответ alek4 31.01.25 14:13

Разбиение чисел на квадраты

/||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

[size=20][color=maroon]В 1770 году Лагранж дал нам теорему.

В современной форме:

А.А. Бухштаб

Теория чисел

Теорема 303. (Лагранж) Каждое натуральное число представимо в виде суммы четырёх квадратов целых чисел.

[/color][/size]

[size=20][color=blue]Лагранж засчитывал и квадраты нуля.

[/color][/size]

[size=20][color=purple]Любопытно.

А что будет, если исключить квадраты нуля?

Условное название: разбиение А.

Разработана программа 4 kvadrat.

Программа отыскивает все возможные Разбиения А.

Вычисления.

Рассчитано разбиение совокупности целых чисел от 1 до 1500.

Результат.

1.Наибольшее число безРазбиения А – 128.

2.Среди 1500 чисел наибольшее число разбиений – 81 для1470.

3.Вычислены средние числа разбиений:x1 и x2.[/color][/size]

[size=20][color=green]Скачать программу 4 kvadrat

https://yadi.sk/d/3mkh6ZYI3Xm7rQ[/color][/size]

//////////////////////

|}}}}}}}}}}}}}}}

[size=20][color=maroon]В развитие программы 4 kvadrat разработана программа 5 kvadrat.

Вместо 4 квадратов число разбивается на 5 квадратов.

Условное название: разбиение В.

Программа отыскивает все возможные Разбиения В.

Вычисления.

Рассчитано разбиение совокупности натуральных чисел от 1 до 1500.

Результат.

1.Наибольшее число безРазбиения В среди 1500 натуральных числе– 33.

2.Среди натуральных 1500 чисел наибольшее число разбиений – 332 для1459 .

3.Вычислены средние числа разбиений:x1 и x2.

[/color][/size]

5 kvadrat

u1[ww]=--126------p=--1500------k=--166------w=--38------x1=--098,333------x2=--170,789

4 kvadrat

u1[ww]=--54------p=--1500------k=--48------w=--38------x1=--021,205------x2=--044,038

3 kvadrat

u1[ww]=--9------p=--1499------k=--0------w=--38------x1=--003,461------x2=--010,318

[size=20][color=green]Скачать программу 5 kvadrat.[/color][/size]

https://yadi.sk/d/Pw8-Q0bH3XpSnX

|||||||||||||||||||||||||||||||||||||||||||

|||||||||||||||||||||||||||||||||||||||||||||||

В развитие программы 4 kvadrat разработана программа 1 kvadrat.

Вместо 4 квадратов число «разбивается» на 1 квадрат.

Условное название: разбиение Д.

Программа отыскивает все возможные Разбиения Д.

Вычисления.

Рассчитано разбиение совокупности натуральных чисел от 1 до 1500.

Результат.

1.Наибольшее число безРазбиения Д среди 1500 натуральных чисел– 0.

2.Среди 1500 чисел наибольшее число разбиений – 1 для1444 .

3.Вычислены средние числа разбиений:x1 и x2.

5 kvadrat

u1[ww]=--126------p=--1500------k=--166------w=--38------x1=--098,333------x2=--170,789

4 kvadrat

u1[ww]=--54------p=--1500------k=--48------w=--38------x1=--021,205------x2=--044,038

3 kvadrat

u1[ww]=--9------p=--1499------k=--0------w=--38------x1=--003,461------x2=--010,318

2 kvadrat

u1[ww]=--1------p=--1493------k=--0------w=--38------x1=--000,389------x2=--002,787

1 kvadrat

u1[ww]=--1------p=--1444------k=--0------w=--38------x1=--000,025------x2=--001,619

[size=20][color=green]Скачать программу 1 kvadrat.[/color][/size]

https://yadi.sk/i/lEGrhgbK3YAqi7

||||||||||||||||||||||||||||||||||||

|||||||||||||||||||||||||||||||||||||

В развитие программы 4 kvadrat разработана программа 1 kvadrat.

Вместо 4 квадратов число «разбивается» на 1 квадрат.

Условное название: разбиение Д.

Программа отыскивает все возможные Разбиения Д.

Вычисления.

Рассчитано разбиение совокупности натуральных чисел от 1 до 1500.

Результат.

  1. Наибольшее число безРазбиения Д среди 1500 натуральных чисел– 0.
  2. Среди 1500 чисел наибольшее число разбиений – 1 для1444 .
  3. Вычислены средние числа разбиений:x1 и x2.

5 kvadrat

u1[ww]=--126------p=--1500------k=--166------w=--38------x1=--098,333------x2=--170,789

4 kvadrat

u1[ww]=--54------p=--1500------k=--48------w=--38------x1=--021,205------x2=--044,038

3 kvadrat

u1[ww]=--9------p=--1499------k=--0------w=--38------x1=--003,461------x2=--010,318

2 kvadrat

u1[ww]=--1------p=--1493------k=--0------w=--38------x1=--000,389------x2=--002,787

1 kvadrat

u1[ww]=--1------p=--1444------k=--0------w=--38------x1=--000,025------x2=--001,619

Скачать программу 1 kvadrat.

https://yadi.sk/d/scvFLwmD3YAome

???????????????????????????????????????????????

[color=maroon][size=20]Людям свойственно стремление познать новое.

Гении типа Эйлера делают это без особых усилий.

Остальные с трудом.

Но сейчас нашему мозгу может помочь компьютер.

Так, например, меня заинтересовала проблема разбиениячислана произведение четырёх чисел(квадраты).

Например, разбиение на 5 квадратов.

a = qwen+ asdm+zxcv+yuib+hjkg

Каждый квадрат отличается, хотя одним сомножителем.

Разработана программа Xkvadrat.

Заменяет ранее выставленные программы.

Задается последовательность чисел.

Минимальное uu, максимальное d.

Для каждого числа в этом диапазоне проверяется возможность разбиения на заданное число квадратов – ss.

Число ss задается в диапазоне от 1 до 10.[/size][/color]

[color=purple]Результаты расчётов:

Массивu1 : array [1.. d]

u1 : число разбиений на квадраты числа i.

Массивua : array [1.. 5, 0..1000]

ua[1,j]:число разбиений, ua[2,j]:суммаразбиений

Массивub : array [1..100, 1..30]

ub[i,1]………ub[i,k]: I – номер разбиения, k – число квадратов в разбиении

Величина элемента массива число в разбиении на квадраты.

hh – максимальное число разбиений на квадраты при заданном ss

zz –максимальное число с максимальным разбиением на квадраты.

x1и x2 – усредненные показатели[/color]

Скачать программу Xkvadrat (Delphi)

https://yadi.sk/d/cESXKcBCUh0ltw

Предполагается, что возможно повезёт,и из расчётов, выявятся какие либо закономерности.

Разбиение чисел на квадраты

КОМЕНТАРИИ К ПРОГРАММАМ

https://fguploniis.mybb.ru/viewtopic.php?id=788

/||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

[size=20][color=maroon]В 1770 году Лагранж дал нам теорему.

В современной форме:

А.А. Бухштаб

Теория чисел

Теорема 303. (Лагранж) Каждое натуральное число представимо в виде суммы четырёх квадратов целых чисел.

[/color][/size]

[size=20][color=blue]Лагранж засчитывал и квадраты нуля.

[/color][/size]

[size=20][color=purple]Любопытно.

А что будет, если исключить квадраты нуля?

Условное название: разбиение А.

Разработана программа 4 kvadrat.

Программа отыскивает все возможные Разбиения А.

Вычисления.

Рассчитано разбиение совокупности целых чисел от 1 до 1500.

Результат.

1. Наибольшее число без Разбиения А – 128.

2. Среди 1500 чисел наибольшее число разбиений – 81 для 1470.

3. Вычислены средние числа разбиений: x1 и x2.[/color][/size]

[size=20][color=green]Скачать программу 4 kvadrat

https://yadi.sk/d/3mkh6ZYI3Xm7rQ[/color][/size]

//////////////////////

|}}}}}}}}}}}}}}}

[size=20][color=maroon]В развитие программы 4 kvadrat разработана программа 5 kvadrat.

Вместо 4 квадратов число разбивается на 5 квадратов.

Условное название: разбиение В.

Программа отыскивает все возможные Разбиения В.

Вычисления.

Рассчитано разбиение совокупности натуральных чисел от 1 до 1500.

Результат.

1. Наибольшее число без Разбиения В среди 1500 натуральных числе – 33.

2. Среди натуральных 1500 чисел наибольшее число разбиений – 332 для 1459 .

3. Вычислены средние числа разбиений: x1 и x2.

[/color][/size]

5 kvadrat

u1[ww]=--126------p=--1500------k=--166------w=--38------x1=--098,333------x2=--170,789

4 kvadrat

u1[ww]=--54------p=--1500------k=--48------w=--38------x1=--021,205------x2=--044,038

3 kvadrat

u1[ww]=--9------p=--1499------k=--0------w=--38------x1=--003,461------x2=--010,318

[size=20][color=green]Скачать программу 5 kvadrat.[/color][/size]

https://yadi.sk/d/Pw8-Q0bH3XpSnX

|||||||||||||||||||||||||||||||||||||||||||

|||||||||||||||||||||||||||||||||||||||||||||||

В развитие программы 4 kvadrat разработана программа 1 kvadrat.

Вместо 4 квадратов число «разбивается» на 1 квадрат.

Условное название: разбиение Д.

Программа отыскивает все возможные Разбиения Д.

Вычисления.

Рассчитано разбиение совокупности натуральных чисел от 1 до 1500.

Результат.

1. Наибольшее число без Разбиения Д среди 1500 натуральных чисел – 0.

2. Среди 1500 чисел наибольшее число разбиений – 1 для 1444 .

3. Вычислены средние числа разбиений: x1 и x2.

5 kvadrat

u1[ww]=--126------p=--1500------k=--166------w=--38------x1=--098,333------x2=--170,789

4 kvadrat

u1[ww]=--54------p=--1500------k=--48------w=--38------x1=--021,205------x2=--044,038

3 kvadrat

u1[ww]=--9------p=--1499------k=--0------w=--38------x1=--003,461------x2=--010,318

2 kvadrat

u1[ww]=--1------p=--1493------k=--0------w=--38------x1=--000,389------x2=--002,787

1 kvadrat

u1[ww]=--1------p=--1444------k=--0------w=--38------x1=--000,025------x2=--001,619

[size=20][color=green]Скачать программу 1 kvadrat.[/color][/size]

https://yadi.sk/i/lEGrhgbK3YAqi7

||||||||||||||||||||||||||||||||||||

|||||||||||||||||||||||||||||||||||||

В развитие программы 4 kvadrat разработана программа 1 kvadrat.

Вместо 4 квадратов число «разбивается» на 1 квадрат.

Условное название: разбиение Д.

Программа отыскивает все возможные Разбиения Д.

Вычисления.

Рассчитано разбиение совокупности натуральных чисел от 1 до 1500.

Результат.

  1. Наибольшее число без Разбиения Д среди 1500 натуральных чисел – 0.
  2. Среди 1500 чисел наибольшее число разбиений – 1 для 1444 .
  3. Вычислены средние числа разбиений: x1 и x2.

5 kvadrat

u1[ww]=--126------p=--1500------k=--166------w=--38------x1=--098,333------x2=--170,789

4 kvadrat

u1[ww]=--54------p=--1500------k=--48------w=--38------x1=--021,205------x2=--044,038

3 kvadrat

u1[ww]=--9------p=--1499------k=--0------w=--38------x1=--003,461------x2=--010,318

2 kvadrat

u1[ww]=--1------p=--1493------k=--0------w=--38------x1=--000,389------x2=--002,787

1 kvadrat

u1[ww]=--1------p=--1444------k=--0------w=--38------x1=--000,025------x2=--001,619

Скачать программу 1 kvadrat.

https://yadi.sk/d/scvFLwmD3YAome

???????????????????????????????????????????????

[color=maroon][size=20]Людям свойственно стремление познать новое.

Гении типа Эйлера делают это без особых усилий.

Остальные с трудом.

Но сейчас нашему мозгу может помочь компьютер.

Так, например, меня заинтересовала проблема разбиения числа на произведение четырёх чисел (квадраты).

Например, разбиение на 5 квадратов.

a = qwen+ asdm+zxcv+yuib+hjkg

Каждый квадрат отличается, хотя одним сомножителем.

Разработана программа Xkvadrat.

Заменяет ранее выставленные программы.

Задается последовательность чисел.

Минимальное uu, максимальное d.

Для каждого числа в этом диапазоне проверяется возможность разбиения на заданное число квадратов – ss.

Число ss задается в диапазоне от 1 до 10.[/size][/color]

[color=purple]Результаты расчётов:

Массив u1 : array [1.. d]

u1 : число разбиений на квадраты числа i.

Массив ua : array [1.. 5, 0..1000]

ua[1,j]: число разбиений, ua[2,j]: сумма разбиений

Массив ub : array [1..100, 1..30]

ub[i,1]………ub[i,k]: I – номер разбиения, k – число квадратов в разбиении

Величина элемента массива число в разбиении на квадраты.

hh – максимальное число разбиений на квадраты при заданном ss

zz – максимальное число с максимальным разбиением на квадраты.

x1 и x2 – усредненные показатели[/color]

Скачать программу Xkvadrat (Delphi)

https://yadi.sk/d/cESXKcBCUh0ltw

Предполагается, что возможно повезёт, и из расчётов, выявятся какие либо закономерности.

#54 
alek4 старожил14.03.25 14:48
NEW 14.03.25 14:48 
в ответ alek4 31.01.25 14:13

Разбиение числа на кубы

Комментарии к программам

https://fguploniis.mybb.ru/viewtopic.php?id=794

|||||||||||||||||||||||||||||||||||||||||||||

[size=20][color=maroon]Совокупность чисел напоминает звездное небо.

Что-то загадочное и непонятное.

Математики и астрономы создают из беспорядка удивительные теории.

Для любопытства создал программы для вычисления разбиения чисел на квадраты.

Это ветвь «Разбиения числа на квадраты».

Теперь очередь разбиения чисел на кубы.

От одного до семи.

Порядок вычислений тот же, что квадратов.

Результаты расчётов для разбиения на кубы 1-7.[/color][/size]

№ 1

u1[ww]=--1------p=--1331------k=--0------w=--11------x1=--000,007------x2=--001,198------kk=--11

№ 2

1[ww]=--1------p=--1458------k=--0------w=--11------x1=--000,038------x2=--000,907------kk=--5------rr=--11

№ 3

u1[ww]=--2------p=--1485------k=--0------w=--11------x1=--000,130------x2=--001,073------kk=--6------rr=--8vv=--9------tt=--0

№ 4

u1[ww]=--1------p=--1496------k=--0------w=--11------x1=--000,342------x2=--001,545------kk=--4------rr=--6rr=--6------vv=--610------tt=--10

№ 5

u1[ww]=--4------p=--1500------k=--2------w=--11------x1=--000,746------x2=--002,373

№ 6

u1[ww]=--5------p=--1500------k=--4------w=--11------x1=--001,416------x2=--003,637

№ 7

u1[ww]=--9------p=--1500------k=--2------w=--11------x1=--002,433------x2=--005,423

[size=20][color=green]Скачать

Программы [/color][/size]

kub 1 -kub 7

https://yadi.sk/d/b6b4yBwU3YKpVf

|||||||||||||||||||||||||||||||

|||||||||||||||||||||||||||||

[size=20][color=maroon]Людям свойственно стремление познать новое.

Гении типа Эйлера делают это без особых усилий.

Остальные с трудом.

Но сейчас нашему мозгу может помочь компьютер.

Так, например, меня заинтересовала проблема разбиениячислана произведение трёх чисел(кубы).

Например, разбиение на 5 кубов.

a = qwe+ asd+zxc+yui+hjk

Каждый куб отличается, хотя одним сомножителем.

Разработана программа Xcub.

Заменяет ранее выставленные программы.

Задается последовательность чисел.

Минимальное uu, максимальное d.

Для каждого числа в этом диапазоне проверяется возможность разбиения на заданное число кубов – ss.

Число ss задается в диапазоне от 1 до 10.[/color][/size]

[size=20][color=purple]Результаты расчётов:

Массивu1 : array [1.. d]

u1 : число разбиений на квадраты числа i.

Массивua : array [1.. 5, 0..1000]

ua[1,j]:число разбиений, ua[2,j]:суммаразбиений

Массивub : array [1..100, 1..30]

ub[i,1]………ub[i,k]: I – номер разбиения, k – число кубов в разбиении

Величина элемента массива число в разбиении на кубы.

hh – максимальное число разбиений на кубы при заданном ss

zz –максимальное число с максимальным разбиением на кубы.

x1и x2 – усредненные показатели

[/color][/size]

[size=20][color=green]Скачать программу Xcub[/color][/size]

https://yadi.sk/d/Chu4yjcqFZTJMQ

[size=20][color=blue]Предполагается, что возможно повезёт,и из расчётов, выявятся какие либо закономерности.

Например.[/color][/size]

ss = 10uu = 3

dhh

1000

2000

3001

4001

5001

10002

15004

20007

25009

300014

350016

400023

450027

500033

550041

600051

|||||||||||||||||||||||||||||||||||

|||||||||||||||||||||||||||||||||||||||||

#55 
alek4 старожил16.03.25 13:03
NEW 16.03.25 13:03 
в ответ alek4 31.01.25 14:13

Разбиение числа на числа в четвёртой степени

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

[size=20][color=maroon]Продолжение программcubiи chvadrati.

Исследуется разбиение числа на числа в четвертой степени.

От одного до 7.

Числа для разбиения 1 и более.

Результаты счёта для разбиений1 -7.[/color][/size]

1

u1[ww]=--1------p=--1296------k=--0------w=--6------x1=--000,004------x2=--001,081------kk=--6

2

u1[ww]=--1------p=--1377------k=--0------w=--6------x1=--000,012------x2=--000,640------kk=--3------rr=--6

3

u1[ww]=--1------p=--1458------k=--0------w=--6------x1=--000,026------x2=--000,533------kk=--3------rr=--3vv=--6------tt=--0

4

u1[ww]=--1------p=--1474------k=--0------w=--6------x1=--000,047------x2=--000,514------kk=--2------rr=--3rr=--3------vv=--36------tt=--6

5

u1[ww]=--1------p=--1493------k=--0------w=--6------x1=--000,075------x2=--000,535

6

u1[ww]=--1------p=--1494------k=--0------w=--6------x1=--000,107------x2=--000,577

7

u1[ww]=--1------p=--1495------k=--0------w=--6------x1=--000,145------x2=--000,633

[size=20][color=green]Скачать программы [/color][/size]


https://yadi.sk/d/i5mx9Gsn3YvFxa

|||||||||||||||||||

||||||||||||||||||||||||||||||||||||||

#56 
alek4 старожил17.03.25 11:52
NEW 17.03.25 11:52 
в ответ alek4 31.01.25 14:13

Случайные перестановки


|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

[size=20][color=blue]В задачах моделирования иногда требуется сгенерировать

случайную перестановку из d объектов.

Как понимать случайную?

Каким-то образом сгенерированы

все возможные перестановки.

Их d!

Пронумеруем, и случайным образом выбирается одна перестановка.

Проще так.

Случайно выбирается первый объект.

Из оставшегося множества второй объект и т.д.

Эти два способа интуитивно равнозначны.

По второму способу разработана маленькая программа:

+perectroika.

Вход: d – число объектов.

Объекты пронумерованы.

В строке 2 таблицы случайная перестановка.

Остальные данные вывода для понимания алгоритма.

Скачать программу[/color][/size]

https://yadi.sk/d/Z-7tdH2G3GZUtu

|||||||||||||||||||||||||||||||||||||||||||||||||

||||||||||||||||||||||||||||||||||||||||||||||||||


#57 
alek4 старожил18.03.25 17:24
NEW 18.03.25 17:24 
в ответ alek4 31.01.25 14:13

|

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||

[color=purple][size=30]Программа

«Построение случайного графа»[/size]

[/color]

[size=20][color=maroon]1.Общее[/color][/size]

Теория графов:это набор алгоритмов для вычисления разных характеристик графов.

Чтобы оценить алгоритмы, надо провести проверочные расчёты.

Для получения полезной информации расчёты следует проводить над однотипными графами.

Таким объектом могут быть случайные графы.

То есть графы параметры, которых имеют вероятностный вид.

Конкретно.

Есть граф G с n вершинами.

Случайным образом вводятся ребра (дуги).

Принято, что ребро соответствует двум противоположно направленным дугам.

По определенному порядку вводятся дуги.

Важнейшей характеристикой графа являютсястепени вершин.

Степень вершины это число ребёр, инцидентных вершине или число дуг исходящих (входящих) дуг.

Распределение степеней вершин зависит от алгоритма построения случайного графа.

Граф G – связный.

То есть между каждыми двумя вершинами есть путь из рёбер или однонаправленных дуг.

[size=20][color=maroon]2.Алгоритм – основной цикл[/color][/size]

Алгоритм построения случайного графа сходен с алгоритмом случайного дерева.

Построение случайного дерева

Исходное состояние: nподграфов.

По одной вершине в подграфе.

Далее случайным образом выбираются подграфыbи d.

К подграфуb присоединяются вершины подграфа d.

Между вершинами подграфов случайным образом вводятся по паре противоположно направленных дуг.

Обязательно между вершиной подграфаb и вершиной подграфаd не входившей в подграф b.

Так заполняется матрица смежности.

Между каждой парой вершин только одна пара противоположно направленных дуг.

Расчёты заканчиваются, если в подграфе n вершин.

[size=20][color=maroon]3.Алгоритм – суперцикл[/color][/size]

Для получения усредненных величин введен суперцикл.

На каждой итерации основного цикла выполняется основной цикл.

[size=20][color=maroon]4.Исходные[/color][/size]

n- число вершин графа

tt- допустимое число итераций основного цикла

x – число итераций суперцикла

CC -

[size=20][color=maroon]5.Вывод[/color][/size]

K – счетчик основного цикла

u:array [1..n, 1 ..n] - подграфы

p : array [1..n,1..n]- матрица смежности

uu :array [1..5*n] – величина k при формировании подграфа[color=green][/color]

r :array [1..n]- - суммарные степени вершин

s1:array [1..100, 1..2]- последовательность пар подграфов b и d

hh :array [1..x]- матрица вспомогательная

r1 : array [1..n]- усредненные степени вершин

ff: array [1..n]- матрица вспомогательная

r2 : array [1..n]- матрица вспомогательная

r3 : array [1..n] -матрица вспомогательная

Вспомогательные матрицы намечено использовать для изучения распределения степеней вершин

[size=20][color=maroon]6.Программа A Graf[/color][/size]

Программа на Дельфи 7

[size=20]Скачать[/size]

https://yadi.sk/d/5WZrbezfUEM7sg

#58 
anly патриот23.03.25 08:00
anly
NEW 23.03.25 08:00 
в ответ alek4 17.03.25 11:52, Последний раз изменено 23.03.25 08:01 (anly)

при попытке загрузки винда ругается

Проклят нарушающий межи ближнего своего (Втор.27:17)
#59 
alek4 старожил14.04.25 20:11
NEW 14.04.25 20:11 
в ответ alek4 31.01.25 14:13

«Моделирование отбора длялокусов в разных хромосомах»

Комментарии к программам

https://fguploniis.mybb.ru/viewtopic.php?id=486

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

[size=20]Программа:

«Моделирование отбора длялокусов в разных хромосомах»[/size]

[size=20]Вступление[/size]

Приводится описание программы моделирования одного гипотетического

варианта естественного отбора: Мутации в двух хромосомах.

[size=20]1. Естественный отбор [/size]

По Дарвину особи с полезными признаками, дают больше потомства.

Чаще, но не всегда,достигается или повышением плодовитости при сохранении времени жизни, или увеличением времени жизни при сохранении прежней плодовитости, или действуют оба фактора одновременно.

По Дарвину это и есть положительный отбор. Имеются в виду признаки, полученные при мутациях и передающиеся по наследству. Понятие альтруизма здесь не рассматривается. Наследование генов альтруизма рассмотрено в ветви: АЛЬТРУИЗМ. Генетика конкретизировала основу понятия «признак» - гены. Основные определения по генетике в приложениях 1 - 6. Каждый признак определяется определенным геном или комбинацией генов. Гены поразличным причинам мутируют. Мутация определенного гена порождает аллели этого гена.

А, следовательно, и новые признаки организма. Естественный отбор может происходить по разным вариантам.

Вариант 1. Гены мутируют. Последствия мутаций в одном гене могут быть: положительные, отрицательные и нейтральные. Положительные мутации в процессе сохраняютсявсё большего числа особей. Отрицательные мутации «вымываются».

Вариант 2. При совпадении нескольких определенных нейтральных мутаций в разных хромосомах организм приобретает новые признаки, способствующие увеличению численности таких организмов. Для исследования такого варианта отбора разработана программа «Моделирование естественного отбора длялокусов в разных хромосомах».

[size=20]2. Цель программы[/size]

В программе «Моделирование естественного отбора длялокусов в разных хромосомах» изучается ситуация. Некие существа размножаются половым путем. Для определенности: «мужчины» и «женщины». Название условное. Могут быть и кузнечики. От перемены местами мужчин и женщин задача не меняется. Сделано гипотетическое допущение. Особь, у которой в определенных хромосомах в заданных локусах расположенызаданные гены из списка аллель генов,получает преимущество перед другими особями: меньше вероятность смерти. Такие особи получают условное название: особи с геномом плюс(+). Моделируется половой процесс с обменом хромосом между родителями при зачатии. Выясняется, сколько должно произойти рождений и смертей, для преобладания в сообществе особей с геномом плюс.

Две хромосомы 1 и 2, одинаковы для мужчин и женщин.

Гены в хромосоме 1: x1 и x2.

Гены в хромосоме 2: y1 и y2.

Аллели генов x1 и x2: 1,2…,.c

Аллели генов y1 и y2: 1,2…,.c

Гены в хромосомах 1 и 2 различны.

В конкретной программе особыс аллелеями:

x1 = 1

x2 = 1

y1 = 2

y2 = 2

Названы особями с геномом +.

Они имеют меньшую вероятность смерти.

То есть могут за «жизнь» произвести больше потомства.

В исходном состоянии задается некоторое множество мужчин и женщин.

Мужчин p3, женщинp4.

Для первой позиции (особи) в соответствующем массиве задается геном +.

Для остальных геном случайно.

Далее имитируется процесс размножения.

До достижения количества мужчин и женщин соответственно: p1 и p2.

В примере программы

p1 = p2

p3 = p4

[size=20]3. Формат программы.[/size]

Программа составлена на DELPHI 7. Ввод исходных данных непосредственно в тексте программы. Для работы с программой необходимо установить DELPHI 7.

[size=20][color=red]Скачать

Дельфи 7[/color][/size]

https://yadi.sk/d/W3zk0vU2fJdZe

[size=20][color=red]Скачать программу A-2chr[/color][/size]

https://yadi.sk/d/42DrSMFQfcv8x

[size=20]3. Биологическая интерпретация[/size]

Программа имеет следующую биологическую интерпретацию.

На необитаемом острове появилась популяция из p3 – «мужчин» и p4 – «женщин».

Один мужчина и одна женщина имеют геном +.

Данный геном уменьшает вероятность смерти.

Популяция может из-за ограниченных ресурсов увеличить численность только до p1 – «мужчин» и p2 – «женщин».

Другой вариант вымереть.

В определенное время года происходит вымирание, в другой сезон размножение.

Задано ограничение на число лет существования популяции - kk

Определяется: какая доля особей через kk лет с геномом плюс среди живущих мужчин и женщин и среди потенциально возможного числа мужчин и женщин.

[size=20]4. Алгоритм[/size]

Алгоритм состоит из следующих блоков.

БЛОК ОКАНТОВКИ ТАБЛИЦ

БЛОК СУПЕРЦИКЛА

БЛОК СМЕРТЬ +РОЖДЕНИЕ

БЛОК СМЕРТЬ

БЛОК РОЖДЕНИЕ

БЛОК ВЫВОДА

[size=20]4.1. БЛОК ОКАНТОВКИ ТАБЛИЦ[/size]

Проставка номеров строк и столбцов

[size=20]4.2. БЛОК СУПЕРЦИКЛА[/size]

В ходе суперцикла повторяется:

БЛОК СМЕРТЬ+РОЖДЕНИЕ

.

Смысл суперцикла.

Данные по выполнению БЛОК СМЕРТЬ+РОЖДЕНИЕ

имеют большой вероятностный разброс.

Поэтому следует использовать усредненные данные по ходу выполнения суперцикла.

[size=20]4.3. БЛОК СМЕРТЬ+РОЖДЕНИЕ[/size]

Поочередно выполняются:

БЛОК СМЕРТЬ

БЛОК РОЖДЕНИЯ

Ограничениями служат:

Максимальное число мужчин – константа p1;

Максимальное число женщин – константа p2;

Заданное число итераций – константаkk.

Используется цикл while

[size=20]4.4. БЛОК СМЕРТИ[/size]

В ходе выполнения этого блока поочередно сканируются массивы мужчин и женщин.

С заданной вероятности имитируется смерть, то есть обнуление просканированных позиций массивов.

Для особей с геномом + устанавливается меньшая вероятность смерти.

Число проведения итераций БЛОК СМЕРТИ задается.

Константа t.

[size=20]4.4. БЛОК РОЖДЕНИЯ[/size]

В ходе выполнения БЛОК РОЖДЕНИЯ вначале определяется число рождений.

Если число мужчин превышает число женщин, число рождений задается долей от числа мужчин.

В противном случае число рождений- доля от числа женщин.

Рождение мужчины или женщины случайно.

Далее случайным образом выбирается пара мужчина – женщина.

Далее имитируется рождение новой особи.

Генотип определяется в соответствии с законом Менделя.

[size=20]4.5. Исходные данные[/size]

Исходные данные (const) вводятся непосредственно в тексте программы.

[size=20]5. Массивы и переменные[/size]

Основныемассивы. Массив исходных мужчин u1[1..k,1..p3,1..2], где: k – число пар гомологичных хромосом, комбинации которых исследуются. p3 – число мужчин на старте программы. Позиции 1 и 2 соответствуют аллелям гена в гомологичных хромосомах.

Все аллели гена для заданного локуса пронумерованы

от 1 до с.

Принято: число аллель генов для всех локусов одинаково. Константа c задается в исходных данных.

Задается также массив u2[1..k,1..p4,1..2].

Где p4 число женщин.

Также задаются числа, определяющие вероятность смерти, вероятность рождения мужчины или женщины, вероятность для выбора варианта комбинации генов мужчины и женщины у потомка.

В тексте программы задаются особи с геномом плюс.

В данном варианте программы по одной особи на позиции № 1.

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

ua[1..k,1..p3,1..2] и ub[1..k,1..p3,1..2], соответственно мужчины и женщины.

[size=20]6. БЛОК ВЫВОДА

[/size]

[size=20]6.1 Общее[/size]

Выводятся данные следующего вида:

А) Усредненные данные по всем итерациям суперцикла.

Б) Данные по первым 20 итерациям суперцикла

В) Данные по заданной итерации № ss суперцикла.

[size=20]6.1. Данные по совокупности суперцикла[/size]

Дано в разделе 7.

[size=20]6.2. Данные по 20 итерациям суперцикла:[/size]

Вывод массивы v[1..20], m[1..20] и d[1..20] соответственно для каждой итерации итог: число мужчин с геномом плюс, число мужчин и число незаполненных ячеек в массиве ua[1..20], то есть число потенциально возможных мужчин.

[size=20]6.3. Данные по заданной итерации суперцикла[/size]

Смотреть по тексту программы

[size=20]7. Результаты счета.[/size]

Предусмотрен вывод:

a: integer; // сумма мужчин за суперцикл

l: integer; // сумма отсутствия мужчин за суперцикл

v: integer; // сумма мужчин с геномом плюс за суперцикл

b: currency; // среднее число мужчин за суперцикл

l1: currency; //среднее число отсутствия мужчин за суперцикл

w: currency; среднее число мужчин с геномом плюс за суперцикл

g: currency; //за супер цикл. Отношение числа мужчин с геномом плюс к общему числу мужчин

g1: currency; // за супер цикл. Отношение числа мужчин с геномом плюс к потенциальномучислу мужчин

aa: integer; // сумма женщин за суперцикл

y1: integer; // сумма отсутствия сумма отсутствия женщин за суперциклза суперцикл

vv: integer; // сумма женщин с геномом плюс за суперцикл

bb: currency; // среднее число женщин за суперцикл

yy: currency; // среднее число отсутствия женщин за суперцикл

ww: currency; // среднее число женщин с геномом плюс за суперцикл

gg: currency; //за супер цикл. Отношение числа женщин с геномом плюс к общему числу женщин

gg1: currency; // за супер цикл. Отношение числа женщин с геномом плюс к потенциальномучислу женщин

gg2: integer; //число циклов суперцикла без вымирания для мужчин

gg3: integer; //число циклов суперцикла без вымирания для мужчин

r1: currency; //за суперцикл. Число циклов без вымирания для мужчин к общему числу циклов

r2: currency; //за суперцикл. Число циклов без вымирания для женщин к общему числу циклов

Имеются три варианта счета:

А) Вымирание: обнуление массивов ua[1..k,1..p1,1..2]и ub[1..k,1..p2,1..2] .

Б) Число элементов массивов ua[1..k,1..p1,1..2]и ub[1..k,1..p2,1..2] с геномом плюс в ходе расчётов существенно не изменились.

В) Число элементов массивов ua[1..k,1..p1,1..2]и ub[1..k,1..p2,1..2] с геномом плюс в ходе расчётов существенно увеличилось.

Интересен вариант В.

Иллюстрация эволюции.

Пример.

Исходные данные:

t = 1;// Число циклов смертей

kk = 1;// допустимое число циклов в основном цикле

p1 =2000;// Число мужчин- конечное(не более)

p2 = 2000; // Число женщин- конечное(не более)

p3 = переменная;//начальное число мужчин

p4 =переменная;//начальное число женщин

принято

p3 =p4

ff=5; // 1критерий для определения вероятностейсмерти

o3 = 2 ;//числодля расчёта рождений за цикл размножения (рождений) // наo3 делится числомужчин (женщин в текущий момент расчета)

fff = 20; // длярасчёта случайной величиныпри определении вероятности// смерти мужчин и женщин вне генома плюс

rr = 40 ; // для расчёта случайной величиныпри определении вероятности// смерти мужчин и женщин c геномом плюс

k = 2; // число независимо наследуемых генов

// размещены в неголомогичных хромосомах

c = 5; //число независимо наследуемых генов в расчете

sss =100; // число суперциклов

Ниже вывод для

p3 =p4: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30

b: currency; // среднее число мужчин за суперцикл

w: currency; среднее число мужчин с геномом плюс за суперцикл

g: currency; //за супер цикл. Отношение числа мужчин с геномом плюс к общему числу мужчин

g1: currency; // за супер цикл. Отношение числа мужчин с геномом плюс к потенциальномучислу мужчин

r1: currency; //за суперцикл. Число циклов без вымирания для мужчин к общему числу циклов

Результаты счёта

p3= p41bwgg1r1

1---891,26---891,26---1---0,4456---0,77

2---752,65---714,11---0,9487---0,3571---0,725

3---537,235---532,585---0,9913---0,2663---0,68

4---372,075---366,135---0,984---0,1831---0,645

5---265,49---261,89---0,9864---0,1309---0,6

6---220,29---219,275---0,9954---0,1096---0,53

7---173,2---172,055---0,9984---0,086---0,5

8---260,415---259,295---0,9957---0,1296---0,525

9---200,31---199,03---0,9936---0,0995---0,55

10---194,4---192,9---0,9923---0,0964---0,585

15---142,38---140,67---0,988---0,0703---0,6

20---99,335---97,59---0,9824---0,0488---0,58

25---111,91---109,55---0,9789---0,0548---0,56

30---142,3---139,8---0,9825---0,0699---0,58

35---88,395---86,355---0,5769---0,0432---0,59

40---93,26---90,495---0,9704---0,0452---0,58

50---95,885---92,33---0,929---0,0462---0,67

60---48,495---44,28---0,9131---0,221---0,695

70---86,67---80,21---0,9255---0,0401---0,759

80---80,27---71,505---0,8908---0,0358---0,79

90---34,945---24,325---0,691---0,0122---0,835

100---51,1---33,48---0,6552---0,0167---0,89

150---47,545---11,28---0,2372---0,0056---0,97

200---72,07---11,405---0,1582---0,0057---1

250---110,35---11,99---0,1087---0,006---1

300---144,59---10,45---0,0723---0,0052---1

[color=green]|||||||||||||||||||||||||||||||||||||||||||||||||[/color]

[size=20]Приложение 1[/size]

Основные принципы

Организм состоит из клеток. В клетках ядра. В ядрах хромосомы. Наборы хромосом почти во всех клетках одинаковы. Исключения половые клеткии красные кровяные тельца. Общее название совокупности хромосом – генотип организма. Каждая хромосома последовательность генов. Каждый ген кодирует определенную функцию организма. Например, синтез белка. Местоположения генов в хромосоме называется локусами. Вариантывариантов генов длякакого-либо локуса хромосомы носит название – аллеля. В диплоидном организме хромосомы образуют гомологичные пары. В хромосомах - гомологах местоположение локусов совпадают.

Каждая из хромосом гомологичной пары в каждом локусе имеет определенную аллелю гена. Аллели могут совпадать, а могут и отличаться. Исключение половые хромосомы.

Ниже они не рассматриваются. В одинаковых локусах хромосом - гомологов содержатся гены из списка аллель генов для данного локуса. Набор хромосом определяет построение и функции организма. Используется термин – фенотип. Фенотип определяется всеми хромосомами. В результате сложного процесса размноженияу потомка каждая пара хромосом гомологов состоит из одной хромосомы отца и из одной хромосомы матери. Множество пар хромосом сохраняется. Выбор одной из двух гомологичных хромосом родителей для потомка происходит случайным образом с вероятностью 0,5.

[color=green]||||||||||||||||||||||||||||||||||||||||||[/color]

[size=20]Приложение 2. [/size]

Законы комбинации аллелей при размножении в http://tigrasp.narod.ru/s-g3.html

[color=green]||||||||||||||||||||||||||||||||||[/color]

[size=20]Приложение 3[/size]

http://ru.wikipedia.org/wiki/Локус в биологии означает фиксированное положение (локализацию) на хромосоме, например, положение гена. Вариант последовательности ДНК в данном локусе называется аллелью. Упорядоченный перечень локусов для какого-либо генома называется генетической картой. Генное картирование — это определение локусa для специфического биологического признака.

Диплоидные или полиплоидные клетки, которые несут одинаковые аллели на каком-либо локусе называются гомозиготными по этому локусу, а те, которые несут различные аллели — гетерозиготными.

[color=green]||||||||||||||||||||||||||||||||||||||||||||||||||[/color]

[size=20]Приложение 4[/size]

http://ru.wikipedia.org/wiki/

Изучением генов занимается наука генетика, родоначальником которой считается Грегор Мендель, который в 1865 году опубликовал результаты своих исследований о передаче по наследству признаков при скрещивании гороха. Сформулированные им закономерности впоследствии назвали Законами Менделя.….В настоящее время, в молекулярной биологии установлено, что гены — это участки ДНК, несущие какую-либо целостную информацию — о строении одной молекулы белка или одной молекулы РНК. Эти и другие функциональные молекулы определяют развитие, рост и функционирование организма.

[color=green]||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||[/color]

[size=20]Приложение 5[/size]

http://dic.academic.ru/dic.nsf/enc_medicine/33962/Хромосомы

Хромосомы

(греч. chrōma цвет, окраска + sōma тело) основные структурно-функциональные элементы клеточного ядра, содержащие гены. Название «хромосомы» обусловлено их способностью интенсивно окрашиваться основными красителями во время деления клетки. Каждый биологический вид характеризуется постоянством числа, размеров и других морфологических признаков X. Хромосомный набор половых и соматических клеток различен. В соматических клетках содержится двойной (диплоидный) набор Х. который можно разделить на пары гомологичных (идентичных) хромосом, сходных по величине и морфологии. Один из гомологов всегда отцовского, другой— материнского происхождения. В половых клетках (гаметах) эукариот (многоклеточных организмов, в т.ч. человека) все хромосомы набора представлены в единственном числе (гаплоидный хромосомный набор). В оплодотворенной яйцеклетке (зиготе) гаплоидные наборы мужских и женских гамет объединяются в одном ядре, восстанавливая двойной набор хромосом. У человека диплоидный хромосомный набор (кариотип) представлен 22 парами хромосом (аутосом) и одной парой половых хромосом (гоносом). Половые хромосомы различаются не только по составу содержащихся в них генов, но и по своей морфологии. Развитие из зиготы женской особи определяет пара половых хромосом, состоящая из двух Х-хромосом, то есть ХХ-пара, а мужской — пара, состоящая из X-хромосомы и У-хромосомы, — то есть ХУ-пара.

[color=green]||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||[/color]

[size=20]Приложение 6[/size]

http://dic.academic.ru/dic.nsf/enc_psyc … оминантные

Доминантные и рецессивные гены (genetic dominance and recessiveness)

По иронии судьбы, о наследственности животных нам известно гораздо больше, чем о наследственности чел. Наследственность является результатом комбинаций генов. Гены — это биохимические функциональные элементы хромосом, определяющие потенциальный пол и др. признаки у зародыша. Хромосомы представлены парами в ядре каждого сперматозоида и каждой яйцеклетки. У чел. имеется 23 пары, или 46 хромосом, причем одну пару называют половыми хромосомами, потому что они определяют пол будущего организма. Клетки женского организма несут две Х-хромосомы, тогда как клетки мужского содержат одну Х- и одну Y-хромосому. Y-хромосома мельче по размеру и содержит меньше генов на своей поверхности, чем Х-хромосома.

В результате клеточного деления в яичниках все яйцеклетки содержат одну Х-хромосому, тогда как клеточное деление в яичках приводит к тому, что половина сперматозоидов содержит Х-хромосому, а др. их половина — Y-хромосому. Т. о., в половине случаев челов. яйцеклетка оплодотворяется сперматозоидами, несущими Х-хромосому, и еще в половине — сперматозоидами, несущими Y-хромосому, так что половина рождающихся в популяции детей должна бы иметь мужской пол, а половина — женский. (Мальчиков все же рождается чуть больше, но среди них и смертность выше, а потому соотношение полов быстро уравнивается; по мере того как дети становятся старше, соотношение полов сдвигается в сторону преобладания представительниц женского пола вследствие большей устойчивости женского организма к болезням.) ………………..X. К. Финк

«Моделирование отбора для локусов в разных хромосомах»

Комментарии к программам

https://fguploniis.mybb.ru/viewtopic.php?id=486

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

[size=20]Программа:

«Моделирование отбора для локусов в разных хромосомах»[/size]

[size=20]Вступление[/size]

Приводится описание программы моделирования одного гипотетического

варианта естественного отбора: Мутации в двух хромосомах.

[size=20]1. Естественный отбор [/size]

По Дарвину особи с полезными признаками, дают больше потомства.

Чаще, но не всегда, достигается или повышением плодовитости при сохранении времени жизни, или увеличением времени жизни при сохранении прежней плодовитости, или действуют оба фактора одновременно.

По Дарвину это и есть положительный отбор. Имеются в виду признаки, полученные при мутациях и передающиеся по наследству. Понятие альтруизма здесь не рассматривается. Наследование генов альтруизма рассмотрено в ветви: АЛЬТРУИЗМ. Генетика конкретизировала основу понятия «признак» - гены. Основные определения по генетике в приложениях 1 - 6. Каждый признак определяется определенным геном или комбинацией генов. Гены по различным причинам мутируют. Мутация определенного гена порождает аллели этого гена.

А, следовательно, и новые признаки организма. Естественный отбор может происходить по разным вариантам.

Вариант 1. Гены мутируют. Последствия мутаций в одном гене могут быть: положительные, отрицательные и нейтральные. Положительные мутации в процессе сохраняются всё большего числа особей. Отрицательные мутации «вымываются».

Вариант 2. При совпадении нескольких определенных нейтральных мутаций в разных хромосомах организм приобретает новые признаки, способствующие увеличению численности таких организмов. Для исследования такого варианта отбора разработана программа «Моделирование естественного отбора для локусов в разных хромосомах».

[size=20]2. Цель программы[/size]

В программе «Моделирование естественного отбора для локусов в разных хромосомах» изучается ситуация. Некие существа размножаются половым путем. Для определенности: «мужчины» и «женщины». Название условное. Могут быть и кузнечики. От перемены местами мужчин и женщин задача не меняется. Сделано гипотетическое допущение. Особь, у которой в определенных хромосомах в заданных локусах расположены заданные гены из списка аллель генов, получает преимущество перед другими особями: меньше вероятность смерти. Такие особи получают условное название: особи с геномом плюс(+). Моделируется половой процесс с обменом хромосом между родителями при зачатии. Выясняется, сколько должно произойти рождений и смертей, для преобладания в сообществе особей с геномом плюс.

Две хромосомы 1 и 2, одинаковы для мужчин и женщин.

Гены в хромосоме 1: x1 и x2.

Гены в хромосоме 2: y1 и y2.

Аллели генов x1 и x2: 1,2…,.c

Аллели генов y1 и y2: 1,2…,.c

Гены в хромосомах 1 и 2 различны.

В конкретной программе особы с аллелеями:

x1 = 1

x2 = 1

y1 = 2

y2 = 2

Названы особями с геномом +.

Они имеют меньшую вероятность смерти.

То есть могут за «жизнь» произвести больше потомства.

В исходном состоянии задается некоторое множество мужчин и женщин.

Мужчин p3, женщин p4.

Для первой позиции (особи) в соответствующем массиве задается геном +.

Для остальных геном случайно.

Далее имитируется процесс размножения.

До достижения количества мужчин и женщин соответственно: p1 и p2.

В примере программы

p1 = p2

p3 = p4

[size=20]3. Формат программы.[/size]

Программа составлена на DELPHI 7. Ввод исходных данных непосредственно в тексте программы. Для работы с программой необходимо установить DELPHI 7.

[size=20][color=red]Скачать

Дельфи 7[/color][/size]

https://yadi.sk/d/W3zk0vU2fJdZe

[size=20][color=red]Скачать программу A-2chr[/color][/size]

https://yadi.sk/d/42DrSMFQfcv8x

[size=20]3. Биологическая интерпретация[/size]

Программа имеет следующую биологическую интерпретацию.

На необитаемом острове появилась популяция из p3 – «мужчин» и p4 – «женщин».

Один мужчина и одна женщина имеют геном +.

Данный геном уменьшает вероятность смерти.

Популяция может из-за ограниченных ресурсов увеличить численность только до p1 – «мужчин» и p2 – «женщин».

Другой вариант вымереть.

В определенное время года происходит вымирание, в другой сезон размножение.

Задано ограничение на число лет существования популяции - kk

Определяется: какая доля особей через kk лет с геномом плюс среди живущих мужчин и женщин и среди потенциально возможного числа мужчин и женщин.

[size=20]4. Алгоритм[/size]

Алгоритм состоит из следующих блоков.

БЛОК ОКАНТОВКИ ТАБЛИЦ

БЛОК СУПЕРЦИКЛА

БЛОК СМЕРТЬ +РОЖДЕНИЕ

БЛОК СМЕРТЬ

БЛОК РОЖДЕНИЕ

БЛОК ВЫВОДА

[size=20]4.1. БЛОК ОКАНТОВКИ ТАБЛИЦ[/size]

Проставка номеров строк и столбцов

[size=20]4.2. БЛОК СУПЕРЦИКЛА[/size]

В ходе суперцикла повторяется:

БЛОК СМЕРТЬ+РОЖДЕНИЕ

.

Смысл суперцикла.

Данные по выполнению БЛОК СМЕРТЬ+РОЖДЕНИЕ

имеют большой вероятностный разброс.

Поэтому следует использовать усредненные данные по ходу выполнения суперцикла.

[size=20]4.3. БЛОК СМЕРТЬ+РОЖДЕНИЕ[/size]

Поочередно выполняются:

БЛОК СМЕРТЬ

БЛОК РОЖДЕНИЯ

Ограничениями служат:

Максимальное число мужчин – константа p1;

Максимальное число женщин – константа p2;

Заданное число итераций – константа kk.

Используется цикл while

[size=20]4.4. БЛОК СМЕРТИ[/size]

В ходе выполнения этого блока поочередно сканируются массивы мужчин и женщин.

С заданной вероятности имитируется смерть, то есть обнуление просканированных позиций массивов.

Для особей с геномом + устанавливается меньшая вероятность смерти.

Число проведения итераций БЛОК СМЕРТИ задается.

Константа t.

[size=20]4.4. БЛОК РОЖДЕНИЯ[/size]

В ходе выполнения БЛОК РОЖДЕНИЯ вначале определяется число рождений.

Если число мужчин превышает число женщин, число рождений задается долей от числа мужчин.

В противном случае число рождений - доля от числа женщин.

Рождение мужчины или женщины случайно.

Далее случайным образом выбирается пара мужчина – женщина.

Далее имитируется рождение новой особи.

Генотип определяется в соответствии с законом Менделя.

[size=20]4.5. Исходные данные[/size]

Исходные данные (const) вводятся непосредственно в тексте программы.

[size=20]5. Массивы и переменные[/size]

Основные массивы. Массив исходных мужчин u1[1..k,1..p3,1..2], где: k – число пар гомологичных хромосом, комбинации которых исследуются. p3 – число мужчин на старте программы. Позиции 1 и 2 соответствуют аллелям гена в гомологичных хромосомах.

Все аллели гена для заданного локуса пронумерованы

от 1 до с.

Принято: число аллель генов для всех локусов одинаково. Константа c задается в исходных данных.

Задается также массив u2[1..k,1..p4,1..2].

Где p4 число женщин.

Также задаются числа, определяющие вероятность смерти, вероятность рождения мужчины или женщины, вероятность для выбора варианта комбинации генов мужчины и женщины у потомка.

В тексте программы задаются особи с геномом плюс.

В данном варианте программы по одной особи на позиции № 1.

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

ua[1..k,1..p3,1..2] и ub[1..k,1..p3,1..2], соответственно мужчины и женщины.

[size=20]6. БЛОК ВЫВОДА

[/size]

[size=20]6.1 Общее[/size]

Выводятся данные следующего вида:

А) Усредненные данные по всем итерациям суперцикла.

Б) Данные по первым 20 итерациям суперцикла

В) Данные по заданной итерации № ss суперцикла.

[size=20]6.1. Данные по совокупности суперцикла[/size]

Дано в разделе 7.

[size=20]6.2. Данные по 20 итерациям суперцикла:[/size]

Вывод массивы v[1..20], m[1..20] и d[1..20] соответственно для каждой итерации итог: число мужчин с геномом плюс, число мужчин и число незаполненных ячеек в массиве ua[1..20], то есть число потенциально возможных мужчин.

[size=20]6.3. Данные по заданной итерации суперцикла[/size]

Смотреть по тексту программы

[size=20]7. Результаты счета.[/size]

Предусмотрен вывод:

a : integer; // сумма мужчин за суперцикл

l : integer; // сумма отсутствия мужчин за суперцикл

v : integer; // сумма мужчин с геномом плюс за суперцикл

b : currency; // среднее число мужчин за суперцикл

l1 : currency; // среднее число отсутствия мужчин за суперцикл

w : currency; среднее число мужчин с геномом плюс за суперцикл

g : currency; // за супер цикл. Отношение числа мужчин с геномом плюс к общему числу мужчин

g1 : currency; // за супер цикл. Отношение числа мужчин с геномом плюс к потенциальному числу мужчин

aa : integer; // сумма женщин за суперцикл

y1 : integer; // сумма отсутствия сумма отсутствия женщин за суперцикл за суперцикл

vv : integer; // сумма женщин с геномом плюс за суперцикл

bb : currency; // среднее число женщин за суперцикл

yy : currency; // среднее число отсутствия женщин за суперцикл

ww : currency; // среднее число женщин с геномом плюс за суперцикл

gg : currency; // за супер цикл. Отношение числа женщин с геномом плюс к общему числу женщин

gg1 : currency; // за супер цикл. Отношение числа женщин с геномом плюс к потенциальному числу женщин

gg2 : integer; // число циклов суперцикла без вымирания для мужчин

gg3 : integer; // число циклов суперцикла без вымирания для мужчин

r1 : currency; // за суперцикл. Число циклов без вымирания для мужчин к общему числу циклов

r2 : currency; // за суперцикл. Число циклов без вымирания для женщин к общему числу циклов

Имеются три варианта счета:

А) Вымирание: обнуление массивов ua[1..k,1..p1,1..2] и ub[1..k,1..p2,1..2] .

Б) Число элементов массивов ua[1..k,1..p1,1..2] и ub[1..k,1..p2,1..2] с геномом плюс в ходе расчётов существенно не изменились.

В) Число элементов массивов ua[1..k,1..p1,1..2] и ub[1..k,1..p2,1..2] с геномом плюс в ходе расчётов существенно увеличилось.

Интересен вариант В.

Иллюстрация эволюции.

Пример.

Исходные данные:

t = 1;// Число циклов смертей

kk = 1;// допустимое число циклов в основном цикле

p1 =2000;// Число мужчин - конечное (не более)

p2 = 2000; // Число женщин - конечное (не более)

p3 = переменная; // начальное число мужчин

p4 =переменная; // начальное число женщин

принято

p3 = p4

ff =5; // 1 критерий для определения вероятностей смерти

o3 = 2 ;// число для расчёта рождений за цикл размножения (рождений) // на o3 делится число мужчин (женщин в текущий момент расчета)

fff = 20; // для расчёта случайной величины при определении вероятности// смерти мужчин и женщин вне генома плюс

rr = 40 ; // для расчёта случайной величины при определении вероятности// смерти мужчин и женщин c геномом плюс

k = 2; // число независимо наследуемых генов

// размещены в неголомогичных хромосомах

c = 5; // число независимо наследуемых генов в расчете

sss =100 ; // число суперциклов

Ниже вывод для

p3 = p4: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 25, 30

b : currency; // среднее число мужчин за суперцикл

w : currency; среднее число мужчин с геномом плюс за суперцикл

g : currency; // за супер цикл. Отношение числа мужчин с геномом плюс к общему числу мужчин

g1 : currency; // за супер цикл. Отношение числа мужчин с геномом плюс к потенциальному числу мужчин

r1 : currency; // за суперцикл. Число циклов без вымирания для мужчин к общему числу циклов

Результаты счёта

p3= p4 1 b w g g1 r1

1---891,26---891,26---1---0,4456---0,77

2---752,65---714,11---0,9487---0,3571---0,725

3---537,235---532,585---0,9913---0,2663---0,68

4---372,075---366,135---0,984---0,1831---0,645

5---265,49---261,89---0,9864---0,1309---0,6

6---220,29---219,275---0,9954---0,1096---0,53

7---173,2---172,055---0,9984---0,086---0,5

8---260,415---259,295---0,9957---0,1296---0,525

9---200,31---199,03---0,9936---0,0995---0,55

10---194,4---192,9---0,9923---0,0964---0,585

15---142,38---140,67---0,988---0,0703---0,6

20---99,335---97,59---0,9824---0,0488---0,58

25---111,91---109,55---0,9789---0,0548---0,56

30---142,3---139,8---0,9825---0,0699---0,58

35---88,395---86,355---0,5769---0,0432---0,59

40---93,26---90,495---0,9704---0,0452---0,58

50---95,885---92,33---0,929---0,0462---0,67

60---48,495---44,28---0,9131---0,221---0,695

70---86,67---80,21---0,9255---0,0401---0,759

80---80,27---71,505---0,8908---0,0358---0,79

90---34,945---24,325---0,691---0,0122---0,835

100---51,1---33,48---0,6552---0,0167---0,89

150---47,545---11,28---0,2372---0,0056---0,97

200---72,07---11,405---0,1582---0,0057---1

250---110,35---11,99---0,1087---0,006---1

300---144,59---10,45---0,0723---0,0052---1

[color=green]|||||||||||||||||||||||||||||||||||||||||||||||||[/color]

[size=20]Приложение 1[/size]

Основные принципы

Организм состоит из клеток. В клетках ядра. В ядрах хромосомы. Наборы хромосом почти во всех клетках одинаковы. Исключения половые клетки и красные кровяные тельца. Общее название совокупности хромосом – генотип организма. Каждая хромосома последовательность генов. Каждый ген кодирует определенную функцию организма. Например, синтез белка. Местоположения генов в хромосоме называется локусами. Варианты вариантов генов для какого-либо локуса хромосомы носит название – аллеля. В диплоидном организме хромосомы образуют гомологичные пары. В хромосомах - гомологах местоположение локусов совпадают.

Каждая из хромосом гомологичной пары в каждом локусе имеет определенную аллелю гена. Аллели могут совпадать, а могут и отличаться. Исключение половые хромосомы.

Ниже они не рассматриваются. В одинаковых локусах хромосом - гомологов содержатся гены из списка аллель генов для данного локуса. Набор хромосом определяет построение и функции организма. Используется термин – фенотип. Фенотип определяется всеми хромосомами. В результате сложного процесса размножения у потомка каждая пара хромосом гомологов состоит из одной хромосомы отца и из одной хромосомы матери. Множество пар хромосом сохраняется. Выбор одной из двух гомологичных хромосом родителей для потомка происходит случайным образом с вероятностью 0,5.

[color=green]||||||||||||||||||||||||||||||||||||||||||[/color]

[size=20]Приложение 2. [/size]

Законы комбинации аллелей при размножении в http://tigrasp.narod.ru/s-g3.html

[color=green]||||||||||||||||||||||||||||||||||[/color]

[size=20]Приложение 3[/size]

http://ru.wikipedia.org/wiki/Локус в биологии означает фиксированное положение (локализацию) на хромосоме, например, положение гена. Вариант последовательности ДНК в данном локусе называется аллелью. Упорядоченный перечень локусов для какого-либо генома называется генетической картой. Генное картирование — это определение локусa для специфического биологического признака.

Диплоидные или полиплоидные клетки, которые несут одинаковые аллели на каком-либо локусе называются гомозиготными по этому локусу, а те, которые несут различные аллели — гетерозиготными.

[color=green]||||||||||||||||||||||||||||||||||||||||||||||||||[/color]

[size=20]Приложение 4[/size]

http://ru.wikipedia.org/wiki/

Изучением генов занимается наука генетика, родоначальником которой считается Грегор Мендель, который в 1865 году опубликовал результаты своих исследований о передаче по наследству признаков при скрещивании гороха. Сформулированные им закономерности впоследствии назвали Законами Менделя.….В настоящее время, в молекулярной биологии установлено, что гены — это участки ДНК, несущие какую-либо целостную информацию — о строении одной молекулы белка или одной молекулы РНК. Эти и другие функциональные молекулы определяют развитие, рост и функционирование организма.

[color=green]||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||[/color]

[size=20]Приложение 5[/size]

http://dic.academic.ru/dic.nsf/enc_medicine/33962/Хромосомы

Хромосомы

(греч. chrōma цвет, окраска + sōma тело) основные структурно-функциональные элементы клеточного ядра, содержащие гены. Название «хромосомы» обусловлено их способностью интенсивно окрашиваться основными красителями во время деления клетки. Каждый биологический вид характеризуется постоянством числа, размеров и других морфологических признаков X. Хромосомный набор половых и соматических клеток различен. В соматических клетках содержится двойной (диплоидный) набор Х. который можно разделить на пары гомологичных (идентичных) хромосом, сходных по величине и морфологии. Один из гомологов всегда отцовского, другой— материнского происхождения. В половых клетках (гаметах) эукариот (многоклеточных организмов, в т.ч. человека) все хромосомы набора представлены в единственном числе (гаплоидный хромосомный набор). В оплодотворенной яйцеклетке (зиготе) гаплоидные наборы мужских и женских гамет объединяются в одном ядре, восстанавливая двойной набор хромосом. У человека диплоидный хромосомный набор (кариотип) представлен 22 парами хромосом (аутосом) и одной парой половых хромосом (гоносом). Половые хромосомы различаются не только по составу содержащихся в них генов, но и по своей морфологии. Развитие из зиготы женской особи определяет пара половых хромосом, состоящая из двух Х-хромосом, то есть ХХ-пара, а мужской — пара, состоящая из X-хромосомы и У-хромосомы, — то есть ХУ-пара.

[color=green]||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||[/color]

[size=20]Приложение 6[/size]

http://dic.academic.ru/dic.nsf/enc_psyc … оминантные

Доминантные и рецессивные гены (genetic dominance and recessiveness)

По иронии судьбы, о наследственности животных нам известно гораздо больше, чем о наследственности чел. Наследственность является результатом комбинаций генов. Гены — это биохимические функциональные элементы хромосом, определяющие потенциальный пол и др. признаки у зародыша. Хромосомы представлены парами в ядре каждого сперматозоида и каждой яйцеклетки. У чел. имеется 23 пары, или 46 хромосом, причем одну пару называют половыми хромосомами, потому что они определяют пол будущего организма. Клетки женского организма несут две Х-хромосомы, тогда как клетки мужского содержат одну Х- и одну Y-хромосому. Y-хромосома мельче по размеру и содержит меньше генов на своей поверхности, чем Х-хромосома.

В результате клеточного деления в яичниках все яйцеклетки содержат одну Х-хромосому, тогда как клеточное деление в яичках приводит к тому, что половина сперматозоидов содержит Х-хромосому, а др. их половина — Y-хромосому. Т. о., в половине случаев челов. яйцеклетка оплодотворяется сперматозоидами, несущими Х-хромосому, и еще в половине — сперматозоидами, несущими Y-хромосому, так что половина рождающихся в популяции детей должна бы иметь мужской пол, а половина — женский. (Мальчиков все же рождается чуть больше, но среди них и смертность выше, а потому соотношение полов быстро уравнивается; по мере того как дети становятся старше, соотношение полов сдвигается в сторону преобладания представительниц женского пола вследствие большей устойчивости женского организма к болезням.) ………………..X. К. Финк

#60 
alek4 старожил14.04.25 20:36
NEW 14.04.25 20:36 
в ответ alek4 31.01.25 14:13

[size=30]Программа Б--АКСОН

[/size]

[size=20][color=maroon]1.Общее

2.Нейронная сеть – граф

3.Активность нейронов

4.Входной сигнал

5.Связи между нейронами

6.Итерации основного цикла

7.Итерации суперцикла

8.Скачивание программы Б--АКСОН

[/color][/size]

[size=20][color=maroon]1.Общее[/color][/size]

Программа Б-АКСОН – развитие программы --АКСОН

Разум у живого реализован на основе нейронных сетей.

То есть нейронов, передающих между собой сигналы повышения активности (связи +) и уменьшения активности (связи -).

Нейроны имеют отростки: аксоны и дендриты.

Передатчик сигналов: аксон, приемник: дендрит.

В технике появились аналоги нейронных сетей живого.

Общее название

Такие сети наследовали только общие принципы нейронных сетей живого.

Аналоги не связаны биологическими ограничениями.

Ниже будет описана программа Б--АКСОН.

Цель программ серии АКСОН.

Изучить функционирования нейронных сетей.

И построить нейронную сеть с четким соответствием: входной сигнал – выходной сигнал.

Разумеется, имеется много вариантов анализа выходных сигналов.

Программы серии АКСОН.

Программа АКСОН.

Между нейронами только сигналы увеличения активности.

Входные сигналы – положительные.

Введена функция забывания, уменьшения активности нейронов со временем.

Программа в ветви «Комментарии к Программам».

Программа +- Аксон

Связи между нейронами + и -.

Входные сигналы +.

Программа –-АКСОН.

Связи между нейронами + и -.

Входные сигналы +и -.

Программа Б-АКСОН.

Связи между нейронами + и -.

Входные сигналы +и -.

Добавлена функция.

Расчёт для серии входных сигналов.

[size=20][color=maroon]2. Нейронная сеть – граф[/color][/size]

Нейронной сети соответствует ориентированный граф – орграф.

Нейрону ставится в соответствие вершина орграфа.

Ниже нейрон и вершина графа одинаковое содержание.

Число вершин – const: n.

Дуга между вершинами соответствует связи аксон – дендрит.

Дуга из вершины i в вершину j соответствует связи аксон – дендрит.

Между каждой парой может в каждом направление быть несколько дуг или не одной.

Число дуг случайная или постоянная величина.

Орграф может быть полносвязным.

Из каждой вершины можно достичь всех вершин по ориентации (направлению) дуг.

Орграф может быть частично связным, когда одни вершины имеют пути ко всем другим вершинам, другие только к части вершин. При построении орграфа в конкретной задаче проверка связности графа не проводилась. Для отдельных пар вершин по одному или двух направлениях случайным образом в конкретной программе задавалось отсутствие связи: const m.

[size=20][color=maroon]3. Активность нейронов[/color][/size]

Каждому нейрону при расчётах присваивается вес.Вес может быть со знаком плюс или минус. В конкретной программе вес – положительная величина не более const z или отрицательная величина не менее const z1.

[size=20][color=maroon]4. Входной сигнал[/color][/size]

В конкретной программе предусмотрены два вида входного сигнала.

Вес случайный и вес постоянный.

Переключатель: const k.

К = 1 – случайный входной сигнал: const a1

a1>0.

Диапазон: 0 – а1-1.

К = 2 – постоянный входной сигнал: const a2.

a2>0.

Входной сигнал подается одного веса на несколько нейронов.

Период подачи – переменная переменная ij.

Изменение ij в диапазоне v1 – v.

Входной сигнал – матрица f[1..n].

f – величина входного сигнала на нейрон –i.

[size=20][color=maroon]5. Связи между нейронами[/color][/size]

Связи между нейронами – матрица s[1..n,1..n].

Переключатель вида матрицы s[1..n,1..n].- pp.

pp =1

Вес элементов вероятностный в диапазоне 0 – a3-1.

a3>0.

pp =2

Вес элементов постоянный – a4.

Задаются нулевые связи между нейронами: const m.

Задаются положительные и отрицательные связимежду нейронами: const nn.

a4>0.

[size=20][color=maroon]6. Итерации основного цикла[/color][/size]

В работы программы по основному цикл, переменная i, последовательно заполняется матрица p[1..t1,1..n].

p[i,j] – вес нейрона j после итерации i.

Итерация.

Вес каждого нейрона увеличивается или уменьшается на сумму дуг в соответствии с матрицей s[1..n,1..n] от нейронов весом отличного от нуля.

Если вес нейрона при итерации превышает const z, весанейрона равен z.

Если сумма дуг с учётом знака менее const z1,вес нейрона равен z1.

Максимальное число итераций - const t1.

Если в ходе выполнения итераций на трех последовательных итерациях вес всех нейронов не меняется, вычисления заканчиваются.

Фиксируется ww = i-1.

[size=20][color=maroon]7. Итерации суперцикла[/color][/size]

Переменная суперцикла ij.

В ходе итераций суперцикла выполняются итерации основного цикла.

Диапазон изменения ij: v1 –v.

Заполняется массив s1[1..n].

Элемент s1 равен частному от деления на число нейронов – n суммы элементов строки wwматрицы p[1..n,1..n] при i =ij.

[size=20][color=maroon]8. Скачиваниие программы Б--АКСОН[/color][/size]

Программа АКСОН на Дельфи 7.

Ввод в программе –const.

Распечатка программы в WORD: Приложение 1.[/color][/size]

Для скачивания вариант с постоянными величинами вероятностей при разных входах в программу.

//initialization

//randomize;

Входные сигналы только с сигналом +.

Со знаком - заблокированы

Скачать программу Б--АКСОН

https://yadi.sk/d/ouwjDuZUQLzgVA

[size=20][color=maroon]Приложение 1[/color][/size]

программа WORD

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls;

type

TForm1 = class(TForm)

StringGrid1: TStringGrid;

Button1: TButton;

Button2: TButton;

Button3: TButton;

Button5: TButton;

Label1: TLabel;

StringGrid2: TStringGrid;

StringGrid3: TStringGrid;

StringGrid4: TStringGrid;

Button4: TButton;

Edit1: TEdit;

Edit2: TEdit;

Label4: TLabel;

Edit3: TEdit;

Label2: TLabel;

Label3: TLabel;

Label7: TLabel;

Label6: TLabel;

Edit4: TEdit;

procedure Button1Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

const

n =300;// ÷ число нейронов

t1 =1500 ;//максимальное число итераций

a1 = 200;//абсолютный вес связи:аксон - дендрит

//вероятностное задание веса

a2 = 300;// абсолютный вес связи: аксон - дендрит

// вес постоянный

a3 =200;// вес входного сигнала

//вероятностное задание веса

a4=200 ;// постоянный вес входного сигнала

k=1 ;//переключатель связи аксон - дендрит

pp=1;//переключатель входного сигнала

v1 = 1;//

v=100;//формирование входного сигнала

//периодичность нулей

m=15;// отсутствие связи между нейронами

z= 300;// максимальный вес нейрона

z1= -300;// минимальный вес нейрона

nn=4;// связь аксон - дендрит

vv =5;// +- входной сигнал

jj = 7 ;// вывод входного сигнала ij = jj

var

Tick: Cardinal;

s:array [1..n, 1 ..n] of integer;// связи аксон - дендрит

p : array [1..t1,1..n] of integer;// состояние нейронов

f :array [1..n] of integer;// состояние входного сигнала

s1 : array [v1..v] of real; //

s2 :array [v1..v] of integer;//

s3 :array [v1..v] of integer;//

a, u, x,x1, c, b1,d1, t,d, g, q,i,j,h,i1,i2,hh : integer; //

j1,j2,j3,j4,j5,j6,j7,j8, i3,i4,i5,i6,i7,i8,i0: integer; //

w, e, e1, z2, z3: integer;//

m1 ,m2,m3,m4,m5, m6,m7 ,m8,m9,m10: integer;//

t3: integer;

ia, ib,ic, id ,it,iw, iu, ju, ja, jb, jc, jd ,jt, jw, ij : integer;//

zz ,ss,ww, sss, uu ,u1,u2,u3:integer;//

r, r1, r2, r3, r4, r5, r6:integer;//

ff ,tt ,c1, g1,cc,ccc, mm , kk:integer;//

l1, l2 ,l3,l4, r7, r8, r9: variant;//

p1,p2,p3,p4,p5,p6: real ; //

procedure TForm1.Button1Click(Sender: TObject);

// îêàíòîâêà

begin

for q:=1 to n //нумерация в горизонтали в табл. № 1 ,

do StringGrid1.Cells[q,0]:=IntToStr(q);

for q:=1 to 5// нумерация по вертикали в табл. № 1 ,

doStringGrid1.Cells[0,q]:=IntToStr(q);

for q:=1 to n // нумерация в горизонтали в табл. № 2

do StringGrid2.Cells[q,0]:=IntToStr(q);

for q:=1 to t1// нумерация по вертикали в табл. № 2

doStringGrid2.Cells[0,q]:=IntToStr(q);

for q:=1 to n // нумерация в горизонтали в табл. № 4

do StringGrid4.Cells[q,0]:=IntToStr(q);

for q:=1 to n// нумерация по вертикали в табл. № 4

doStringGrid4.Cells[0,q]:=IntToStr(q);

for q:=1 to n // нумерация в горизонтали в табл. № 3

do StringGrid3.Cells[q,0]:=IntToStr(q);

for q:=1 to n// нумерация по вертикали в табл. № 3

doStringGrid3.Cells[0,q]:=IntToStr(q);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

// формирование матрицы s

for i:=1 to n do

for j:= 1 to n do

if i<>jthen

begin

if k=1 thenbegin//a

s[i,j] := random ( a1);

mm:= random (nn);

if mm = 0 then s[i,j] := (- s[i,j]);

h:= random (m);

if h>3 then s[i,j] := 0;

end;//a

if k=2 thenbegin//b

s[i,j] := a2;

mm:= random (nn);

if mm = 0 then s[i,j] := (- s[i,j]);

h:= random (m);

if h>3 then s[i,j] := 0;

end;end;//b

for iu :=1 to n do

for ju := 1 to n do

begin

if s[iu,ju] >0 then u1 := u1 +1;

if s[iu,ju] =0 then u2 := u2 +1;

if s[iu,ju] <0 then u3 := u3 +1;

end;

//суперцикл

for ij := v1 to v do

// формирование входного сигнала

begin

m8:=0;m9:=0; m10 :=0;c:=0;r7:=0; r8:=0;w:=0;

for i:=1 to ndo

for j:=1 to ndo

p[i,j] := 0;

if pp = 1 then

for j:= 1 to n dobegin

W:=w+1;

f[j] := random ( a3);

hh:= random (vv);

d:=w mod ij ;

if d> 0 then f[j] := 0;

//if hh>3 then f[j] := -f[j];

end;

if pp=2 then

for j:=1 to ndo

begin

W:=w+1;

d:=w mod ij ;

if d = 0 then f[j] :=a4;

if d> 0 then f[j] := 0;

hh:= random (vv);

// if hh>3 then f[j] := -f[j];

end;

if ij = jj then

for j:= 1 to ndo

StringGrid1.Cells[j,1]:=

IntToStr( f[j]);

for jw :=1 to n dobegin

if f[jw]>0 then m8 := m8+1;

if f[jw]=0 then m9 := m9+1;

if f[jw]<0 then m10 := m10+1;

end;

// основной цикл

for j:=1 to ndo begin

p[1,j] := f[j] ;

end;

//основной цикл

for i:=1tot1 do

begin

c:= c+1;

if i>= 2 then begin

for ia:= 1 to n do

for ib := 1 to ndo

ifp[i-1,ib] <> 0

then if ib<>ia then

p[i,ia]:=p[i-1,ia]+ s[ib ,ia];

for it := 1 to ndobegin

if p[i,it]>z thenp[i,it]:=z;

if p[i,it]<z1 thenp[i,it]:=z1;

end;

kk:=0;

for iw:=1 to ndo

if(( p[c-3,iw]<>p[c-1,iw] )

or(p[c-1,iw]<>p[c,iw]) )then kk :=1;

if (kk =0)then begin uu:=777;ww:=c-1; break;end;

end;

end;

Form1.Caption:=IntToStr(GetTickCount-Tick);

for ic:=1 to ndobegin

if p[c-3,ic]= 0 then u:= u +1;

if p[c-3,ic]=z then x:= x +1;

if p[c-3,ic]=z1 then x1:= x1 +1;

ifp[c-3,ic]= a3 then ccc:= ccc +1;

if( ((p[c-3,ic]<>0) and ( p[c-3,ic]<>z))

and((p[c-3,ic]<>a3 ) and (p[c-3,ic]<>z1)) )

then g1:= g1+1;

if p[c,ic]= 0 then r:= r +1;

if p[c,ic]= z then e:= e +1;

if p[c,ic]= z1 then e1:= e1 +1;

ifp[c,ic]= a3 then cc:= cc +1;

if(((p[c,ic]<>0) and ( p[c,ic]<>z))

and((p[c,ic]<>a3 ) and ( p[c,ic]<>z1)))

then g:= g+1;

end;

t:= u+x+ccc+g;

for i:=1 to n do

for j:=1 to n do

begin

if s[i,j] = 0 then m1 := m1+1;

if s[i,j] >0 then m2 := m2+1 ;

if s[i,j] < 0 then m3 := m3+1 ;

if s[i,j] >0 then m4 := m4+s[i,j];

if s[i,j] <0 then m5 := m5+s[i,j];

END;

m7 := m1+m2+m3;

l1:=r/n;

l2:= e/n;

l3 := cc/n;

l4 := g/n;

r7:=0; r8 :=0;

for i:=1 to ndobegin

r7 := r7+ p[ww,i];

r8 := r8+ p[ww,i]*p[ww,i];

end;

p1:= r7/n;

p2:= r8/n;

p3:= Sqrt(p2);

s1[ij] := p1;

s2[ij] := ij;

s3[ij] := ww;

end;

for i:=1 to ndo

for j:=1 to ndo

StringGrid4.Cells[j,i]:=

IntToStr( s[i,j]);

for i:=1 to t1do

for j:= 1 to ndo

StringGrid2.Cells[j,i]:=

IntToStr( p[i,j]);

for j:= 1 to ndo

begin

StringGrid3.Cells[j,1]:=

FormatFloat('0.00',s1[j]);

StringGrid3.Cells[j,2]:=

IntToStr( s2[j]);

StringGrid3.Cells[j,3]:=

IntToStr( s3[j]);

end;

Edit1.Text := 'm='+'---'+IntToStr(m)+''+

'n='+'---'+IntToStr(n)+''+

't1='+'---'+IntToStr(t1)+''+

'a1='+'---'+IntToStr(a1)+''+

'a2='+'---'+IntToStr(a2)+''+

'a3='+'---' +IntToStr(a3)+''+

'k='+'---' +IntToStr(k)+''+

'nn='+'---' +IntToStr(nn) +''+

'v='+'---' +IntToStr(v)+''+

'c='+'---' +IntToStr(c) +''+

'z='+'---' +IntToStr(z)

+''+

'm8='+'---' +IntToStr(m8)+''+

'm9='+'---' +IntToStr(m9) +''+

'm10='+'---' +IntToStr(m10);

Edit2.Text := 'r='+'---'+IntToStr(r)+''+

'e='+'---'+IntToStr(e)+'' +

'e1='+'---'+IntToStr(e1)+'' +

'cc='+'---'+IntToStr(cc)+'' +

'g='+'---'+IntToStr(g)+'' +

't='+'---'+IntToStr(t)+'' +

'u='+'---'+IntToStr(u)+'' +

'x='+'---'+IntToStr(x)+'' +

'x1='+'---'+IntToStr(x1)+'' +

'ccc='+'---'+IntToStr(ccc)+'' +

'g1='+'---'+IntToStr(g1)

+''+

'ff='+'---'+IntToStr(ff)

+'' +

'u1='+'---'+IntToStr(u1)+'' +

'u2='+'---'+IntToStr(u2)

+''+

'u3='+'---'+IntToStr(u3);

Edit3.Text :=

'l1='+'---'+FormatFloat('0.000',l1)+'' +

'l2='+'---'+FormatFloat('0.000',l2)+'' +

'l3='+'---'+FormatFloat('0.000',l3) +'' +

'l4='+'---'+FormatFloat('0.000',l4) +'' +

'tt='+'---'+IntToStr(tt)+'' +

'uu='+'---'+IntToStr(uu)+''+

'ww='+'---'+IntToStr(ww)+''+

'm1='+'---'+IntToStr(m1)+'' +

'm2='+'---'+IntToStr(m2)+'' +

'm3='+'---'+IntToStr(m3)+'' +

'm4='+'---'+IntToStr(m4)+'' +

'm5='+'---'+IntToStr(m5)

+'' +

'm7='+'---'+IntToStr(m7);

Edit4.Text :=

'r7='+'---'+IntToStr(r7)+'' +

'r8='+'---'+IntToStr(r8)

+'' +

'p1='+'---'+FormatFloat('0.000',p1) +'' +

'p2='+'---'+FormatFloat('0.000',p2)

+'' +

's1[v1]='+'---'+FormatFloat('0.000',s1[v1])

+'' +

's1[v1+1]='+'---'+FormatFloat('0.000',s1[v1+2])

+'' +

's1[v-1]='+'---'+FormatFloat('0.000',s1[v-1])

+'' +

's1[v]='+'---'+FormatFloat('0.000',s1[v]);

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

end;

////////////////////////////////////////////////////////////////

procedure TForm1.Button5Click(Sender: TObject);

begin

close

end;

//initialization

//randomize;

end.

#61 
7495 коренной житель14.04.25 20:38
7495
NEW 14.04.25 20:38 
в ответ alek4 14.04.25 20:11

Дед, если бы ты хотел обсудить свои программы, другое дело. А так тонны непонятного мусора, с битыми ссылками.


Ты ссылки то свои хоть проверяй. Какой смысл? Как на всём этом можно заработать? Объясняй дед, пока живой...


Вопросы и Ответы - Программируем калькулятор пособий для беженцев вместе.
#62 
alek4 старожил15.04.25 11:58
NEW 15.04.25 11:58 
в ответ alek4 31.01.25 14:13

////////////////////////////////////////////////////////////////////////////////////////////////////

[size=28][color=red]Программа «2МЕДИАНА»[/color][/size]

[size=20][color=maroon]

Предисловие

1. Определения

2.Математика

3. Структура программы

4. Алгоритм программы по части 1

5.Алгоритм программы по части2

6.Алгоритм программы по части3

7. Вывод

8. Результат

9. Скачать программу «2Медиана»

Приложение 1

Распечатка программы «2МЕДИАНА»

[/color][/size]

[size=20][color=maroon] ПРЕДИСЛОВИЕ[/color][/size]

В дереве исследуется вершина с minmax расстоянием до вершин дерева.

Проведено моделирование и расчёт по формуле.

[size=20][color=maroon]

1. Определения. [/color][/size]

Дерево - связный граф без циклов.

Смежные вершины связаны неориентированным ребром или двумя противоположно направленными дугами.

В зависимости от решаемой задачи используются оба варианта.

Висячая вершина, вершина инцидентная только одному ребру (паре дуг).

Расстояние между двумя вершинами i и j равно сумме рёбер (дуг) по пути между этими вершинами.

Обозначается, как l(i,j).

Новая вершина дерева вводится на ребре между двумя смежными вершинами исходного дерева.

Если исходные вершины i и j, то для вновь введенной вершины k выполняется

l(l ,k) + l(k, j) = l(i, j)

[size=20][color=maroon]

2. Математика [/color][/size]

2.1. Медиана дерева.

Медиана - вершина исходного дерева или новая вершина, максимальное расстояние которой до остальных вершин дерева– минимально.

2.2. Нахождение медианы

Для нахождения медианы использован следующий алгоритм.

Шаг 1. Произвольно выбирается одна из висячих вершин - А

Шаг 2. Из вершины А определяетсярасстояние (сумма длин рёбер)до всех висячих вершин.

Шаг 3. Находится вершина Б с максимальным расстояниемl(А –Б).

Если таких вершиннесколько выбирается произвольно одна .

Шаг 4. Находится вершина В с максимальным расстоянием l(Б-В).

Шаг 5. Медиана есть вершина Г, которая лежит на пути Б-В и

l(Б,Г)= l(Г,В)=zg.

[size=20][color=maroon]

3. Структура программы [/color][/size]

3.1. Три части программы

Программа 1МЕДИАНА из трёх частей.

Часть 1

Программа «А - дерево» формирует случайное дерево.

Программа А-Дерево по ссылке

https://fguploniis.mybb.ru/viewtopic.php?id=1025

Часть 2

Находится вершина -медиана дерева.

Часть 3

Вычисление средних величин по циклам суперцикла.

Для набора статистики введен суперцикл.

Результаты суммируются и усредняются.

На каждом шаге суперцикла выполняются три операции.

А) Формируется случайное дерево ( Часть 1).

Б) Для случайного дерева находится медиана ( Часть 2).

По данным циклов суперцикла вычисляются средние величины (Часть 3)

3.3. Исходные данные для расчёта вводятся в текст программы (const)

Это:

x - число циклов суперцикла

n - число вершин исходного дерева

zs- задание средней длины ребра

at- корень степени

[size=20][color=maroon]

3. Алгоритм программы по части 1 [/color][/size]

Алгоритм программы по части 1 повторяет программу А-Дерево.

[size=20][color=maroon]

4.Алгоритм программы по части 2 [/color][/size]

Шаг 1

Вычисляется длины ребер (дуг) на основе средней длины ребра - zc.

Шаг 2

Выбирается случайно висячая вершина А (za)

Шаг 3

Находится вершина Б (zm).

l(А,Б) максимально по множеству вершин дерева

Построение матрицы pb

Матрица содержит информацию о направлении дуг при поиске расстояния от вершины А.

Для таких дуг, как метка, показана их длина.

Шаг 4

Находится вершина В(zf)

l(Б,В) максимально по множеству вершин дерева

Построение матрицы pc.

Матрица содержит информацию о направлении дуг при поиске расстояния от вершины Б.

Для таких дуг, как метка, показана их длина.

Шаг 5

Из вершины В определяется расстояниедо остальных вершин графа.

Находится вершина Б(zy).

l(В,Б) максимально по множеству вершин дерева

Построение матрицы pd.

Матрица содержит информацию о направлении дуг при поиске расстояния от вершины Б.

Для таких дуг, как метка, показана их длина.

Шаг 6

Находится матрица pv.

Матрица содержит только дуги по пути от Б к В и от В к Б.

Шаг 7

Находятся вершины на пути из Б в В.

Это осуществляется так.

Ведется поиск расстояний от В к Б только по дугам пути Б – В.

Шаг 8

Находится медиана – вершина x1.

Максимальное расстояние медианы до вершин дерева – zg.

Таких вершин две и более.

[size=20][color=maroon]

6.Алгоритм программы по части3 [/color][/size]

for i:=1 to x do

w1 := w1 + ww;

w2:= w1/x;

w3 := w2/(n);

w4:= w2/(zs);

w5:= w2/(zs*exp(1/at*ln(n)) );

На каждом цикле суперцикла находится величина zg .

zg = minmax l(x1, множество вершин дерева).

x1 - медиана

Сумма zg по всем циклам суперцикла - w1.

Усредненное по числу циклов - w2.

Усредненное по числу циклов и числу вершин дерева - w3.

Усредненное по числу циклов и средней длине ребра - w4.

Усреднено по числу циклов, средней длине ребра и делится на корень

1.75 (7/4)- w5.

Переменнаяw5 приx>50,zs>=10 и n>=100 слабо меняется при изменении n.

Отсюда принято

1,22 = zg:(zs * корень 1, 75 из n)

zg = 1,22 : (zs * корень 1, 75 из n) (1)

u1 расчёт zg по формуле (1).

u2 погрешность при расчётах по программе и по формуле.

u2 := (u1 - w2):u1;

[size=20][color=maroon]7.Вывод[/color][/size]

[color=blue][size=18]Выводятся следующие результаты в форме массивов

Переменных.

Назначение массивов в распечаткепрограммы – Приложение1.

Вывод переменных по расчёту медианы:

Edit 1 и Edit 2

Вывод переменных по расчёту случайного дерева:

Edit 3 и Edit 4

Основные переменные по

Вывод переменных по расчёту случайного дерева:

Edit 1 иEdit 2

Основные переменные по

Edit 1

y1=---0y2=---32y3=---88y4=---14y5=---72w2=---1131,700w3=---22,634w4=---11,317w5=---1,210u1=---1122,073u2=----0,009

Где

y1 – номер вершины, если медиана совпадает с вершиной.

И y=0, если не совпадает.

y2, y4 ребро, на котором введена медиана

y3, y5 длины ребер y2-медиана и медиана - y4

w2, w3, w4, w5, u1 u2 см. в разделе 6[/color=blue][/size=18]

[color=blue][size=18]Основные переменные по

Edit 2

za=---36zb=---18zc=---11zv=---11zn=---1442zm=---13zd=---2116zf=---14zg=---1058zq=---49zw=---49ze=---49zr=---2116zt=---0zy=---13x0=---113,15

za – вершина А

zn – l(А,Б)

zm – вершина Б

zf- вершинаВ

zd- l(Б,В)

zg -l(Б,В):2[color=blue][size=18]

[size=20][color=maroon]8.Результат[/color][/size]

Результаты расчёта по программе и формуле показали близкое совпадение.

Nu2

500,046

1000,008

2000,038

3000,029

4000,042

5000,069

600-0,021

700-0,007

800-0,012

900-0,002

1000-0,077

[size=20][color=maroon]

9. Скачать программу «2МЕДИАНА» [/size=20][/color=maroon]

https://disk.yandex.ru/d/b7WMbTGfVYohqg

////////////////

////////

[size=20][color=maroon]

Приложение 1 [/color][/size=20]

Распечатка программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Grids, StdCtrls;

type

TForm1 = class(TForm)

StringGrid1: TStringGrid;

Button1: TButton;

Button5: TButton;

Label1: TLabel;

StringGrid3: TStringGrid;

StringGrid4: TStringGrid;

Edit1: TEdit;

Edit2: TEdit;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label8: TLabel;

Label10: TLabel;

Edit3: TEdit;

Label11: TLabel;

StringGrid2: TStringGrid;

Label7: TLabel;

Label9: TLabel;

StringGrid5: TStringGrid;

StringGrid6: TStringGrid;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

Label15: TLabel;

Edit4: TEdit;

StringGrid7: TStringGrid;

Label16: TLabel;

StringGrid8: TStringGrid;

StringGrid9: TStringGrid;

Label17: TLabel;

Label18: TLabel;

Label19: TLabel;

StringGrid10: TStringGrid;

Label20: TLabel;

Label21: TLabel;

Label22: TLabel;

Label23: TLabel;

Label24: TLabel;

Label25: TLabel;

Label26: TLabel;

Label28: TLabel;

procedure Button1click(Sender: TObject);

procedure Button5Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

const

x=20;// число суперциклов

n=100;//число вершин

zs =100;//задание длины рёбер

at =1.75;// корень степени

var

Tick: Cardinal;

u:array [ 1..n, 1 ..n] of integer;//матрица фрагментов дерева при выполнении

//основного циклана пследнем цикле суперцикла

p : array [1..2*n,1..n] of integer;//матрица инциденций дуг

// на последнем цикле суперцикла

uu :array [1..5*n] of integer;//мартица номеров фрагментов

//по номерам циклов основного цикла на последнем цикле суперцикла

ua :array [1..5*n] of integer;//мартица номеров фрагментов

// по порядковому номеру объединения на последнем цикле суперцикла

r :array [1..n] of integer;// integer;//матрица инциденцийчисла дуг

//исходящих из вершин деревапосле последнего цикла суперцикла

pa :array [1..n, 1 ..n] of integer;//матрицадлин рёбер

pb :array [1..n, 1 ..n] of integer;//матрицарасстояний от вершины А

pc :array [1..n, 1 ..n] of integer;//матрицарасстояний от вершины Б

pd:array [1..n, 1 ..n] of integer;//матрицарасстояний от вершины В

pv :array [1..n, 1 ..n] of integer;//матрица

s1:array [1..n] of integer;// матрица суммы исходящих дуг

// с разбивкой по числу дуг инцидентных вершинам: 1,2, 3 ...n-1.//

s2:array [1..n] of variant;/// Число дуг в массиве S1 делится

//на число циклов в суперцикле

s3:array [1..n] of variant;//Число дуг в массиве S1 делится

//произведение число циклов в суперциклеи числа вершин.

// Ччисло циклов в суперцикле

ra : array [1..n] of integer;// матрица расстояний отвершины А

rb:array [1..n] of integer;//номера итераций при нахождении

//растояний от вершины А

rc:array [1..n] of integer;// матрица расстояний отвершины Б

rw:array [1..n] of integer;// /номера итераций при нахождении

//растояний от вершины Б

rd:array [1..n] of integer;// матрица расстояний отвершины В

rf:array [1..n] of integer;//номера итераций при нахождении

//растояний от вершины В

r1:array [1..n] of integer;//матрица расстояний

// на пути из вершины Б в В

r2:array [1..n] of integer;// номера итераций

// на пути изБ в В

r3:array [1..n] of integer;// перечень расстояний

// на пути из Б в В

r4:array [1..n] of integer;// перечень вершин

ww:array [1..x] of real; //

// на пути изБ в В

a, b, k, g, h, h1, q,i,j: integer; //

j1,j2,j3,j4,j5,j6,j7,j8,i2,i1,e, i3,i4,i5,i6,i7,i8,i9,i0: integer; //

m, aa, bb, z, f, c, w,v: integer;//

m1 ,m2,vv: integer;//

kk,ii , jj,t1, k1: integer;//

ia, ib, ic ,id,iw,ie, ja, jb,jc,jd,jw,je,jk : integer;//

za, zb, zc, zv, zn, zm,zd, zf, zg, zh, zk, zq, zw, ze, zr,zt,zy: integer;//

a1,tt: integer;//

z1, z2,z3: integer;//

x1, x2,x3,x4, y1,y2, y3, y4, y5: integer;//

x0, w1, w2,w3,w4, w5 :real; //

h2: variant;//

u1, u2, u3: real ;// вычислено по формуле

procedure TForm1.Button1click(Sender: TObject);

// окантовка

begin

begin

for q:=1 to n //нумерация по горизонтали в табл №1 ,

do StringGrid1.Cells[q,0]:=IntToStr(q);

for q:=1 to n// нумерация по вертикалив табл №1 ,

doStringGrid1.Cells[0,q]:=IntToStr(q);

for q:=1 to 42 //нумерация по горизонтали в табл №2,

do StringGrid2.Cells[q,0]:=IntToStr(q);

for q:=1 to 50// нумерация по вертикалив табл №2 ,

do StringGrid2.Cells[0,q]:=IntToStr(q);

for q:=1 to 3*n //нумерация по горизонтали в табл №3,

do StringGrid3.Cells[q,0]:=IntToStr(q);

for q:=1 to 25// нумерация по вертикалив табл №3 ,

doStringGrid3.Cells[0,q]:=IntToStr(q);

for q:=1 to n //нумерация по горизонтали в табл №4,

do StringGrid4.Cells[q,0]:=IntToStr(q);

for q:=1 to 2*n// нумерация по вертикалив табл №4 ,

doStringGrid4.Cells[0,q]:=IntToStr(q);

for q:=1 to n //нумерация по горизонтали в табл №1 ,

do StringGrid5.Cells[q,0]:=IntToStr(q);

for q:=1 to n// нумерация по вертикалив табл №1 ,

doStringGrid5.Cells[0,q]:=IntToStr(q);

for q:=1 to 50 //нумерация по горизонтали в табл №1 ,

do StringGrid6.Cells[q,0]:=IntToStr(q);

for q:=1 to 2*n// нумерация по вертикалив табл №1 ,

doStringGrid6.Cells[0,q]:=IntToStr(q);

for q:=1 to n //нумерация по горизонтали в табл №1 ,

do StringGrid7.Cells[q,0]:=IntToStr(q);

for q:=1 to n// нумерация по вертикалив табл №1 ,

doStringGrid7.Cells[0,q]:=IntToStr(q);

for q:=1 to n //нумерация по горизонтали в табл №1 ,

do StringGrid8.Cells[q,0]:=IntToStr(q);

for q:=1 to n// нумерация по вертикалив табл №1 ,

doStringGrid8.Cells[0,q]:=IntToStr(q) ;

for q:=1 to n //нумерация по горизонтали в табл №1 ,

do StringGrid9.Cells[q,0]:=IntToStr(q);

for q:=1 to n// нумерация по вертикалив табл №1 ,

doStringGrid9.Cells[0,q]:=IntToStr(q) ;

for q:=1 to n //нумерация по горизонтали в табл №1 ,

do StringGrid10.Cells[q,0]:=IntToStr(q);

for q:=1 to n// нумерация по вертикалив табл №1 ,

doStringGrid10.Cells[0,q]:=IntToStr(q)

end;

//суперцикл

for m:=1 to xdo

begin

/////////////////////////////////

// обнуление

za:=0;zb:=0;zc:=0;zv:=0;zn:=0;zm:=0;

zd:=0;zf:=0;zg:=0;zh:=0;zk:=0;zq:=0;

zw:=0;zr:=0;zt:=0;zy:=0;Ze:=0;

x0:=0;z1:=0; Z2:=0; Z3:=0;

f:=0;

for i:=1 to n do

for j:= 1 to n dobegin

pa[i,j] :=0;

pb[i,j] :=0;

pc[i,j] :=0;

pd[i,j] :=0;

pv[i,j] :=0;

end;

for i:=1 to n do

begin

ra:=0;

rb:=0;

rc:=0;

rw:=0 ;

rd:=0;

rf :=0;

r1:=0;

r2 :=0;

r3 :=0;

r4 :=0;

end;

////////////////////////////////////////

////////////////////////////////////////////////////////

////////////////////////////////////

//ЧАСТЬ 1

//нахождение случайного дерева

// обнуление

for id:=1 to 2*n do

for jd:=1 to n do

p[id,jd] :=0;

for iw := 1 to n do

for jw :=1 to n do

u[iw,jw] :=0;

for ie :=1 to 5*n do

uu[ie] :=0;

for ie :=1 to 5*n do

ua[ie] :=0;

for ie := 1 to n do

r[ie] := 0;

// исходные фрагменты

begin

for i:=1 to ndo

for j:=1 to ndo

if i=j thenp[i,j] :=1;

for i:= 1 to n do uu := 1;

for w:= 1 to (n-1) do// основной цикл

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

for i5 := 1 to 2do// пара фрагментов

begin // двойка

if i5 = 2 then//

C:=c+1;

//выбор фрагмента

V:=0;a:=0;

for i1 := 1 to (2*n) do

if uu[i1] >0 then

beginv:= v+1;

a:=random(v)+1;

end;

Z :=0;i2:=0;k:=0;

repeatbegin i2:= i2+1;k:=i2;

ifuu[i2] >0 then

z:= z+1 ; end;

until (z=a) ;

if i5 = 1 thenm1 := k;

if i5 = 2 thenm2 :=k;

if m=x then

begin

f:= f+1;

ua[f] :=k;

end;

//объединение фрагментов

vv := 0;

for i3 := 1 to n do

if p[k,i3]>0 then begin

vv:= vv+1;

p[w+n,i3]:=vv;

end;

//////////////////////////////////

//ввод ребра между соединяемыми фрагментами

//////////////////////////////// ii

begin

if i5 =1 then

begin

I7:=0;kk:= 0;; tt := 0;ii :=0;

for i6:=1 to n do

ifp[m1,i6]>0 thenkk := kk +1;

aa := random (kk) +1;

repeat

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

i7 := i7+1;

if p[m1,i7] >0 then tt:= tt+1; end;

until tt =aa;

end;

ii :=i7;

///////////////////////////////////

if i5 =2 then

begin

i0 := 0;k1:=0;t1:=0;jj:=0;

for i9:=1 to n do

ifp[m2,i9]>0 thenk1 := k1 +1;

bb := random (k1) +1;

repeat

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

i0 := i0+1;

if p[m2,i0] >0 then t1:= t1+1; end;

until t1 =bb;

jj :=i0;

u[ii,jj] := w;

u[jj,ii] := u[ii,jj];

end;

end;

/////////////////////////////////

if i5=2 then

uu[w+n] := w;

uu[k] := -w;

end ;

end;

h:=0;

for ia := 1 to n do

forja := 1 to n do

if u[ia,ja] >0 then

r[ia] := r[ia]+1;

for i:=1 to ndo

h := h+ r ;

for ib := 1 to n do

forjb := 1 to n do

if r[ib] = jb then s1[jb] := s1[jb] +1;

end;

/////////////////////////

for i:=1 to ndo

s2 := s1/x;

e:= h div 2;

for ic:=1 to n do

s3[ic] :=s1[ic]/(x*n);

for i:= 1 to n do

h1 := h1 + s1*i;

h2 := h1/x;

// ЧАСТЬ 2

// Нахождение медианы

begin

//Шаг1

//Расчёт длин рёбер

for i:=1 to n do

for j:=1 to n do

if j<ithen

if u[i,j]> 0 then

begin

pa[i,j] := (random (zs)+1)*2;

pa[j,i] := pa[i,j];

end;

//шаг 2

// Нахождение вершины А

for i:=1 to ndo

if r =1 thenzb:=zb+1;

zc:= random (zb) +1;

for i:=1 to n do begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

if r =1 thenzv :=zv +1;

if zv = zc then

begin

za := i;break

end;

end;

/////

//Шаг 3

//Находится вершина Б (zm).

//l(А,Б) максимально по множеству вершин дерева

//Построение матрицы pb

//Матрица содержит информацию о направлении дуг при поиске расстояния от вершины А.

//Для таких дуг, как метка, показана их длина.

ra[za] := 100;

for ie := 1 to n-1 do

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

for i:=1 to n do

for j:=1 to n do

ifpa[i,j]>0then

if ((ra>0) and (ra[j] =0))

then

begin

ra[j] := (ra + pa[i,j]); zq:= zq+1;

pb[i,j] := pa[i,j]; rc[j] := zq;

end;

end;

for i:=1 to n do ra:= ra -100;

//нахождение вершины Б

zn := ra[1]; zm :=1;

for i:=1 to n-1do

if ra[i+1]> zn then

begin zn := ra[i+1] ;

zm :=i+1 ;

end ;

//Шаг 4

//Находится вершина В(zf)

//l(Б,В) максимально по множеству вершин дерева

//Построение матрицы pc.

//Матрица содержит информацию о направлении дуг при поиске расстояния от вершины Б.

//Для таких дуг, как метка, показана их длина.

rb[zm] := 100;

for ie := 1 to n-1 do begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

for i:=1 to n do

for j:=1 to n do

if pa[i,j]>0 then

if ((rb>0) and (rb[j] =0))

then begin rb[j] := (rb + pa[i,j]) ;zw := zw +1;

pc[i,j] := pa[i,j];rw[j]:=zw;

end;

end;

for i:=1 to n do rb:= rb -100;

//построение матрицы pd

zd := rb[1]; zf :=1;

for i:=1 to n-1do

if rb[i+1]> zd then

begin zd := rb[i+1] ;

zf :=i+1

end ;

// Шаг 5

//Из вершины В определяется расстояниедо остальных вершин графа.

//Находится вершина Б(zy).

//l(В,Б) максимально по множеству вершин дерева

//Построение матрицы pd.

//Матрица содержит информацию о направлении дуг при поиске расстояния от вершины Б.

//Для таких дуг, как метка, показана их длина.

rd[zf] := 100;

for ie := 1 to n-1 do begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

for i:=1 to n do

for j:=1 to n do

if pa[i,j]>0 then

if ((rd>0) and (rd[j] =0))

then begin rd[j] := (rd + pa[i,j]) ; ze := ze +1;

pd[i,j] := pa[i,j]; rf[j] := ze;

end;

end;

for i:=1 to n do rd:= rd -100;

// Нахождение вершины Б

zr := rd[1]; zy :=1;

for i:=1 to n-1do

if rd[i+1]> zr then

begin zr := rd[i+1] ;

zy :=i+1

end ;

///////////////////////////////////////////////////////////

//////////////////////////////////////////

/////////////////////////////////////////////////////////////

zg := zd div 2;

//

x0 := zg/exp(1/at*ln(n));

//// сбор статистики

ww[m]:=zg ;

//Шаг 6

//Находится матрица pv.

//Матрица содержит только дуги по пути от Б к В и от В к Б.

for i:=1 to n do

for j:=1 to n do

begin

ifpc[i,j] = pd[j,i] then pv[i,j] := pa[i,j]

end;

// Шг 7

///////////// повторно расстояния от вершины В

//по матрице pv

// нахождение вершин в пути Б-В

// Ведется поиск расстояний от В к Б только по дугам пути Б - В.

r1[zy] := 100;

for ie := 1 to n-1 do begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

for i:=1 to n do

for j:=1 to n do

if pv[i,j]>0 then

if ((r1>0) and (r1[j] =0))

then begin r1[j] := (r1 + pv[i,j]) ;z1 := z1 +1;

r2[j] := z1;

end;

end;

for i:=1 to n do

if r1<>zq then

r1:= r1 -100;

// Нахождение вершины В

z2 := r2[1]; z3 :=1;

for i:=1 to n-1do

if r2[i+1]> z2 then

begin

Form1.Caption:=IntToStr(GetTickCount-Tick);

z2 := r2[i+1] ;

z3 :=i+1

end ;

////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////

// Шаг 8

//Находится медиана - вершина x1.

//Максимальное расстояние медианы до вершин дерева - zg.

//Таких вершин две и более.

for i:=1 to n do

if r2>0 thenbegin

Form1.Caption:=IntToStr(GetTickCount-Tick);

r3[r2+1] := r1 ;

r4[r2+1] := i ;

end;

r4[1] := zy;

for i:=1 to n do

ifzg = r3 then y1 :=r4;

if y1 =0 then

for i:=1 to n-1 do

if (zg>r3) and (zg< r3[i+1]) then

begin y2 := r4 ;

y3 := zg- r3;

y4 := r4[i+1];

y5 := r3[i+1]-zg;

end;

end;

end;// суперцикл конец

// Обработка статистики

////

////

for i:=1 to x do

w1 := w1 + ww;

w2:= w1/x;

w3 := w2/(n);

w4:= w2/(zs);

w5:= w2/(zs*exp(1/at*ln(n)) );

w5:= w1/(zs*x*exp(1/at*ln(n)) );

//Эмпирическая формула (1)

u1 := 1.22* (zs*exp(1/at*ln(n)));

u2 := (u1 - w2)/u1;

/////////////////////////////

for i:=1 to ndo

for j:= 1 to ndo

StringGrid5.Cells[j,i]:=

IntToStr( pa[i,j]);

for i:=1 to ndo

StringGrid2.Cells[i,3]:=

IntToStr( r);

for i:=1 to 2*ndo

StringGrid2.Cells[i,1]:=

IntToStr( ua);

for i:=1 to ndo

StringGrid2.Cells[i,5]:=IntToStr(s1);

for i:=1 to ndo

StringGrid2.Cells[i,6]:=FormatFloat('0.0000',s2);

for i:=1 to ndo

StringGrid2.Cells[i,7]:=FormatFloat('0.0000',1000*s3);

for i:=1 to ndo

for j:= 1 to ndo

StringGrid1.Cells[j,i]:=

IntToStr( u[i,j]);

for i:=1 to 2*ndo

for j:= 1 to ndo

StringGrid4.Cells[j,i]:=

IntToStr( p[i,j]);

for i:=1 to 2*ndo

StringGrid3.Cells[i,1]:=

IntToStr( uu);

////////////////

Edit1.Text :=

'y1='+'---'+IntToStr(y1)+''+

'y2='+'---'+IntToStr(y2)+''+

'y3='+'---'+IntToStr(y3)+''+

'y4='+'---'+IntToStr(y4) +''+

'y5='+'---'+IntToStr(y5)+''+

//'w1='+'---'+FormatFloat('0.0',w1)+''+

'w2='+'---'+FormatFloat('0.000',w2) +''+

'w3='+'---'+FormatFloat('0.000',w3)+''+

'w4='+'---'+FormatFloat('0.000',w4)+''+

'w5='+'---'+FormatFloat('0.000',w5)+''+

' u1='+'---' +FormatFloat('0.000',u1)+'' +

'u2='+'--'+FormatFloat('0.000',u2);

Edit2.Text :=

'za='+'---'+IntToStr(za)+''+

'zb='+'---'+IntToStr(zb)+''+

'zc='+'---'+IntToStr(zc) +'' +

'zv='+'---'+IntToStr(zv) +'' +

'zn='+'---'+IntToStr(zn)+'' +

'zm='+'---'+IntToStr(zm) +'' +

'zd='+'---'+IntToStr(zd)+'' +

'zf='+'---'+IntToStr(zf) +'' +

'zg='+'---'+IntToStr(zg) +'' +'zq='+'---'+IntToStr(zq) +'' +

'zw='+'---'+IntToStr(zw)+'' +

'ze='+'---'+IntToStr(ze) +'' +

'zr='+'---'+IntToStr(zr)+'' +

'zt='+'---'+IntToStr(zt) +'' +

'zy='+'---'+IntToStr(zy)+'' +

'x0='+'---'+FormatFloat('0.00',x0);

Edit3.Text := 'kk='+'---'+IntToStr(kk)+''+

'aa='+'---'+IntToStr(aa)+'' +

'bb='+'---'+IntToStr(bb)+''+

'tt='+'---'+IntToStr(tt)+'' +

'ii='+'---'+IntToStr(ii)+'' +

'jj='+'---'+IntToStr(jj)+'' +

'k1='+'---'+IntToStr(k1)+''+

't1='+'---'+IntToStr(t1)+''+

'f='+'---'+IntToStr(f)+''+

'e='+'---'+IntToStr(e)+''+

'h='+'---'+IntToStr(h)+''+

't1='+'---'+IntToStr(t1)+''+

'k='+'---'+IntToStr(k) +''+

'w='+'---'+IntToStr(w)+''+

'c='+'---'+IntToStr(c)+''+

'z='+'---'+IntToStr(z)+''+

'v='+'---'+IntToStr(v)+' '+

'a='+'---'+IntToStr(a);

Edit4.Text :=

'm1='+'---'+IntToStr(m1)+''+

'm2='+'---'+IntToStr(m2) +''+

'i1='+'---'+IntToStr(i2) +''+

'i2='+'---'+IntToStr(i3) +''+

'i4='+'---'+IntToStr(i4) +''+

'i5='+'---'+IntToStr(i5)+''+

'i6='+'---'+IntToStr(i6)+''+

'i7='+'---'+IntToStr(i7) +''+

'i8'+'---'+IntToStr(i8) +''+

'i9='+'---'+IntToStr(i9)+''+

'i0='+'---'+IntToStr(i0) +''+

'h='+'---'+IntToStr(h) +''+

'h1='+'---'+IntToStr(h1) +''+

'h2='+'---'+FormatFloat('0.00',h2);

///////////////////////////////////////

for i:=1 to xdo

StringGrid6.Cells[i,11]:= FormatFloat('0.00',ww) ;

for i:=1 to ndo

for j:= 1 to ndobegin

StringGrid9.Cells[j,i]:=

IntToStr( pa[i,j]);

StringGrid7.Cells[j,i]:=

IntToStr( pb[i,j]);

StringGrid8.Cells[j,i]:=

IntToStr( pc[i,j]);

StringGrid5.Cells[j,i]:=

IntToStr( pd[i,j]);

StringGrid10.Cells[j,i]:=

IntToStr( pv[i,j]);

end;

for i:=1 to ndobegin

StringGrid6.Cells[i,1]:=IntToStr(ra);

StringGrid6.Cells[i,2]:=IntToStr(rc);

StringGrid6.Cells[i,3]:=IntToStr(rb);

StringGrid6.Cells[i,4]:=IntToStr(rw);

StringGrid6.Cells[i,5]:=IntToStr(rd);

StringGrid6.Cells[i,6]:=IntToStr(rf);

StringGrid6.Cells[i,7]:=IntToStr(r1);

StringGrid6.Cells[i,8]:=IntToStr(r2);

StringGrid6.Cells[i,9]:=IntToStr(r3);

StringGrid6.Cells[i,10]:=IntToStr(r4);

end;

end;

////////////////////////////////////////////////////////////////

procedure TForm1.Button5Click(Sender: TObject);

begin

close

end;

initialization

randomize;

end.

#63 
gendy Dinosaur15.04.25 13:14
gendy
NEW 15.04.25 13:14 
в ответ alek4 15.04.25 11:58

научитесь пользоваться гитхабом, тогда возващайтесь. А эти простыни здесь не нужны

Фашизм будет разбит


Человека карают только те боги, в которых он верит

#64 
1 2 3 4 все