Помощь в написании студенческих работ
Антистрессовый сервис

Вероятностные процессы и математическая статистика в автоматизированных системах

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Классы решаемых задач: анализ и статистическая обработка полнофакторного эксперимента с ортогональными планами второго порядка, в которую входят нахождение коэффициентов регрессии, оценка из значимости, проверка адекватности и воспроизводимости модели; поиск сочетаний факторов в кодовых и натуральных переменных; построения графиков отклика от изменения каждого параметра; построения кривых равного… Читать ещё >

Вероятностные процессы и математическая статистика в автоматизированных системах (реферат, курсовая, диплом, контрольная)

Министерство образования и науки Украины

Кафедра КИТ

«ВЕРОЯТНОСТНЫЕ ПРОЦЕССЫ И МАТЕМАТИЧЕСКАЯ СТАТИСТИКА В АВТОМАТИЗИРОВАННЫХ СИСТЕМАХ»

2008

РЕФЕРАТ

Пояснительная записка к расчетно-графической работе: 29 стр., 9 рис., 1 прил., 5 источников.

Объект исследования — оптимальный предел прочности алюминиевых деформируемых сплавов при испытании на растяжение.

Метод исследования — применение математико-статистических методов в автоматизированных системах, реализация программ статистической обработки эксперимента на ЭВМ.

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

ДЕФОРМИРУЕМЫЙ АЛЮМИНИЕВЫЙ СПЛАВ, ЛИТИЙ, ТЕМПЕРАТУРА СТАРЕНИЯ, ВРЕМЯ СТАРЕНИЯ, МНОГОФАКТОРНЫЙ ЭКСПЕРИМЕНТ.

1 Постановка задачи

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

2.1 Построение модели плана II порядка

  • 2.2 Кодирование факторов
    • 2.3 Составление план — матрицы
    • 2.4 Проверка воспроизводимости опытов
    • 2.5 Расчет коэффициентов регрессии
    • 2.6 Определение значимости коэффициентов
    • 2.7 Проверка адекватности модели
  • 3 Выбор и описание метода условной оптимизации
    • 3.1 Выбор метода условной оптимизации
    • 3.2 Описание метода условной оптимизации (Фиако-МакКормика)
  • 4 Описание программы
    • 4.1 Общие сведения
    • 4.2 Функциональное назначение
    • 4.3 Описание логической структуры программы
    • 4.4 Используемые технические средства
    • 4.5 Вызов и загрузка
    • 4.6 Входные данные
    • 4.7 Выходные данные
  • 5 Результаты обработки данных эксперимента
  • 6 Графики зависимости отклика
  • 7 Кривые равного выхода
  • Заключение
  • Список использованных источников
  • Приложение

Введение

Развитие современной техники связано с созданием новых и постоянным совершенствованием существующих технологических процессов. Основой их разработки и оптимизации является эксперимент. Заметное повышение эффективности экспериментальных исследований и инженерных разработок достигается использованием математических методов планирования экспериментов. Использование математико-статистических методов при постановке задач. В процессе экспериментирования и при обработке полученных данных существенно сокращает сроки решения, снижает затраты на исследования и повышает качество полученных результатов.

Встречающиеся на практике реальные задачи весьма разнообразны. Достаточно грубо их можно разделить на три основных задачи:

1 Выявление количественных зависимостей между параметрами процесса — задачи описания;

2 Определение оптимальных условий протекания процесса — экстремальные задачи;

3 Выбор оптимального состава многокомпонентных смесей.

Часто, приступая к изучению какого-либо процесса экспериментатор не имеет исчерпывающих сведений о механизме процесса. Можно только указать параметры определяющие условия протекания процесса, и, возможно требования к его результатам. Поставленная проблема является задачей кибернетики. Действительно, если считать кибернетику «наукой, изучающей системы любой природы, способные воспринимать, хранить и перерабатывать информацию для целей оптимального управления» [1], то такую систему можно представить в виде черного ящика.

Черный ящик — объект исследования, имеющий (k+p) входов и m выходов.

  • X — управляемые параметры, Z — неуправляемые параметры.
  • Зависимость между выходными параметрами (откликом) и входными параметрами (факторами) называется функцией отклика.
  • Математическая запись функции отклика представлена в виде формулы (1):
  • (1)
  • Этому уравнению в многомерном пространстве соответствует гипперповерхность, которая называется поверхностью отклика, а само пространство — факторным пространством.
  • Эксперимент можно проводить по разному. В случае, когда исследователь наблюдает за каким-то неуправляемым процессом, не вмешиваясь в него, или выбирает экспериментальные точки интуитивно, на основании каких-то привходящих обстоятельств, эксперимент считают пассивным. В настоящее время пассивный эксперимент считается неэффективным.
  • Гораздо более продуктивно проводится эксперимент, когда исследователь применяет статистические методы на всех этапах исследования, и, прежде всего, перед постановкой опытов, разрабатывая схему эксперимента, а также в процессе экспериментирования, при обработке результатов и после эксперимента, принимая решение о дальнейших действиях. Такой эксперимент считают активным, и он предполагает планирование эксперимента.
  • Под планированием эксперимента понимают процедуру выбора числа и условий проведения опытов, необходимых и достаточных для решения поставленной задачи с требуемой точностью. Основные преимущества активного эксперимента связаны с тем, что он позволяет:
  • Минимизировать общее число опытов;
  • Выбирать четкие логически обоснованные процедуры, последовательно выполняемые экспериментатором при проведении исследования;
  • Использовать математический аппарат, формализующий многие действия экспериментатора;
  • Одновременно варьировать всеми переменными и оптимально использовать факторное пространство;
  • Организовать эксперимент таким образом, чтобы выполнялись многие исходные предпосылки регрессионного анализа;
  • Получать математические модели, имеющие лучшие в некотором смысле свойства по сравнению с моделями, построенными из пассивного эксперимента;
  • Рандомизировать условия опытов, то есть многочисленные мешающие факторы превратить в случайные величины;
  • Оценивать элемент неопределенности, связанный с экспериментом, что дает возможность сопоставлять результаты, полученные разными исследователями.
  • Целью данной работы является освоение анализа плановых экспериментов и анализ данных, полученных при выполнении этих экспериментов.

1. Постановка задачи

Изучали механические свойства одного из алюминиевых деформируемых сплавов в зависимости от содержания в нем лития Х1 (основной уровень 1%, интервал варьирования 0,5%), температуры старения Х2 (основной уровень 175 гр. С, интервал варьирования 25 гр. С) и времени старения Х3 (основной уровень 4 ч., интервал варьирования 2 ч.). В качестве отклика выбран предел прочности сплавов, определяющийся при испытании на растяжение (Y, кгс/кв.мм).

