Главная страница

Лабораторная работа 9Аппроксимация


Скачать 2.82 Mb.
НазваниеЛабораторная работа 9Аппроксимация
Дата03.04.2022
Размер2.82 Mb.
Формат файлаpdf
Имя файлаLaboratornye_raboty_vesenniy_semestr_removed.pdf
ТипЛабораторная работа
#438517
страница2 из 4
1   2   3   4
Код для работы с лабораторной работой
Dim X(13), Y(13)
Private Sub CommandButton1_Click()
Nz = Worksheets(1).Range("L2").Value
For i = 3 To 13
X(i) = Worksheets(1).Cells(i, 3).Value
Y(i) = Worksheets(1).Cells(i, 4).Value
Y(i) = Worksheets(1).Cells(i, 2).Value
Next i
S = 0
For i = 1 To N p = 1
For j = 1 To N
If j <> i And j <> Nz Then p = p * ((X(Nz) - X(j)) / (X(i) -
X(j)))
Next j
If i <> Nz Then S = S + Y(i) * p
Next i
For i = 3 To 13
Worksheets(1).Cells(i, 5).Value = X(i)
Worksheets(1).Cells(i, 6).Value = Y(i)
Worksheets(1).Range("L3").Value =
Worksheets(1).Cells(Nz + 2, 2)
Worksheets(1).Range("L4").Value =
Worksheets(1).Cells(Nz + 2, 6)
Worksheets(1).Range("M4").Value =
Worksheets(1).Range("B54")
Next i
End Sub

27
Private Sub CommandButton2_Click()
Nz = Worksheets(1).Range("L2").Value
For i = 3 To 13
X(i) = Worksheets(1).Cells(i, 3).Value
Y(i) = Worksheets(1).Cells(i, 4).Value
Y(i) = Worksheets(1).Cells(i, 2).Value
Next i
S = 0
For i = 1 To N p = 1
For j = 1 To N
If j <> i And j <> Nz Then p = p * ((X(Nz) - X(j)) / (X(i) - X(j)))
Next j
If i <> Nz Then S = S + Y(i) * p
Next i
For i = 3 To 13
Worksheets(1).Cells(i, 7).Value = X(i)
Worksheets(1).Cells(i, 8).Value = Y(i)
Worksheets(1).Range("H6").Value =
Worksheets(1).Range("C54")
Worksheets(1).Range("L5").Value =
Worksheets(1).Range("C54")
Worksheets(1).Range("M5").Value =
Worksheets(1).Range("D54")
Next i
End Sub

28
Контрольные вопросы.
1.Для чего предназначены методы интерполяции и экстраполяции?
2.В чем различие и сходство методов интерполяции и экстраполяции?
Private Sub CommandButton3_Click()
Worksheets(1).Range("L3").Value = " "
Worksheets(1).Range("L4").Value = " "
Worksheets(1).Range("M4").Value = " "
For i = 3 To 13
Worksheets(1).Cells(i, 5).Value = " "
Worksheets(1).Cells(i, 6).Value = " "
Next i
End Sub
Private Sub CommandButton4_Click()
Worksheets(1).Range("L3").Value = " "
Worksheets(1).Range("L4").Value = " "
Worksheets(1).Range("M4").Value = " "
For i = 3 To 13
Worksheets(1).Cells(i, 7).Value = " "
Worksheets(1).Cells(i, 8).Value = " "
Next i
End Sub

29
3. Как порядок сплайна связан с количеством точек, по которым восстанавливается
дефектная точка?
Вывод по проделанной работе.
Проделав данную лабораторную работу, мы научились применять формулы полиномиальной и сплайн-интерполяции для восстановления отсутствующих (дефектных) значений в массивах экспериментальных данных.

