Главная страница
Навигация по странице:

  • Сведения о методе

  • Вопросы для самопроверки

  • Практическое занятие 13 Корреляционный анализ данныхЦель занятия

  • Методические указания для подготовки к практическим занятиям. По курсу Информационные технологии в электроэнергетике


    Скачать 3.37 Mb.
    НазваниеМетодические указания для подготовки к практическим занятиям. По курсу Информационные технологии в электроэнергетике
    Дата21.12.2022
    Размер3.37 Mb.
    Формат файлаdoc
    Имя файлаPraktika_po_informatsionnym_tekhnologiam.doc
    ТипМетодические указания
    #856058
    страница9 из 10
    1   2   3   4   5   6   7   8   9   10

    Практическое занятие 12

    Решение уравнения методом половинного деления отрезка.

    Цель занятия

    Знакомство студентов с методом нахождения решений уравнений y = f(x) методом половинного деления отрезка.

    Сведения о методе

    Пусть дана некоторая функция некая y = f(x), показанная на рис. 12.1. Мы точно знаем, что функция пересекает ось абсцисс всего один раз на отрезке между значениями х0 и хk. В этом случае алгоритм нахождения решения уравнения по методу половинного деления отрезка строится следующим образом:

    1. находится середина отрезка х0 и хk, т.е. x:=(x0 и xk )/2.

    2. Находится значение функции y = f(x) в точке середины отрезка.

    3. Если y > 0, тогда начальному значению отрезка присваивается значение середины отрезка (x0:=x;), если меньше нуля, конечному значению отрезка присваивается значение середины отрезка(xk:=x;).

    4. Пункты 1,2 и 3 повторяют до тех пор, пока величина отрезка не станет меньше заданной точности определения решения уравнения.



    Рис. 12.1. Функция y = f(x) и способ определения х для у = 0

    Порядок выполнения работы

    Задание 1

    Запустите Дельфи. Создайте заголовок формы «Решение уравнения методом половинного деления отрезка». Сохраните программу в папке практика 12. Проверьте число сохранённых файлов (должно быть не менее 6).

    Положите на форму компонент Panel, удалите её заголовок и измените цвет на clSkyBlue.

    Положите на панель следующие компоненты: а) две кнопки запуска типа Buttonи измените их заголовки на «Старт» и «График»; б) 3 компонента LabeledEdit из дополнительной палитры компонентов и измените их заголовки на следующие: «начало», «конец» и «решение». Измените размеры панели так, чтобы компоненты занимали большую часть площади панели, а саму панель с компонентами переместите в верхний левый угол формы. Положите на форму под панелью отладочное поле вывода Memo, выровняйте его по ширине с панелью, измените вертикальный размер до края формы и вставьте линейки прокрутки.

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

    Задание 2

    Двойным щелчком на кнопке «График» создайте заготовку процедуры построения графика. В разделе описания переменных опишите переменные с плавающей запятой х и у и целочисленную переменную n. Постройте график функции, заданной преподавателем (y:=500-2*x-3*sqr(x)+0.03*x*sqr(x);). Определите границы отрезков, где функция имеет только одно решение, и запишите эти значения в поля Text компонент LabeledEdit с заголовками «начало» и «конец».

    Задание 3

    Двойным щелчком на кнопке «Старт» создайте заготовку процедуры нахождения решения уравнения, заданного в задании 2. В разделе описания переменных опишите переменные с плавающей запятой x, x0, xk,dx и y и целочисленную переменную n. В теле процедуры присвойте переменным x0, xkзначения начала и конца отрезка, на котором будет искаться решение из соответствующих полей Text компонент LabeledEdit. Присвойте значение 1 переменной n. Задайте требуемую точность определения корня заданного уравнения y = f(x), присвоив её значение переменной dx.

    Создайте заготовку условного цикла

    Repeat

    Untilxk-x0 < dx;

    В тело цикла вставьте пункты 1, 2 и 3 из раздела сведений о методе. Увеличьте в теле цикла значение n на 1 (n:=n +1;). Дополните цикл выводом переменных n и х в поле memo.

    После выхода из цикла найдите середину получившегося отрезка и выведите её значение в фиксированном формате в поле memo и полей Text компонента LabeledEditс заголовком «решение».

    Задание 4

    Определите минимальный ток молнии, у которого вероятность возникновения равна 0,5. Для определения вероятности тока молнии использовать уравнение (11.2). Решение искать в диапазоне токов от 0 до 250 кА.

    Вопросы для самопроверки

    1. Объясните алгоритм решения уравнения y = f(x) методом половинного деления отрезка.

    2. Как правильно выбрать начальное и конечное значение отрезка в методе половинного деления отрезка?

    3. Какие ограничения накладываются на вид функции y = f(x), решения которой находятся методом половинного деления отрезка?

    4. Если начальное значение отрезка равно а (x = a), а конечное значение отрезка равно b (x = b), то какими должны быть значенияy = f(a) и y = f(b)?

    5. Если функция y = f(x) может иметь несколько корней, как определить все корни на отрезке a < x < b?

    6. С какой точностью можно найти корень уравнения y = f(x) методом половинного деления отрезка?

    7. Как задать точность определения корня уравнения y = f(x) методом половинного деления отрезка?

    8. При каких условиях решение уравнения y = f(x) методом половинного деления отрезка будет не верным?

    9. Можно ли применить метод половинного деления отрезка для определения минимального тока молнии, вероятность возникновения у которого задана (например, равна 0,5)?

    10. Какие изменения в стандартную процедуру нахождения корней уравнения y = f(x) методом половинного деления отрезка следует внести для того, что определить точки пересечения функции y = f(x) с прямой y = const(например, y = 0,5)?


    Практическое занятие 13

    Корреляционный анализ данных

    Цель занятия

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

    Сведения о методе

    Одним из методов, применяемых для контроля состояния силовых трансформаторов (СТ), является метод низковольтных импульсов (НВИ) (другое название метода - метод частотного анализа).

    Алгоритм диагностики по этому методу состоит из следующих этапов:

    1. На обмотку СТ подаётся низковольтный импульс длительностью порядка 1 мкс и напряжением 100 ÷ 300 В. Прямые схемы измерений амплитудно–частотных характеристик (АЧХ) СТ с обмотками типа Y/Yн методом НВИ показаны на рис. 13.1;



    Рис. 13.1. Прямые схемы измерений СТ по методу НВИ. 1 – генератор прямоугольных импульсов, 2 – осциллограф с платой АЦП
    2. В обмотке СТ возникает переходной процесс, который записывается в цифровом виде в память компьютера (рис. 13.2);



    Рис. 13.2. Переходной процесс в обмотке СТ после подачи запускающего импульса (ЗИ) с параметрами пункта 1 алгоритма метода

    3. Выполняется Фурье преобразование переходного процесса (функция от времени U = f(t)) в передаточную функцию, зависящую от частоты U = f(), представленную на рис. 13.3.



    Рис. 13.3. Передаточные функции трансформатора ТСЗИ-2,5

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

    ,

    (13.1)

    где xi – значение ординаты i-й точки первой кривой; – среднее арифметическое всех значений ординат первой кривой; yi – значение ординаты i-й точки второй кривой; – среднее арифметическое всех значений ординат второй кривой.

    5. Выдаётся заключение о дальнейшей работоспособности (при kr  0.96) или не работоспособности (при kr < 0.96) СТ.

    Задание 1

    Запустите Дельфи. Создайте заголовок формы «Определение коэффициента корреляции». Сохраните программу в папке практика 13. Проверьте число сохранённых файлов (должно быть не менее 6).

    Положите на форму компонент Panel, удалите её заголовок и измените цвет на clSkyBlue.

    Положите на панель следующие компоненты: а) 2 кнопки запуска типа Buttonи измените их заголовки на «Старт» и «График»; б) 1 компонент LabeledEdit из дополнительной палитры компонентов и измените его заголовок на «коэффициент корреляции». Измените размеры панели так, чтобы компоненты занимали большую часть площади панели, а саму панель с компонентами переместите в верхний левый угол формы. Положите на форму под панелью отладочное поле вывода Memo, выровняйте его по ширине с панелью, измените вертикальный размер до края формы и вставьте линейки прокрутки. Положите на форму компонент OpenDialog из палитры компонентов Dialogs.

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

    Задание 2

    В конце раздела описания типов и перед разделом описания глобальных переменных (var Form1: TForm1;) опишите одномерный массив из 200 переменных типа real:

    type massiv1 = array[1..200] of Real;.

    В разделе описания глобальных переменных (после описания Form1: TForm1;) опишите 4 переменные типа massiv1: wk1, k2, k3: massiv1; целочисленную переменную Nw (число выборок после преобразования Фурье).

    Двойным щелчком на кнопке «График» создайте заготовку процедуры. В разделе описания переменных опишите целочисленную переменную I и переменную типа текстового файла f1:TextFile;.

    Организуйте присвоение текстовому файлу f1 имени из диалогового окна: if dlgOpen1.Execute then AssignFile(f1,dlgOpen1.FileName);.

    Откройте файл для чтения и закройте его:

    Reset(f1);

    CloseFile(f1);

    Между двумя этими командами вставьте пролистывание первой строки файла данных: Readln(f1); и создайте цикл чтения с числом строк 165:

    for i:=0 to 165 do

    begin

    end;

    В тело цикла вставьте команду чтения данных:

    Readln(f1,w[i],k1[i],k2[i],k3[i]);

    И вывод полученных данных на график

    chart2.Series[0].AddXY(w[i], k1[i]);

    chart2.Series[1].AddXY(w[i], k2[i]);

    chart2.Series[2].AddXY(w[i], k3[i]);.

    Запустите программу и убедитесь, что графики строятся при чтении данных из различных текстовых файлов. Чтобы графики от разных файлов не накладывались, перед циклом вывода поставьте команды очистки соответствующих графиков (fori:=0 to 2 do chart2.Series[i].clear;).

    Задание 3

    Создайте заготовку функции вычисления коэффициента корреляции в соответствии с формулой (13.1):

    function FactorToСorrelations(x, ymassiv1; mInteger): Real;

    begin

    end;{function FactorToСorrelations}

    В разделе описания переменных функции опишите одну целочисленную переменную цикла I и переменные с плавающей запятой: xmed, ymed, sumx, sumy, sumxy, sumdx2, sumdy2.

    В теле функции обнулите переменные sumx, sumy, sumxy, sumdx2, sumdy2 , на которых будет накапливаться соответствующие значения при суммировании.

    Создайте цикл для расчёта средних значений:

    for i:=1 to m do

    begin

    sumx:=sumx+x[i];

    sumy:=sumy+y[i];

    end;.

    Переменная sumx(sumy) была равна нулю до входа в цикл, а после выхода из цикла станет равной сумме всех значений x[i] (y[i]). Для вычисления среднего значения ( ) нужно сумму разделить на количество чисел:

    xmed:=sumx/m; { }

    ymed:=sumy/m; { }

    Для вычисления коэффициента корреляции нужно найти суммы с участием среднего значения (13.1). Создайте цикл нахождения нужных сумм:

    for i:=1 to m do

    begin

    sumxy:=sumxy+(x[i]-xmed)*(y[i] - ymed); { }

    sumdx2:=sumdx2+sqr(x[i] - xmed);{ }

    sumdy2:=sumdy2+sqr(y[i] - ymed); { }

    end;

    и вычислите коэффициент по формуле (13.1):

    Result:=sumxy/sqrt(sumdx2*sumdy2);.

    Задание 4

    Двойным щелчком на кнопке «Старт» создайте заготовку процедуры.

    В разделе описания переменных функции опишите 3 переменные с плавающей запятой kcor12, kcor13, kcor23.

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

    kcor12:= FactorToСorrelations(k1, k2,165).

    Вопросы для самопроверки

    1. Объясните алгоритм диагностики состояния обмоток силовых трансформаторов (СТ) методом низковольтных импульсов (МНИ)?

    2. Какова должна быть форма зондирующего импульса в МНИ?

    3. Чему равна длительность зондирующего импульса в МНИ?

    4. Какова должна быть амплитуда зондирующего импульса в МНИ?

    5. Что измеряется измерительной системой в МНИ?

    6. Как осуществляется преобразование функции, зависящей от времени в функцию, зависящую от частоты?

    7. Что такое передаточная функция обмотки СТ?

    8. Какие различия между передаточной функцией и коэффициентом трансформации СТ?

    9. Что такое коэффициент корреляции двух функций?

    10. Для чего нужно рассчитывать коэффициент корреляции двух функций?

    11. Как рассчитать коэффициент корреляции двух функций?

    1. Как рассчитать среднее значение функции y = f(x) на интервалеa < x < b?

    1. В какой части кода программы следует описывать глобальные типы переменных?

    2. В какой части кода программы следует описывать локальные типы переменных?

    3. В чем состоит различие между глобальными и локальными типами переменных?

    4. Что обозначает следующая строка в разделе interfaseкода программы:typemassiv1 = array[1..200] ofReal;?

    5. Как создать команду перехода на следующую строку файла, открытого для чтения, без чтения информации текущей строки?

    6. Как построить графики функций, если данные разных графиков находятся в разных файлах?

    7. Как записать цикл чтения данных из файла с пятой строки файла до последней строки, если число строк в файле неизвестно?

    8. Как определить число строк в файле, если оно заранее не известно?

    9. Можно ли построить график функции, если данные о значениях и аргументах функции находятся в файле неизвестной длины (с неизвестным числом строк)?

    10. Как построить график функции, если данные о значениях и аргументах функции находятся в файле неизвестной длины (с неизвестным числом строк)?

    11. Как создать заготовку новой функции?

    12. В каких частях программного кода можно создавать заготовки новой функции?

    13. В какой части программного кода нужно создать заготовку новой функции, чтобы её можно было вызывать из любой процедуры программы?

    14. В какой части программного кода нужно создать заготовку новой функции, чтобы её можно было вызывать только из одной процедуры программы?

    15. Чем функция отличается от процедуры?

    16. Чем различаются формальные и фактические параметры функции?

    17. Можно ли переменную a, описанную как одномерный массив из 10 переменных типа real использовать в качестве формальной переменной функции?

    18. Можно ли переменную a, описанную как одномерный массив из 10 переменных типа real использовать в качестве фактической переменной функции?

    19. Как и в каком месте программы должен быть описан одномерный массив из 10 переменных типа real, чтобы массив можно было использовать в качестве фактической переменной функции?

    1   2   3   4   5   6   7   8   9   10


    написать администратору сайта