Задание на расчетно-графическую работу:

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

2) Исследовать модель 2-го порядка на выпуклость и вогнутость методами дифференциального исчисления.

3) Определить тип поверхности отклика.

4) Построить графики зависимости отклика от каждого из факторов Y=f (Xi) при фиксированных значениях остальных факторов (каждый рисунок должен содержать 3−4 кривые).

5) Применяя один из методов оптимизации, найти в исследованной области оптимальные сочетания факторов, обеспечивающие максимальное и минимальное значения отклика.

6) Построить двумерные сечения поверхности отклика, соответствующие пересечению поверхности с плоскостями Xi=Ximax. Для этого в уравнение регрессии необходимо подставить значение этого фактора, и по полученным двухфакторным уравнениям рассчитать, а потом построить изолинии поверхности отклика (кривые равного выхода).

7) Определить типы кривых равного выхода.

8) Используя двумерные сечения поверхности, выполнить анализ влияния факторов в изученных интервалах их изменения на функцию отклика.

2. Этапы планирования и статической обработки результатов эксперимента для построения модели 2-го порядка

2.1 Построение модели плана II порядка

Для построения плана II порядка можно использовать следующую модель:

(2)

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

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

Для удобства работы с приведенной моделью II порядка, с помощью обозначений (3) преобразуем ее к виду (2'):

(3)

(2')

Задача заключается в том, чтобы по результатам наблюдений определить значения коэффициентов bi, дисперсии и доверительные границы для них, а также определить их значимость.

Согласно МНК, для нахождения коэффициентов bi, необходимо минимизировать функцию:

(4)

где N — количество опытов;

xui -значение i-й переменной в u-м опыте;

yu — значение экспериментальных y в u-м опыте;

Из условия минимизации функции ss, можно получить систему нормальных уравнений МНК:

(5)

Представив все результаты в матричной форме, получим:

, , (6)

где X — матрица условий эксперимента; Y — матрица результатов опытов; B — матрица коэффициентов.

Умножив транспонированную матрицу X на матрицу X, получим матрицу системы нормальных уравнений, которая называется информационной матрицей Фишера (матрицей моментов):

(7)

Умножив транспонированную матрицу X на матрицу Y, получим:

(8)

Используя данные обозначения, систему нормальных уравнений можно записать в матричной форме:

(9)

Обозначая обратную матрицу моментов как:

(10)

получим выражение для матрицы коэффициентов:

(11)

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

(12)

где cov (bi, bj) — ковариации коэффициентов bi, и bj;

S2(bi) — дисперсия коэффициента bi;

S2(y) — дисперсия опыта.

Дисперсию опыта можно определить по формулам:

(13)

(14)

где m — количество параллельных опытов.

Если параллельные опыты не проводятся, то для оценки дисперсии опыта ставятся эксперименты в центре плана. Тогда дисперсия определяется по формуле:

(15)

где — количество опытов в центре плана.

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

Величина зависит от фактора и от плеча d:

;

Для k=3 ядро =15, =11/15=0.7303, d=1.2154

2.2 Кодирование факторов

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

Для перевода заполняется таблица кодирования факторов на двух уровнях. В качестве 0-го уровня обычно выбирается центр интервала, в котором предполагается вести эксперимент.

Связь между кодовым и натуральным значениями фактора:

(16)

где Xi — натуральное значение фактора;

Xi0 -значение этого фактора на нулевом уровне;

I — интервал варьирования факторов.

Составим таблицу кодирования факторов, используя исходные данные.

Таблица 1 — Таблица кодирования факторов

2.3 Составление план — матрицы

В план — матрице должны быть указаны все возможные комбинации уровней факторов.

Таблица 2 — Расширенная план — матрица ортогонального плана

2.4 Проверка воспроизводимости опытов

При одинаковом числе параллельных этапов воспроизводимость опытов определяется по критерию Кохрена.

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

Проверка воспроизводимости опытов показана на рисунке 2.

Рисунок 2- Воспроизводимость опытов

2.5 Расчет коэффициентов регрессии

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

Значения при ядре плана :

Матрица дисперсий (ковариаций) коэффициентов регрессии рассчитывается по формуле (10).

2.6 Определение значимости коэффициентов

Значимость коэффициентов регрессии проверяют по критерию Стьюдента:

(17)

Дисперсия коэффициентов определяется по формуле

2.7 Проверка адекватности модели

Адекватность модели проверяется с помощью критерия Фишера:

(17)

(18)

где Sад2 — дисперсия адекватности, рассчитываемая по формуле (18);

Sy2 — дисперсия опыта;

=0.05;

fад=N-l, число свободы дисперсии адекватности;

fy=N (m-1), число свободы дисперсии опыта;

l — количество значимых коэффициентов.

Если неравенство (17) выполняется, значит модель адекватна.

3. Выбор и описание метода условной оптимизации

3.1 Выбор метода условной оптимизации

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

3.2 Описание метода условной оптимизации (Фиако-МакКормика)

Алгоритм метода Фиако-Маккормика

Задание, .

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

Проверка условий окончания поиска. Если условие выполняется по переход на этап 6, иначе переход на этап 4.

Уменьшение значения, , .

Увеличение. Переход на этап 2.

Оптимальное решение, .

4. Описание программы

4.1 Общие сведения

Обозначение программы — vpRgr.exe.

Наименование программы — «Расчетно — графическая работа № 1 по дисциплине «ВПиМСвАС».

Программное обеспечение, необходимое для функционирования программы — Windows 95/98/NT/2000/ME.

Для написания программы была использована интегрированная среда разработки приложений (IDE-Integrated Development Environment) — Delphi 6.0.

4.2 Функциональное назначение

1 Назначение программы: определение оптимального состава алюминиевых деформируемых сплавов из условия получения максимального предела прочности при испытаниях на растяжения

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

3 Сведения о функциональных ограничениях на ее применение: данная программа корректно функционирует при количестве параметров равном 3. При небольшой модификации программы (замены названий факторов на новые) можно решать общую задачу анализа и статистической обработки полнофакторного эксперимента с ортогональными планами второго порядка.

4.3 Описание логической структуры программы

При программировании с использованием средств визуального программирования (Delphi, Visual Basic и др.), приложение становится событийно — управляемым, поэтому невозможно построить алгоритм программы, как это имело место при традиционном программировании на Pascal, C++. В связи с этим наиболее полное представление о программе дает ее укрупненная структурная схема с описанием функций составных частей и связи между ними.

Для того, чтобы разделить фазы «конструирования пользовательского интерфейса» и «непосредственного программирования математической модели», была использована блочно — модульная структура. При этом каждый структурный элемент выносился в отдельный модуль, поддерживающий интерфейс с пользователем и между собой.

Рисунок 1.-логическая связь процедур модуля

Описание структурных элементов программы

type mas=array[1.3] of real;

var x: array[0.9,1.15] of real; //переменные

x2:array[1.3,1.15] of real;//квадраты переменных

x0,ix, //нулевые уровни и интервалы варьирования

xc, //значения координат центра

la, //канонические козффициенты

m, l, n, ml, nl, //направляющие косинусы углов поворота осей и их частные

xp1,xp2,xp3,xh,

xlocmax, xlocmin: mas; //координаты локальных максимума и минимума

y, ys: array[1.2,1.20] of real; //значения функции отклика

x12,x23,x13, //попарные произведения переменных

yc, ycs, //усредненная функция отклика

s2u:array[1.15] of real; //дисперсии эксперементив

b, //коэффициенты модели

s2b, //дисперсии коэффициентов

db:array[0.9] of real; //пределы значимости коэффициентов

kk: d, xc2,

S2UMax, //максимальное значение дисперсии эксперемента

s2y, //дисперсия опыта

ycen, //функция отклика в центре

ylocmax, ylocmin: real;

4.4 Используемые технические средства

Для оптимальной работы программы необходима следующая конфигурация компьютера:

процессор Intel Pentium III|| 500;

ОЗУ 64 Мб;

SVGA монитор (разрешение 800×600);

свободное место на жестком диске не менее 2 Mb;

4.5 Вызов и загрузка

Для инсталляции программы необходимо выполнить следующие шаги:

убедиться в том, что компьютер, на который устанавливается система, отвечает всем требованиям, изложенным в разделе «Минимальные системные требования»;

убедиться в исправности накопителей на гибких магнитных носителях;

перекопировать программу на жесткий диск компьютера;

запустить файл Rgr.exe.

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

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

1) таблица кодирования (таблица 1);

2) результаты экспериментов.