30
Лабораторная работа №12.Аппроксимация.
Цель работы: научиться применять формулы метода наименьших квадратов для построения полиномов, аппроксимирующих ряд экспериментальных данных.
Порядок работы:
Уровни
Примечание
А
1. Подготовить исходный (точный) ряд данных на листе
Excel в виде 2- х столбцов для X и Y. Где X – аргумент, изменяющийся с некоторым шагом, Y – некоторая функция от Х, например, Y=Aточн*X+Bточн и представить этот массив на графике, коэффициенты
Aточн, Bточн поместить на листе ниже. Количество точек исходного ряда взять по номеру студента в подгруппе журнала преподавателя + 5.
2. Подготовить заголовки для дефектного ряда данных, восстановленного ряда (по формуле МНК), разместить на листе 3 диаграммы и 4 командные кнопки.
3. Смоделировать появление погрешности (дефекта) при
«измерении и передачи исходных данных». Для этого по кнопке «Создать дефект» написать программу считывания столбцов 1,2 в массивы X(i), Y(i) и записи этих массивов в столбцы 3, 4. При записи Y(i) в столбец 4 использовать встроенную функцию RND – датчик случайных чисел, при этом степень дефектности прочитать с соответствующей ячейки листа Excel(см. лекции).
4. По кнопке «Убрать дефект» написать такую же программу, но без использования датчика случайных чисел.
5. Сохранить заготовленный файл на диске под своей фамилией с номером лабораторной работы (в двух местах) или отправить файл на свой почтовый ящик для продолжения работы на следующем занятии.
6. По кнопке «Расчет по МНК» составить программу, состоящую из трех частей. 1 часть – расчет коэффициентов А, В по методу наименьших квадратов и их погрешностей (см. лекции), 2 часть – вычисление Y от
X по расчетным коэффициентам А, В, 3 часть - запись результатов на лист: в 5, 6 столбцы, в ячейки B22, B23,
D22, D23.
7. По кнопке «Очистка» набрать программу стирания содержимого 5, 6 столбцов, ячейки B22, B23, D22, D23.
Отладить обе программы с помощью выполнения по шагам.
8. Сохранить заготовленный файл на диске под своей фамилией с номером лабораторной работы (в двух местах) или отправить файл на свой почтовый ящик для продолжения работы на следующем занятии.
В
9. Взять у преподавателя номер индивидуального задания и выполнить расчеты. Сделать 2 проверки: 1) при нулевой степени дефектности все расчетные погрешности должны получиться тоже нулевыми, 2) при любой отличной от нуля степени дефектности наложить линию тренда

31
(средствами Excel) и она должна совпасть с графиком восстановленного ряда данных.
10. По результатам составить отчет и сделать вывод о погрешности в зависимости от степени дефектности.
11.Постепенно увеличивать уровень помех, действующих на исходный ряд данных (через степень дефектности), пока тенденция данных восстановленного ряда не станет противоположной тенденции данных исходного ряда.
12.Количество точек в исходном ряде данных увеличить в два раза, повторить расчеты и сделать вывод в отчете, при каком уровне дефектности МНК перестает правильно делать прогноз тенденции исходных данных.
Расчетные формулы:
1 1
1 2
2 1
1 1
*
*
*
*
(
)
(
)
1
(
*
)
N
N
N
i
i
i
i
i
i
i
N
N
i
i
i
i
N
i
i
i
N
X
Y
X
Y
a
N
X
X
b
Y
a X
N
=
=
=
=
=
=

=

=







Фрагмент программы расчета по МНК
s1 = 0 s2 = 0 s3 = 0 s4 = 0
For i = 1 To N s1 = s1 + x(i) * y(i) s2 = s2 + x(i) s3 = s3 + y(i) s4 = s4 + x(i) ^ 2 Next i

32
A = ((N + 1) * s1 - s2 * s3) / ((N + 1) * s4 - s2 ^ 2)
Worksheets(1).Cells(22, 2).Value = A s5 = 0
For i = 1 To N s5 = s5 + (y(i) - A * x(i)) Next i
B = s5 / N
Worksheets(1).Cells(23, 2).Value = B
Ход работы.
1. Подготовить исходный (точный) ряд данных на листе Excel в виде 2- х столбцов для X и
Y. Где X – аргумент, изменяющийся с некоторым шагом, Y – некоторая функция от Х, например, Y=Aточн*X+Bточн и представить этот массив на графике, коэффициенты
Aточн, Bточн поместить на листе ниже.
Рисунок –1Создание столбцов и графика.
2. Подготовить заголовки для дефектного ряда данных, восстановленного ряда (по формуле МНК), разместить на листе 3 диаграммы и 4 командные кнопки.
Рисунок–2 Подготовка заголовков и размещение кнопок и диаграмм.

