Вероятностные процессы и математическая статистика в автоматизированных системах
Развитие современной техники связано с созданием новых и постоянным совершенствованием существующих технологических процессов. Основой их разработки и оптимизации является эксперимент. Заметное повышение эффективности экспериментальных исследований и инженерных разработок достигается использованием математических методов планирования экспериментов. Использование математико-статистических методов при постановке задач. В процессе экспериментирования и при обработке полученных данных существенно сокращает сроки решения, снижает затраты на исследования и повышает качество полученных результатов.
Встречающиеся на практике реальные задачи весьма разнообразны. Достаточно грубо их можно разделить на три основных задачи:
1 Выявление количественных зависимостей между параметрами процесса тАУ задачи описания
2 Определение оптимальных условий протекания процесса тАУ экстремальные задачи
3 Выбор оптимального состава многокомпонентных смесей.
Часто, приступая к изучению какого-либо процесса экспериментатор не имеет исчерпывающих сведений о механизме процесса. Можно только указать параметры определяющие условия протекания процесса, и, возможно требования к его результатам. Поставленная проблема является задачей кибернетики. Действительно, если считать кибернетику Влнаукой, изучающей системы любой природы, способные воспринимать, хранить и перерабатывать информацию для целей оптимального управленияВ» [1], то такую систему можно представить в виде черного ящика.
Черный ящик тАУ объект исследования, имеющий (k+p) входов и m выходов.
X тАУ управляемые параметры, Z тАУ неуправляемые параметры.
Зависимость между выходными параметрами (откликом) и входными параметрами (факторами) называется функцией отклика.
Математическая запись функции отклика представлена в виде формулы (1):
(1)
Этому уравнению в многомерном пространстве соответствует гипперповерхность, которая называется поверхностью отклика, а само пространство тАУ факторным пространством.
Эксперимент можно проводить по разному. В случае, когда исследователь наблюдает за каким-то неуправляемым процессом, не вмешиваясь в него, или выбирает экспериментальные точки интуитивно, на основании каких-то привходящих обстоятельств, эксперимент считают пассивным. В настоящее время пассивный эксперимент считается неэффективным.
Гораздо более продуктивно проводится эксперимент, когда исследователь применяет статистические методы на всех этапах исследования, и, прежде всего, перед постановкой опытов, разрабатывая схему эксперимента, а также в процессе экспериментирования, при обработке результатов и после эксперимента, принимая решение о дальнейших действиях. Такой эксперимент считают активным, и он предполагает планирование эксперимента.
Под планированием эксперимента понимают процедуру выбора числа и условий проведения опытов, необходимых и достаточных для решения поставленной задачи с требуемой точностью. Основные преимущества активного эксперимента связаны с тем, что он позволяет:
1 Минимизировать общее число опытов;
2 Выбирать четкие логически обоснованные процедуры, последовательно выполняемые экспериментатором при проведении исследования;
3 Использовать математический аппарат, формализующий многие действия экспериментатора;
4 Одновременно варьировать всеми переменными и оптимально использовать факторное пространство;
5 Организовать эксперимент таким образом, чтобы выполнялись многие исходные предпосылки регрессионного анализа;
6 Получать математические модели, имеющие лучшие в некотором смысле свойства по сравнению с моделями, построенными из пассивного эксперимента;
7 Рандомизировать условия опытов, то есть многочисленные мешающие факторы превратить в случайные величины;
8 Оценивать элемент неопределенности, связанный с экспериментом, что дает возможность сопоставлять результаты, полученные разными исследователями [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 тАУзначение этого фактора на нулевом уровне;
dI тАУ интервал варьирования факторов.
Составим таблицу кодирования факторов, используя исходные данные.
Таблица 1 - Таблица кодирования факторов
2.3 Составление план тАУ матрицы
В план тАУ матрице должны быть указаны все возможные комбинации уровней факторов.
Таблица 2 тАУ Расширенная план тАУ матрица ортогонального плана
2.4 Проверка воспроизводимости опытов
При одинаковом числе параллельных этапов воспроизводимость опытов определяется по критерию Кохрена.
Для этого сначала считаются дисперсии, характеризующие рассевание результатов на каждом u-м опыте.
Проверка воспроизводимости опытов показана на рисунке 2.
Рисунок 2- Воспроизводимость опытов
2.5 Расчет коэффициентов регрессии
Поскольку план ортогонален, то коэффициенты регрессии будут определяться независимо друг от друга по формулам:
Значения при ядре плана :
Матрица дисперсий (ковариаций) коэффициентов регрессии рассчитывается по формуле (10).
2.6 Определение значимости коэффициентов
Значимость коэффициентов регрессии проверяют по критерию Стьюдента:
(17)
Дисперсия коэффициентов определяется по формуле
2.7 Проверка адекватности модели
Адекватность модели проверяется с помощью критерия Фишера:
(17)
, (18)
где Sад2 тАУ дисперсия адекватности, рассчитываемая по формуле (18);
Sy2 тАУ дисперсия опыта;
a=0.05;
fад=N-l, число свободы дисперсии адекватности;
fy=N(m-1), число свободы дисперсии опыта;
l тАУ количество значимых коэффициентов.
Если неравенство (17) выполняется, значит модель адекватна.
3. Выбор и описание метода условной оптимизации
3.1 Выбор метода условной оптимизации
При решении поставленной задачи оптимизации был использован метод Фиако-МакКормика, который относится к непрямым методам решения задач нелинейного программирования. Непрямые методы преобразуют задачи с ограничениями в последовательность задач безусловной оптимизации путем введения в целевую функцию штрафных функций.
3.2 Описание метода условной оптимизации (Фиако-МакКормика)
Алгоритм метода Фиако-Маккормика
Этап 1. Задание ,, .
Этап 2. Нахождение методом прямого поиска минимума вспомогательной функции , т.е. .
Этап 3. Проверка условий окончания поиска . Если условие выполняется по переход на этап 6, иначе переход на этап 4.
Этап 4. Уменьшение значения , , .
Этап 5. Увеличение . Переход на этап 2.
Этап 6. Оптимальное решение , .
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 Используемые технические средства
Для оптимальной работы программы необходима следующая конфигурация компьютера:
1) процессор Intel Pentium III|| 500;
2) ОЗУ 64 Мб;
3) SVGA монитор (разрешение 800х600);
4) свободное место на жестком диске не менее 2 Mb;
4.5 Вызов и загрузка
Для инсталляции программы необходимо выполнить следующие шаги:
1) убедиться в том, что компьютер, на который устанавливается система, отвечает всем требованиям, изложенным в разделе ВлМинимальные системные требованияВ»;
2) убедиться в исправности накопителей на гибких магнитных носителях;
3) перекопировать программу на жесткий диск компьютера;
4) запустить файл 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*x1^2 x2=0 x3=0
y= 25,60 + 3,87*x1 + 2,97*x1^2 x2=1 x3=0
y= 22,73 + 1,02*x1 + 2,97*x1^2 x2=1 x3=1
Рисунок 5 - зависимость отклика от изменения параметра x2. Зависимость отклика от X2
y= 30,60 + -1,94*x2 + -3,05*x2^2 x1=0 x3=0
y= 33,57 + 1,92*x2 + -3,05*x2^2 x1=1 x3=0
y= 34,35 + -4,57*x2 + -3,05*x2^2 x1=1 x3=1
Рисунок 6 - зависимость отклика от изменения параметра x3. Зависимость отклика от X3
y= 30,60 + 3,63*x3 + 0,00*x3^2 x1=0 x2=0
y= 33,57 + 0,78*x3 + 0,00*x3^2 x1=1 x2=0
y= 32,44 + -5,71*x3 + 0,00*x3^2 x1=1 x2=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]:='Íóëåâîé óðîâåíü';
sgcod.Cells[0,2]:='Èíòåðâàë âàðüèðîâàíèÿ';
sgcod.Cells[0,3]:='Íèæíèé óðîâåíü';
sgcod.Cells[0,4]:='Âåðõíèé óðîâåíü';
sgcod.Cells[0,5]:='Êîäîâîå îáîçíà÷åíèå';
sgcod.Cells[1,0]:='Ñîäåðæ. Li,% ';
sgcod.Cells[2,0]:='T ñòàð., ãð.Ñ ';
sgcod.Cells[3,0]:=' t ñòàð., ÷. ';
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]:='x1^2-'+floattostrf(xc2,fffixed,3,2);
sgplan.Cells[6,0]:='x2^2-'+floattostrf(xc2,fffixed,3,2);
sgplan.Cells[7,0]:='x3^2-'+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:=' Îïûòû'+#13+'âîñïðîèçâîäèìû';
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:='Íåçíà÷èìûå êîýôôèöèåíòû:';
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:=' Ìîäåëü àäåêâàòíà'
else
label27.Caption:=' Ìîäåëü íå àäåêâàòíà';
minmax;
memo2.lines.add('Êîîðäèíèòû öåíòðà ïîâåðõíîñòè');
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(' Ïîâåðõíîñòü, èìåþùàÿ ýêñòðåìóì')
else memo2.lines.add(' Ïîâåðõíîñòü òèïà ìèíèìàêñà');
memo2.lines.add(' Ëîêàëüíûé ýêñòðåìóì');
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:=' Îïûòû íå'+#13+'âîñïðîèçâîäèìû';
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('Ëèíèè ðåãðåññèè:');
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)+'*x1^2');
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)+'*x1^2');
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)+'*x1^2');
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('Ëèíèè ðåãðåññèè:');
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)+'*x2^2');
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)+'*x2^2');
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)+'*x2^2');
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('Ëèíèè ðåãðåññèè:');
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)+'*x3^2');
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)+'*x3^2');
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)+'*x3^2'); 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.
Вместе с этим смотрят:
10 способов решения квадратных уравнений
РЖнварiантнi пiдпростори. Власнi вектори i власнi значення лiнiйного оператора
РЖнтегральнi характеристики векторних полiв