Входные данные заданы в программе.

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

Выходными данными являются:

1) дисперсии опытов;

2) коэффициенты линии регресии;

3) расчетные значения выходов;

4) заключения о воспроизводимости опытов, значимости коэффициентов модели, адекватности модели;

5) графики отклика при двух постоянных значениях факторов;

6) кривые равного выхода при одном постоянном факторе;

7) наилучшие и наихудшие сочетания факторов.

5. Результаты обработки данных эксперимента

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

Расширенная план-матрица эксперимента Нахождение коэффициентов, проверка их значимости и анализ полученной модели показано на рисунке 3.

Рисунок 3 — Результат работа программы

6. графики зависимости отклика

Графики зависимости отклика от каждого из параметров представлены на рисунка 4−6.

Рисунок 4 — зависимость отклика от изменения параметра x1. Зависимость отклика от X1

  • y= 30,60 + 0,00*x1 + 2,97*x12×2=0×3=0
  • y= 25,60 + 3,87*x1 + 2,97*x12×2=1×3=0
  • y= 22,73 + 1,02*x1 + 2,97*x12×2=1×3=1

Рисунок 5 — зависимость отклика от изменения параметра x2. Зависимость отклика от X2

  • y= 30,60 + -1,94*x2 + -3,05*x22 x1=0×3=0
  • y= 33,57 + 1,92*x2 + -3,05*x22×1=1×3=0
  • y= 34,35 + -4,57*x2 + -3,05*x22×1=1×3=1

Рисунок 6 — зависимость отклика от изменения параметра x3. Зависимость отклика от X3

y= 30,60 + 3,63*x3 + 0,00*x32×1=0×2=0

y= 33,57 + 0,78*x3 + 0,00*x32×1=1×2=0

y= 32,44 + -5,71*x3 + 0,00*x32×1=1×2=1

7. кривые равного выхода

Графики зависимости отклика от каждого из параметров представлены на рисунках 7−9

Рисунок 7 — Линии уровня отклика при фиксированном x3

Рисунок 8 — Линии уровня отклика при фиксированном x2

Рисунок 9 — Линии уровня отклика при фиксированном x1

Заключение

В ходе выполнения данной расчетно-графической работы был определен оптимальный предел прочности алюминиевых деформируемых сплавов, определяющийся при испытании на растяжение.

Оптимальный параметры прочности:

Содержание Li (%) = 0.6

Температура старения (град.С)=25

Время старения (час.)=2

Содержание Li (%) = 0.6

Температура старения (град.С)=25

Время старения (час.)=2

Содержание Li (%) = 1.5

Температура старения (град.С)=200

Время старения (час.)=6

список использованных источников

1) Конспект лекций по дисциплине «ВП и МСАС».

2) Конспект лекций по дисциплине «ТА и МОПЗ».

3) Конспект лекций по дисциплине «Методы синтеза и оптимизации».

4) Методические указания к лабораторным и расчетно-графической работе по дисциплине «Вероятностные процессы и математическая статистика в автоматизированных системах» / Сост.:Г. Б. Билык, О. В. Веремей, В. И. Кравченко. — ДГМА, 2006. — 24 с. (файл VPLAB).

5) Применение математических методов и ЭВМ. Планирование и обработка результатов эксперимента / Под ред. А. Н. Останина. — Мн.: Выш. шк., 2005. — 218 с.

приложение

Листинг модуля Metod. pas — подпрограммы общего назначения

type mas=array[1.3] of real;

var x: array[0.9,1.15] of real;

x2:array[1.3,1.15] of real;

x0,ix, xc, la, m, l, n, ml, nl,

xp1,xp2,xp3,xh, xlocmax, xlocmin: mas;

y, ys: array[1.2,1.20] of real;

x12,x23,x13,yc, ycs, s2u: array[1.15] of real;

b, s2b, db: array[0.9] of real;

kk:integer;

d, xc2, S2UMax, s2y, ycen, ylocmax, ylocmin: real;

{$R *.dfm}

function sx (l:integer):real;

var s: real; i: integer;

begin s:=0;

for i:=1 to 15 do

s:=s+sqr (x[l, i]);

sx:=s;

end;

function sxy (l:integer):real;

var s: real; i: integer;

begin s:=0;

for i:=1 to 15 do

s:=s+x[l, i]*yc[i];

sxy:=s;

end;