33 3. Смоделировать появление погрешности (дефекта) при «измерении и передачи исходных данных». Для этого по кнопке «Создать дефект» написать программу считывания столбцов 1,2 в массивы X(i), Y(i) и записи этих массивов в столбцы 3,
Рисунок 1.3.Написание программы считывание столбцов.
4. При записи Y(i) в столбец 4 использовать встроенную функцию RND – датчик случайных чисел, при этом степень дефектности прочитать с соответствующей ячейки листа Excel.
Рисунок–4 Чтение дефектности.
5. По кнопке «Убрать дефект» написать такую же программу, но без использования датчика случайных чисел.
Рисунок 1.5.Написание программы для того, чтобы убрать дефект.
6. Сохранить заготовленный файл на диске под своей фамилией с номером лабораторной работы.
Рисунок–6 Сохранение файла.
7. По кнопке «Расчет по МНК» составить программу, состоящую из трех частей. 1 часть – расчет коэффициентов А, В по методу наименьших квадратов и их погрешностей (см. лекции), 2 часть – вычисление Y от X по расчетным коэффициентам А, В, 3 часть - запись результатов на лист: в 5, 6 столбцы, в ячейки
B22, B23, D22, D23.

34
Рисунок–7 Написание программы для кнопки “Расчет по МНК”.
8. По кнопке «Очистка» набрать программу стирания содержимого 5, 6 столбцов, ячейки B22, B23, D22, D23.
Рисунок–8 Написание программы для кнопки “Очистка”.
9. Отладить обе программы с помощью выполнения по шагам.

35
Рисунок–9 Проверка работы программ.
10. При нулевой степени дефектности все расчетные погрешности должны получиться тоже нулевыми.
Рисунок–10 Нулевая степень дефектности.
11. При любой отличной от нуля степени дефектности наложить линию тренда
(средствами Excel) и она должна совпасть с графиком восстановленного ряда данных.

36
Рисунок–11 Степень, отличная от нуля.
Контрольные вопросы.
1)Для чего предназначены методы аппроксимации?
Аппроксимация – метод приближения, при котором для нахождения дополнительных значений, отличных от табличных данных, приближенная функция проходит не через узлы интерполяции, а между ними.
2)В чем различие и сходство методов интерполяции и аппроксимации?
Интерполя́ция — в вычислительной математике способ нахождения промежуточных значений величины по имеющемуся дискретному набору известных значений.
Аппроксимация, или приближение — математический метод, состоящий в замене одних математических объектов другими, в том или ином смысле близкими к исходным, но более простыми.
3) В чем заключается главное преимущество методов наименьших квадратов?
математический метод, применяемый для решения различных задач, основанный на минимизации суммы квадратов отклонений некоторых функций от искомых переменных.
Он может использоваться для «решения» переопределенных систем уравнений (когда количество уравнений превышает количество неизвестных), для поиска решения в случае обычных (не переопределенных) нелинейных систем уравнений, для аппроксимации точечных значений некоторой функции. МНК является одним из базовых методов регрессионного анализа для оценки неизвестных параметров регрессионных моделей по выборочным данным.
4) В чем различие и сходство линейное и нелинейное аппроксимации?
Отличие его заключается в аппроксимации нелинейной динамической системы линейной системой того же порядка, что и исходная нелинейная. По существу, это метод номинальных траекторий, отличающийся тем, что номинальная траектория является аппроксимацией решения детерминированной части дифференциального уравнения экспоненциальным рядом.
5)Какую информацию можно извлечь из ряда экспериментальных данных с помощью
аппроксимации?

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

38
Лабораторная работа №13: Решение задач Python с элементами комбинаторики
Цель работы: применить элементы комбинаторики в программе Python.
Введение:
Комбинаторика — это раздел математики, в котором изучаются способы выбора и размещения элементов некоторого конечного множества на основании определенных условий.
Комбинаторика тесно связана со многими другими областями математики — алгеброй, геометрией, теорией вероятностей, теорией чисел и другими. Она применяется в самых различных областях знаний (например, в генетике, информатике, статистике, статистической физике, лингвистике).
Трудоемкость алгоритма решения задачи – временная сложность кода.
Для упрощения алгоритмов применяют различные способы. Одним из них является использование библиотек в Python.
Лабораторная работа. Комбинаторика
Задание 1. Посчитать:

39 число размещений
2 6
А
число перестановок
4
P
число сочетаний
2 4
C
Код для размещения
Размещениями называют различные комбинации из m объектов, которые выбраны из множества n различных объектов, и которые отличаются друг от друга как составом объектов в выборке, так и их порядком.
Формула:
!
(
)!
n
m
An
n
m
=

Код для перестановки
n = int(input()) m = int(input()) f = 1 for i in range(2, n+1): f = f*i r = 1 for i in range(2, n - m + 1): r = r * i a = f/r print(a)