function f (l:integer):real;

var xx1, xx2,xx3:real;

begin

xx1:=x[1,l]; xx2:=x[2,l]; xx3:=x[3,l];

f:=b[0]+b[1]*xx1+b[2]*xx2+b[3]*xx3

+b[4]*xx1*xx2+b[5]*xx1*xx3+b[6]*xx2*xx3+

b[7]*xx1*xx1+b[8]*xx2*xx2+b[9]*xx2*xx2;

end;

function fy (xx1,xx2,xx3:real):real;

begin

fy:=b[0]+b[1]*xx1+b[2]*xx2+b[3]*xx3

+b[4]*xx1*xx2+b[5]*xx1*xx3+b[6]*xx2*xx3+

b[7]*xx1*xx1+b[8]*xx2*xx2+b[9]*xx2*xx2;

end;

function dlambda (lam:real):real;

begin dlambda:=(b[7]-lam)*((b[8]-lam)*(b[9]-lam)-0.25*b[6]*b[6]);

0.5*b[4]*(0.5*b[4]*(b[9]-lam)-0.25*b[5]*b[6])+

0.5*b[5]*(0.25*b[4]*b[6]-0.5*b[5]*(b[8]-lam))

end;

function findl (xa, xb: real):real;

var c: real;

begin

repeat

c:=(xa+xb)/2;

if dlambda (xa)*dlambda (c)<0 then xb:=c

else xa:=c;

until abs (dlambda (xa)-dlambda (xb))<=0.001;

findl:=(xa+xb)/2;

end;

procedure maximminim;

var yt: array[1.2,1.2,1.2] of real; i, j, w:integer;

minim, maxim: real;

begin minim:=fy (1,1,1);

maxim:=fy (1,1,1);

for i:=-10 to 10 do

for j:=-10 to 10 do

for w:=-10 to 10 do

begin if fy (i/10,j/10,w/10)>=maxim then begin

maxim:=fy (i/10,j/10,w/10); xlocmax[1]: =i/10;

xlocmax[2]:=j/10; xlocmax[3]: =w/10; end;

if fy (i/10,j/10,w/10)<=minim then begin

minim:=fy (i/10,j/10,w/10);xlocmin[1]: =i/10;

xlocmin[2]:=j/10; xlocmin[3]: =w/10; end;

end;

ylocmin:=minim;

ylocmax:=maxim;

end;

procedure minmax;

type arr=array [1.3,1.3] of real;

var d, d1, d2,d3:arr; i: integer; bd: mas;

function delta (a:arr):real;

begin delta:=a[1,1]*(a[2,2]*a[3,3]-a[2,3]*a[3,2]);

a[1,2]*(a[2,1]*a[3,3]-a[2,3]*a[3,1])+

a[1,3]*(a[2,1]*a[3,2]-a[2,2]*a[3,1]); end;

begin d[1,1]: =2*b[7]; d[1,2]: =b[4]; d[1,3]: =b[5];

d[2,1]:=b[4]; d[2,2]: =2*b[8]; d[2,3]: =b[6];

d[3,1]:=b[5]; d[3,2]: =b[6]; d[3,3]: =2*b[9];

bd[1]:=-b[1]; bd[2]: =-b[2]; bd[3]: =-b[3];

for i:=1 to 3 do

begin d1[i, 2]: =d[i, 2]; d1[i, 3]: =d[i, 3];

d2[i, 1]:=d[i, 1]; d2[i, 3]: =d[i, 3];

d3[i, 2]:=d[i, 2]; d3[i, 1]: =d[i, 1];

d1[i, 1]:=bd[i];d2[i, 2]:=bd[i];d3[i, 3]:=bd[i]; end;

xc[1]: =delta (d1)/delta (d);

xc[2]:=delta (d2)/delta (d);

xc[3]:=delta (d3)/delta (d);

ycen:=fy (xc[1], xc[2], xc[3]);

la[1]:=findl (-6,-2);

la[2]:=findl (-2,2);

la[3]:=findl (2,6);

for i:=1 to 3 do begin

ml[i]: =(b[6]*(b[7]-la[i])-0.5*b[4]*b[5])/(b[5]*(b[8]-la[i])-0.5*b[4]*b[6]);

nl[i]:=(-2*(b[7]-la[i])*(b[8]-la[i])+0.5*b[4]*b[4])/(b[5]*(b[8]-la[i])-0.5*b[4]*b[6]);

l[i]:=1/sqrt (1+sqr (ml[i])+sqr (nl[i]));

m[i]:=ml[i]*l[i];

n[i]:=nl[i]*l[i];

maximminim; end; end;

procedure TForm1. FormCreate (Sender: TObject);

var i, j: integer;

begin

x0[1]: =1; x0[2]: =175; x0[3]: =4;

ix[1]:=0.5; ix[2]: =25; ix[3]: =2;

y[1,1]:=24.99; y[1,2]: =22.61;y[1,3]:=26.99; y[1,4]: =39.61;

y[1,5]:=49.8; y[1,6]: =37.8; y[1,7]: =26.61; y[1,8]: =28.99;

y[1,9]:=35.8; y[1,10]: =37.61;y[1,11]:=27.99;y[1,12]:=24.18;

y[1,13]:=26.8; y[1,14]: =34.99;y[1,15]:=32.8;

y[2,1]:=25.51;y[2,2]:=23.89; y[2,3]: =26.89; y[2,4]: =39.51;

y[2,5]:=53.7; y[2,6]: =37.51; y[2,7]: =26.7; y[2,8]: =28.7;

y[2,9]:=38.89;y[2,10]:=37.32;y[2,11]:=33.51;y[2,12]:=28.7;

y[2,13]:=30.7; y[2,14]: =38.7;y[2,15]:=31.51;

xc2:=sqrt (8/15); d:=sqrt ((15*xc2−8)/2);

ys:=y;

sgcod.Cells[0,1]: ='Ioeaaie o? iaaiu';

sgcod.Cells[0,2]: ='Eioa?aae aa? ue?iaaiey';

sgcod.Cells[0,3]: ='Ie?iee o? iaaiu';

sgcod.Cells[0,4]: ='Aa?oiee o? iaaiu';

sgcod.Cells[0,5]: ='Eiaiaia iaicia? aiea';

sgcod.Cells[1,0]: ='Niaa??. Li,% ';

sgcod.Cells[2,0]: ='T noa?., a?.N ';

sgcod.Cells[3,0]: =' t noa?., ?. ';

for i:=1 to 3 do

begin sgcod. Cells[i, 1]: =' '+floattostr (x0[i]);

sgcod.Cells[i, 2]: =' '+floattostr (ix[i]);

sgcod.Cells[i, 3]: =' '+floattostr (x0[i]-ix[i]);

sgcod.Cells[i, 4]: =' '+floattostr (x0[i]+ix[i]);

end;

sgcod.Cells[1,5]: =' x1';

sgcod.Cells[2,5]: =' x2';

sgcod.Cells[3,5]: =' x3';

sgplan.Cells[1,0]: =' x0'; sgplan. Cells[2,0]: =' x1';

sgplan.Cells[3,0]: =' x2'; sgplan. Cells[4,0]: =' x3';

sgplan.Cells[5,0]: ='x12-'+floattostrf (xc2,fffixed, 3,2);

sgplan.Cells[6,0]:='x22-'+floattostrf (xc2,fffixed, 3,2);

sgplan.Cells[7,0]:='x32-'+floattostrf (xc2,fffixed, 3,2);

sgplan.Cells[8,0]:='x1x2'; sgplan. Cells[9,0]: ='x1x3';

sgplan.Cells[10,0]:='x2x3'; sgplan. Cells[11,0]: =' y1';

sgplan.Cells[12,0]: =' y2'; sgplan. Cells[13,0]: =' yc';

for i:=1 to 15 do begin

if i<=8 then begin

if i mod 2 = 0 then x[1,i]: =1 else x[1,i]: =-1;

if ((i+1) div 2) mod 2 = 0 then x[2,i]: =1 else x[2,i]: =-1;

if ((i+3) div 4) mod 2 = 0 then x[3,i]: =1 else x[3,i]: =-1;

end

else begin

for j:=1 to 3 do

if i=7+2*j then x[j, i]: =-d

else if i=8+2*j then x[j, i]: =d

else x[j, i]: =0;

end;

x12[i]:=x[1,i]*x[2,i];

x23[i]:=x[2,i]*x[3,i];

x13[i]:=x[1,i]*x[3,i];

x[4,i]:=x12[i]; x[5,i]: =x13[i];

x[6,i]:=x23[i];

x[0,i]:=1;

for j:=1 to 3 do

x2[j, i]: =sqr (x[j, i])-xc2;

x[7,i]:=x2[1,i];

x[8,i]:=x2[2,i];

x[9,i]:=x2[3,i];

end;

for i:=1 to 15 do

begin sgplan. Cells[0,i]: =inttostr (i);

sgplan.Cells[1,i]:=' 1';

for j:=1 to 3 do begin

sgplan.Cells[j+1,i]: =' '+floattostr (x[j, i]);

sgplan.Cells[j+4,i]: =' '+floattostrf (x2[j, i], fffixed, 5,3); end;

sgplan.Cells[8,i]: =' '+floattostr (x12[i]);

sgplan.Cells[9,i]: =' '+floattostr (x13[i]);

sgplan.Cells[10,i]: =' '+floattostr (x23[i]);

end;

xh[1]: =-1; xh[2]: =-1; xh[3]: =-1;

kk:=0;

end;

procedure TForm1. Button2Click (Sender: TObject);

var i: integer;

begin

kk:=kk+1;

for i:=1 to 15 do

sgplan.Cells[10+kk, i]: =floattostr (ys[kk, i]);

if kk>=2 then begin button2. Enabled:=false;

for i:=1 to 15 do begin

yc[i]: =(y[1,i]+y[2,i])/2;

ycs[i]:=(y[1,i]+y[2,i])/2;

sgplan.Cells[13,i]:=floattostr (ycs[i]);

end;

end;

end;

procedure TForm1. Button1Click (Sender: TObject);

var k1, k2:integer; yk: real;

begin

randomize;

k1:=random (14)+1;

k2:=random (14)+1;

sgplan.Rows[16]: =sgplan.Rows[k1];

sgplan.Rows[k1]:=sgplan.Rows[k2];

sgplan.Rows[k2]:=sgplan.Rows[16];

yk:=ys[1,k1];

ys[1,k1]:=ys[1,k2];

ys[1,k2]:=yk;

yk:=ys[2,k1];

ys[2,k1]:=ys[2,k2];

ys[2,k2]:=yk;

end;

procedure TForm1. PageControl1Change (Sender: TObject);

var u, i, j, li: integer; sums, g, s2ad, fp, xx: real;

begin

if button2. Enabled=false then begin

sgvos.Cells[0,0]: =' u';

sgvos.Cells[1,0]: =' S2u';

sums:=0;

for u:=1 to 15 do

begin s2u[u]: =sqr (yc[u]-y[1,u])+sqr (yc[u]-y[2,u]);

sgvos.Cells[1,u]:=floattostrf (s2u[u], fffixed, 5,3);

sgvos.Cells[0,u]:=inttostr (u);

sums:=sums+s2u[u];

end;

s2umax:=s2u[1];

for i:=1 to 15 do

if s2u[i]>s2umax then s2umax:=s2u[i];

label5.Caption:=floattostrf (s2umax, fffixed, 7,3);

g:=s2umax/sums;

label7.Caption:=floattostrf (g, fffixed, 7,3);

label9.Caption:=floattostrf (0.47,fffixed, 7,3);

if g<=0.47 then begin

label10.Caption:=' Iiuou'+#13+'aini?iecaiaeiu';

s2y:=0;

for i:=1 to 15 do

s2y:=s2y+s2u[i]/15;

if b[0]=0 then begin

for i:=0 to 9 do

b[i]: =sxy (i)/sx (i);

sgb.Cells[i, 1]:=floattostrf (b[i], fffixed, 5,3);

for j:=1 to 3 do

b[0]: =b[0]-b[6+j]*xc2;

sgb.Cells[0,1]:=floattostrf (b[0], fffixed, 5,3);

sgb.Cells[0,0]:='b0'; sgb. Cells[1,0]: ='b1';

sgb.Cells[2,0]:='b2'; sgb. Cells[3,0]: ='b3';

sgb.Cells[4,0]:='b12'; sgb. Cells[5,0]: ='b13';

sgb.Cells[6,0]:='b23'; sgb. Cells[7,0]: ='b11';

sgb.Cells[8,0]:='b22'; sgb. Cells[9,0]: ='b33';

for i:=0 to 9 do

begin s2b[i]: =s2y/(2*sx (i));

db[i]:=1.76*s2b[i];

sgsb.Cells[i+1,1]:=floattostrf (s2b[i], fffixed, 7,3);

sgsb.Cells[i+1,2]:=floattostrf (db[i], fffixed, 7,3);