40
Перестановками называются такие выборки элементов, которые отличаются только порядком расположения элементов, но не самими элементами.
Формула:
!
n
P
n
=
Код для сочетания
Сочетаниями называют различные комбинации из m объектов, которые выбраны из множества n различных объектов, и которые отличаются друг от друга хотя бы одним объектом. def factorial(n): if (n <= 1): return 1 else: return (n * factorial(n-1)) n = int(input("Введите число:")) print("Факториал числа равен:") print(factorial(n))

41
!
! (
)!
m
n
n
C
m
n m
=
 −
Задание 2
Отладить программу генерации размещений, перестановок и сочетаний n = int(input()) m = int(input()) f = 1 for i in range(2, n+1): f = f * i f2 = 1 for i in range(2, n - m + 1): f2 = f2 * i f3 = 1 for i in range(2, m + 1): f3 = f3 * 1 b = f/(f3 * f2) print(b)

42
Программа генерации размещений, перестановок и сочетаний
import matplotlib.pyplot as plt #Библиотека графики
from itertools import permutations
from itertools import combinations
def Factorial (n):
f=1
for i in range(n):
f=f*(i+1)
return f
s='1234' #Начальное множество
k=2 #Размер выборки
print('Начальное множество s=', s)
print('Размер выборки k=' ,k)
nf=Factorial(len(s)); nk=Factorial(k); nfk=Factorial(len(s)-k)
#Вывод размещений
data=list(permutations(s,k))
print('количество размещений=',nf/nfk)
print('размещения=',data)
#Вывод перестановок
data=list(permutations(s,len(s)))
print('количество перестановок=',nf)
print('перестановки=',data)
#Вывод сочетаний
data=list(combinations(s,k))
print('количество сочетаний=',nf/(nk*nfk))
print('сочетания=',data)
Функция
Значение
itertools
Позволяет решать программные задачи, построенные на структурах комбинаторики

43 from itertools import permutations предоставляет возможность создать сочетание from itertools import combinations предоставляет возможность создать комбинацию for
Цикл for в языке программирования Python предназначен для перебора элементов структур данных (списков, словарей, кортежей, множеств) и многих других объектов. range позволяет нам генерировать ряд чисел в рамках заданного диапазона def Factorial (n) идентификатор, то есть имя нашей функции. После идентификатора в круглых скобках идет список параметров, которые получает наша функция. Список состоит из перечисленных через запятую идентификаторов параметров. В нашем случае список состоит из одной величины n. len
Функция определяет количество элементов в объекте
List(список) тип данных, предназначенный для хранения набора или последовательности разных элементов return
Выражение return прекращает выполнение функции
Генеральная совокупность-все множества исследуемых объектов
Выборка - набор объектов, случайно отобранных и из генеральной совокупности для исследования.

44
Лабораторная работа
Задание №1
Посчитать число сочетаний
5 10
C
n = int(input()) m = int(input()) f = 1 for i in range(2, n+1): f = f * i f2 = 1 for i in range(2, n - m + 1): f2 = f2 * i f3 = 1 for i in range(2, m + 1): f3 = f3 * i a = f/(f2*f3) print(a)

45
Задание №2
Посчитать количество перестановок из 6 элементов
Задание №3
Посчитать количество размещений
5 10
А
def factorial(n): if (n <= 1): return 1 else: return (n * factorial(n-1)) n = int(input("Введите число:")) print("Факториал числа равен:") print(factorial(n))

46
Пример задач
Перестановка с повторениями
№1. Сколько разных буквосочетаний можно сделать из букв слова «Миссисипи»? n = int(input()) m = int(input()) f = 1 for i in range(2, n+1): f = f*i r = 1 for i in range(2, n - m + 1): r = r * i a = f/r print(a)

47 n = int(input("Введите число:")) m = int(input("Введите число:")) a = int(input("Введите число:")) b = int(input("Введите число:")) c = int(input("Введите число:")) f = 1 for i in range(2, n+1): f = i*f f5 = 1 for i in range(2, m+1): f5 = i*f5 f2 = 1 for i in range(2, a+1): f2 = i*f2 f3 = 1 for i in range(2, b+1): f3 = i*f3 f4 = 1 for i in range(2, c+1): f4 = i*f4
P = (f\(f5*f2*f3*f4)) print(P)

48
Размещение:
В некоторой газете 12 страниц. Необходимо на страницах этой газеты поместить четыре фотографии. Сколькими способами можно это сделать, если ни одна страница газеты не должна содержать более одной фотографии? n = int(input()) m = int(input()) f = 1 for i in range(2, n+1): f = f*i r = 1 for i in range(2, n - m + 1): r = r * i a = f/r print(a)

49
1   2   3   4


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