end;

sgsb.Cells[1,0]:='b0'; sgsb. Cells[2,0]: ='b1';

sgsb.Cells[3,0]:='b2'; sgsb. Cells[4,0]: ='b3';

sgsb.Cells[5,0]:='b12'; sgsb. Cells[6,0]: ='b13';

sgsb.Cells[7,0]:='b23'; sgsb. Cells[8,0]: ='b11';

sgsb.Cells[9,0]:='b22'; sgsb. Cells[10,0]: ='b33';

sgsb.Cells[0,1]:='S2bi'; sgsb. Cells[0,2]: ='|bi|';

label16.Caption:=floattostrf (s2y, fffixed, 7,3);

label18.Caption:=floattostrf (1.76,fffixed, 7,3);

label21.Caption:='Iacia?eiua eiyooeoeaiou:';

li:=0;

for i:=0 to 9 do

if abs (b[i])<=db[i] then begin

li:=li+1;

label21.Caption:=label21.Caption+' b['+

inttostr (i)+']='+floattostrf (b[i], fffixed, 7,4);

b[i]: =0;

end;

s2ad:=0;

for i:=1 to 15 do

s2ad:=s2ad+sqr (yc[i]-f (i))+2/(li*15);

fp:=s2ad/s2y;

label12.Caption:=floattostrf (s2y, fffixed, 7,3);

label20.Caption:=floattostrf (s2ad, fffixed, 7,3);

label25.Caption:=floattostrf (2.96,fffixed, 7,3);

label26.Caption:=floattostrf (fp, fffixed, 7,3);

if fp<=2.96 then

label27.Caption:=' Iiaaeu aaaeaaoia'

else

label27.Caption:=' Iiaaeu ia aaaeaaoia';

minmax;

memo2.lines.add ('Eii?aeieou oaio? a iiaa? oiinoe');

memo2.lines.add (' xc1='+floattostrf (xc[1], fffixed, 5,3)+

' xc2='+floattostrf (xc[2], fffixed, 5,3)+

' xc3='+floattostrf (xc[3], fffixed, 5,3)+

' yc='+floattostrf (ycen, fffixed, 5,3));

if ((la[1]<0) and (la[2]<0) and (la[3]<0)) or

((la[1]>0) and (la[2]>0) and (la[3]>0))

then memo2.lines.add (' Iiaa? oiinou, eia? uay yeno? aioi')

else memo2.lines.add (' Iiaa? oiinou oeia ieieiaena');

memo2.lines.add (' Eieaeuiue yeno? aioi');

memo2.lines.add (' xmax1='+floattostrf (xlocmax[1], fffixed, 5,1)+

' xmax2='+floattostrf (xlocmax[2], fffixed, 5,1)+

' xmax3='+floattostrf (xlocmax[3], fffixed, 5,1)+

' Ymax='+floattostrf (ylocmax, fffixed, 5,4));

memo2.lines.add (' xmin1='+floattostrf (xlocmin[1], fffixed, 5,1)+

' xmin2='+floattostrf (xlocmin[2], fffixed, 5,1)+

' xmin3='+floattostrf (xlocmin[3], fffixed, 5,1)+

' Ymin='+floattostrf (ylocmin, fffixed, 5,4));

end; end

else label10. Caption:=' Iiuou ia'+#13+'aini?iecaiaeiu';

for i:=0 to 9 do

sgb.Cells[i, 1]: =floattostrf (b[i], fffixed, 5,3);

end; end;

procedure TForm1. RadioGroup1Click (Sender: TObject);

var xxx: real;

begin series1. Clear; series2. Clear; series3. Clear;

case radiogroup1. ItemIndex of

0: begin groupbox7. Visible:=true;

label28.Caption:='x2='; label29. Caption:='x3=';

label30.Caption:='x2='; label31. Caption:='x3=';

label32.Caption:='x2='; label33. Caption:='x3=';

label34.Caption:='x1=';

xp2[1]: =strtofloat (edit1.text); xp3[1]: =strtofloat (edit2.text);

xp2[2]:=strtofloat (edit3.text); xp3[2]: =strtofloat (edit4.text);

xp2[3]:=strtofloat (edit5.text); xp3[3]: =strtofloat (edit6.text);

xxx:=-1;

while xxx<=1 do

begin series1. AddXY (xxx, fy (xxx, xp2[1], xp3[1]));

series2.AddXY (xxx, fy (xxx, xp2[2], xp3[2]));

series3.AddXY (xxx, fy (xxx, xp2[3], xp3[3]));

xxx:=xxx+0.01; end;

memo3.Clear;

memo3.Lines.Add ('Eeiee ?aa?annee:');

memo3.Lines.Add ('y= '+floattostrf (fy (0,xp2[1], xp3[1]), fffixed, 4,2)+

' + '+floattostrf (b[1]+b[4]*xp2[1]+b[5]*xp3[1], fffixed, 4,2)+

'*x1 + '+floattostrf (b[7], fffixed, 4,2)+'*x12');

memo3.Lines.Add ('y= '+floattostrf (fy (0,xp2[2], xp3[2]), fffixed, 4,2)+

' + '+floattostrf (b[1]+b[4]*xp2[2]+b[5]*xp3[2], fffixed, 4,2)+

'*x1 + '+floattostrf (b[7], fffixed, 4,2)+'*x12');

memo3.Lines.Add ('y= '+floattostrf (fy (0,xp2[3], xp3[3]), fffixed, 4,2)+

' + '+floattostrf (b[1]+b[4]*xp2[3]+b[5]*xp3[3], fffixed, 4,2)+

'*x1 + '+floattostrf (b[7], fffixed, 4,2)+'*x12');

end;

1: begin groupbox7. Visible:=true;

label28.Caption:='x1='; label29. Caption:='x3=';

label30.Caption:='x1='; label31. Caption:='x3=';

label32.Caption:='x1='; label33. Caption:='x3=';

label34.Caption:='x2=';

xp1[1]: =strtofloat (edit1.text); xp3[1]: =strtofloat (edit2.text);

xp1[2]:=strtofloat (edit3.text); xp3[2]: =strtofloat (edit4.text);

xp1[3]:=strtofloat (edit5.text); xp3[3]: =strtofloat (edit6.text);

xxx:=-1;

while xxx<=1 do

begin series1. AddXY (xxx, fy (xp1[1], xxx, xp3[1]));

series2.AddXY (xxx, fy (xp1[2], xxx, xp3[2]));

series3.AddXY (xxx, fy (xp1[3], xxx, xp3[3]));

xxx:=xxx+0.01;

end;

memo3.Clear;

memo3.Lines.Add ('Eeiee ?aa?annee:');

memo3.Lines.Add ('y= '+floattostrf (fy (xp1[1], 0, xp3[1]), fffixed, 4,2)+

' + '+floattostrf (b[2]+b[4]*xp1[1]+b[6]*xp3[1], fffixed, 4,2)+

'*x2 + '+floattostrf (b[8], fffixed, 4,2)+'*x22');

memo3.Lines.Add ('y= '+floattostrf (fy (xp1[2], 0, xp3[2]), fffixed, 4,2)+

' + '+floattostrf (b[2]+b[4]*xp1[2]+b[6]*xp3[2], fffixed, 4,2)+

'*x2 + '+floattostrf (b[8], fffixed, 4,2)+'*x22');

memo3.Lines.Add ('y= '+floattostrf (fy (xp1[3], 0, xp3[3]), fffixed, 4,2)+

' + '+floattostrf (b[2]+b[4]*xp1[3]+b[6]*xp3[3], fffixed, 4,2)+

'*x2 + '+floattostrf (b[8], fffixed, 4,2)+'*x22');

end;

2: begin groupbox7. Visible:=true;

label28.Caption:='x1='; label29. Caption:='x2=';

label30.Caption:='x1='; label31. Caption:='x2=';

label32.Caption:='x1='; label33. Caption:='x2=';

label34.Caption:='x3=';

xp1[1]: =strtofloat (edit1.text); xp2[1]: =strtofloat (edit2.text);

xp1[2]:=strtofloat (edit3.text); xp2[2]: =strtofloat (edit4.text);

xp1[3]:=strtofloat (edit5.text); xp2[3]: =strtofloat (edit6.text);

xxx:=-1;

while xxx<=1 do

begin series1. AddXY (xxx, fy (xp1[1], xp2[1], xxx));

series2.AddXY (xxx, fy (xp1[2], xp2[2], xxx));

series3.AddXY (xxx, fy (xp1[3], xp2[3], xxx));

xxx:=xxx+0.01; end;

memo3.Clear;

memo3.Lines.Add ('Eeiee ?aa?annee:');

memo3.Lines.Add ('y= '+floattostrf (fy (xp1[1], xp2[1], 0), fffixed, 4,2)+

'+'+floattostrf (b[3]+b[5]*xp1[1]+b[6]*xp2[1], fffixed, 4,2)+

x3 + '+floattostrf (b[9], fffixed, 4,2)+'*x32');

memo3.Lines.Add ('y= '+floattostrf (fy (xp1[2], xp2[2], 0), fffixed, 4,2)+

+ '+floattostrf (b[3]+b[5]*xp1[2]+b[6]*xp2[2], fffixed, 4,2)+

x3 + '+floattostrf (b[9], fffixed, 4,2)+'*x32');

memo3.Lines.Add ('y= '+floattostrf (fy (xp1[3], xp2[3], 0), fffixed, 4,2)+

' + '+floattostrf (b[3]+b[5]*xp1[3]+b[6]*xp2[3], fffixed, 4,2)+

'*x3 + '+floattostrf (b[9], fffixed, 4,2)+'*x32'); end;

else groupbox7. Visible:=false;

end;

end;

procedure TForm1. RadioGroup2Click (Sender: TObject);

var px, yy, ymax, ymin: real;

xxx, xmax, xmin: mas;

begin series4. Clear; series5. Clear; series6. Clear;

px:=strtofloat (edit13.Text);

case radiogroup2. ItemIndex of

0:begin yy:=10; ymax:=0; ymin:=48;

label40.Caption:='x3=';

label41.Caption:='x1min='; label42. Caption:='x2min=';

label44.Caption:='x1max='; label45. Caption:='x2max=';

while yy<=48 do

begin xxx[1]: =-1;

while xxx[1]<=1 do

begin xxx[2]: =-1;

while xxx[2]<=1 do

begin if abs (fy (xxx[1], xxx[2], px)-yy)<=0.02

then series4. AddXY (xxx[1], xxx[2]);

if fy (xxx[1], xxx[2], px)<=ymin then

begin xmin[1]: =xxx[1]; xmin[2]: =xxx[2];

ymin:=fy (xxx[1], xxx[2], px);end;

if fy (xxx[1], xxx[2], px)>=ymax then

begin xmax[1]: =xxx[1]; xmax[2]: =xxx[2];

ymax:=fy (xxx[1], xxx[2], px);end;

xxx[2]:=xxx[2]+0.005; end;

xxx[1]: =xxx[1]+0.005; end;

yy:=yy+1.5; end;

series5.AddXY (xmax[1], xmax[2]); series6. AddXY (xmin[1], xmin[2]);

edit14.Text:=floattostrf (xmin[1], fffixed, 5,2);

edit15.Text:=floattostrf (xmin[2], fffixed, 5,2);

edit16.Text:=floattostrf (ymin, fffixed, 5,2);

edit17.Text:=floattostrf (xmax[1], fffixed, 5,2);

edit18.Text:=floattostrf (xmax[2], fffixed, 5,2);

edit19.Text:=floattostrf (ymax, fffixed, 5,2); end;

1: begin yy:=10; ymax:=0; ymin:=48;

label40.Caption:='x2=';

label41.Caption:='x1min='; label42. Caption:='x3min=';

label44.Caption:='x1max='; label45. Caption:='x3max=';

while yy<=48 do

begin xxx[1]: =-1;

while xxx[1]<=1 do

begin xxx[3]: =-1;

while xxx[3]<=1 do

begin if abs (fy (xxx[1], px, xxx[3])-yy)<=0.02

then series4. AddXY (xxx[1], xxx[3]);

if fy (xxx[1], px, xxx[3])<=ymin then

begin xmin[1]: =xxx[1]; xmin[3]: =xxx[3];

ymin:=fy (xxx[1], px, xxx[3]);end;

if fy (xxx[1], px, xxx[3])>=ymax then

begin xmax[1]: =xxx[1]; xmax[3]: =xxx[3];

ymax:=fy (xxx[1], px, xxx[3]);end;

xxx[3]:=xxx[3]+0.005; end;

xxx[1]: =xxx[1]+0.005; end;

yy:=yy+1.5; end;

series5.AddXY (xmax[1], xmax[3]); series6. AddXY (xmin[1], xmin[3]);

edit14.Text:=floattostrf (xmin[1], fffixed, 5,2);

edit15.Text:=floattostrf (xmin[3], fffixed, 5,2);

edit16.Text:=floattostrf (ymin, fffixed, 5,2);

edit17.Text:=floattostrf (xmax[1], fffixed, 5,2);

edit18.Text:=floattostrf (xmax[3], fffixed, 5,2);

edit19.Text:=floattostrf (ymax, fffixed, 5,2); end;

2: begin yy:=10;

ymax:=0; ymin:=48;

label40.Caption:='x1=';

label41.Caption:='x2min='; label42. Caption:='x3min=';

label44.Caption:='x2max='; label45. Caption:='x3max=';

while yy<=48 do

begin xxx[2]: =-1; while xxx[2]<=1 do begin xxx[3]: =-1;

while xxx[3]<=1 do begin if abs (fy (px, xxx[2], xxx[3])-yy)<=0.02

then series4. AddXY (xxx[2], xxx[3]);

if fy (px, xxx[2], xxx[3])<=ymin then

begin xmin[3]: =xxx[3];xmin[2]:=xxx[2];

ymin:=fy (px, xxx[2], xxx[3]);end;

if fy (px, xxx[2], xxx[3])>=ymax then

begin xmax[3]: =xxx[3]; xmax[2]: =xxx[2];

ymax:=fy (px, xxx[2], xxx[3]);end;

xxx[3]:=xxx[3]+0.005; end;

xxx[2]: =xxx[2]+0.005; end;

yy:=yy+1.5; end;

series5.AddXY (xmax[2], xmax[3]); series6. AddXY (xmin[2], xmin[3]);

edit14.Text:=floattostrf (xmin[2], fffixed, 5,2);

edit15.Text:=floattostrf (xmin[3], fffixed, 5,2);

edit16.Text:=floattostrf (ymin, fffixed, 5,2);

edit17.Text:=floattostrf (xmax[2], fffixed, 5,2);

edit18.Text:=floattostrf (xmax[3], fffixed, 5,2);

edit19.Text:=floattostrf (ymax, fffixed, 5,2);

end; end;end;

procedure TForm1. Button3Click (Sender: TObject);

var i: integer; max, min: mas;

maxy, miny: real;

begin series7. Clear;

for i:=1 to 3 do

xh[i]: =xh[i]+0.02;

max[1]:=series1.MaxYValue;max[2]:=series2.MaxYValue;

max[3]:=series3.MaxYValue; min[1]: =series1.MinYValue;

min[2]:=series2.MinYValue; min[3]: =series3.MinYValue;

maxy:=max[1]; miny:=min[1];

for i:=2 to 3 do begin

if max[i]>=maxy then maxy:=max[i];

if min[i]<=miny then miny:=min[i];

end;

case radiogroup1. ItemIndex of

0: begin

edit9.Text:=floattostr (xh[1]);

edit10.Text:=floattostr (fy (xh[1], strtofloat (edit1.Text), strtofloat (edit2.Text)));

edit11.Text:=floattostr (fy (xh[1], strtofloat (edit3.Text), strtofloat (edit4.Text)));

edit12.Text:=floattostr (fy (xh[1], strtofloat (edit5.Text), strtofloat (edit6.Text)));

series7.AddXY (xh[1], maxy); series7. AddXY (xh[1], miny); end;

1: begin

series7.AddXY (xh[2], maxy); series7. AddXY (xh[2], miny);

edit9.Text:=floattostr (xh[2]);

edit10.Text:=floattostr (fy (strtofloat (edit1.Text), xh[2], strtofloat (edit2.Text)));

edit11.Text:=floattostr (fy (strtofloat (edit3.Text), xh[2], strtofloat (edit4.Text)));

edit12.Text:=floattostr (fy (strtofloat (edit5.Text), xh[2], strtofloat (edit6.Text))) end;

2: begin series7. AddXY (xh[3], maxy); series7. AddXY (xh[3], miny);

edit9.Text:=floattostr (xh[3]);

edit10.Text:=floattostr (fy (strtofloat (edit1.Text), strtofloat (edit2.Text), xh[3]));

edit11.Text:=floattostr (fy (strtofloat (edit3.Text), strtofloat (edit4.Text), xh[3]));

edit12.Text:=floattostr (fy (strtofloat (edit5.Text), strtofloat (edit6.Text), xh[3]))

end; end;end;

procedure TForm1. Button4Click (Sender: TObject);

var i: integer; max, min: mas;

maxy, miny: real;

begin series7. Clear;

for i:=1 to 3 do

xh[i]: =xh[i]-0.02;

max[1]:=series1.MaxYValue; max[2]: =series2.MaxYValue;

max[3]:=series3.MaxYValue; min[1]: =series1.MinYValue;

min[2]:=series2.MinYValue; min[3]: =series3.MinYValue;

maxy:=max[1]; miny:=min[1];

for i:=2 to 3 do begin

if max[i]>=maxy then maxy:=max[i];

if min[i]<=miny then miny:=min[i]; end;

case radiogroup1. ItemIndex of

0: begin edit9. Text:=floattostr (xh[1]);

edit10.Text:=floattostr (fy (xh[1], strtofloat (edit1.Text), strtofloat (edit2.Text)));

edit11.Text:=floattostr (fy (xh[1], strtofloat (edit3.Text), strtofloat (edit4.Text)));

edit12.Text:=floattostr (fy (xh[1], strtofloat (edit5.Text), strtofloat (edit6.Text)));

series7.AddXY (xh[1], maxy); series7. AddXY (xh[1], miny); end;

1: begin series7. AddXY (xh[2], maxy); series7. AddXY (xh[2], miny);

edit9.Text:=floattostr (xh[2]);

edit10.Text:=floattostr (fy (strtofloat (edit1.Text), xh[2], strtofloat (edit2.Text)));

edit11.Text:=floattostr (fy (strtofloat (edit3.Text), xh[2], strtofloat (edit4.Text)));

edit12.Text:=floattostr (fy (strtofloat (edit5.Text), xh[2], strtofloat (edit6.Text))) end;

2: begin series7. AddXY (xh[3], maxy); series7. AddXY (xh[3], miny);

edit9.Text:=floattostr (xh[3]);

edit10.Text:=floattostr (fy (strtofloat (edit1.Text), strtofloat (edit2.Text), xh[3]));

edit11.Text:=floattostr (fy (strtofloat (edit3.Text), strtofloat (edit4.Text), xh[3]));

edit12.Text:=floattostr (fy (strtofloat (edit5.Text), strtofloat (edit6.Text), xh[3])) end; end;end;

end.

Показать весь текст
Заполнить форму текущей работой