Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЭВМ_Семестр3_МетодПособие

.pdf
Скачиваний:
24
Добавлен:
05.06.2015
Размер:
2.99 Mб
Скачать

Необходимые условия

экстремума суммы квадратов отклонений

S с1

, , cm min

дают нормальную систему уравнений (5.5)

 

c1...cm

 

для определения неизвестных коэффициентов с1, , cm при базисных функциях приближающей зависимости по методу наименьших квадратов.

5.1.3 Пример решения задачи (выполнения задания 2)

Пример 5.3.

Данные x, y из вычислительного экспе-

Таблица 5.3.

римента (см.

таблицу 5.3) отражают

тенденции

 

 

x

y

 

 

 

 

 

 

 

 

уменьшения погрешности yA метода и увеличения

1

9

вычислительной погрешности yB с ростом значения

2

7

параметра x. Найти по методу наименьших квадратов

3

3

4

2,5

 

 

 

 

 

 

 

 

коэффициенты функции

f (x) c

x c

1 c

x , при-

6

1,5

 

 

1

2

3

 

 

ближающей зависимость

суммарной

погрешности

9

2

y=yA+yB от параметра x.

 

 

 

 

 

 

11

2,3

 

 

 

 

 

 

15

2

Решение примера 5.3 в Excel.

 

 

 

 

 

 

 

 

 

 

17

3

Левую верхнюю часть листа Excel используем для

20

4

 

 

 

 

 

 

 

 

размещения коэффициентов уравнений наблюдений,

причѐм значения коэффициентов матрицы F разместим в диапазоне ячеек A3:C12, а значения y - в диапазоне D3:D12 (см. таблицу 5.4). В диапазоне E3:E12, которому присвоим имя «x», разместим значения x, а диапазон A1:E2 используем для названий. Поместим в ячейки A3, B3 и C3 соответственно «=1/x», «1» и «=КОРЕНЬ(x)», а затем, «протянув» эти ячейки вниз, заполним весь диапазон F значениями. Выделим диапазон ячеек F2:I3 под коэффициенты нормальной системы уравнений, затем нажмем клавишу F2 и в начальную ячейку (F2) выделенного диапазона введѐм формулу =МУМНОЖ(ТРАНСП(A3:C12);A3:D12). После нажатия клавиш Ctrl+Shift+Enter вычисленные элементы матрицы A=FTF помещаются в диапазон ячеек F2:H4, а вектор b= FTy займѐт диапазон I2:I4.

91

Решение нормальной системы уравнений Ax=b выполним с по-

мощью разобранной выше функции, определѐнной пользователем xCdGauss. Для этого выделим диапазон ячеек F5:I5, нажмѐм клавишу F2, вставим в начальную ячейку F5 выделенного диапазона функ-

цию, определѐнную пользователем, xCdGauss и укажем для неѐ диа-

пазон F2:I4 ячеек с коэффициентами расширенной матрицы нормальной системы уравнений. Затем, после нажатия клавиш Ctrl+Shift+Enter выполняется решение нормальной системы уравнений, и вычисленные значения неизвестных помещаются по порядку в ячейки диапазона F5:H5, а в ячейку I5 записывается число обусловленности матрицы системы. Напомним, что если оно не слишком велико (см. раздел 2), то решение получено с приемлемой точностью.

Ячейкам F5, G5, H5 с вычисленными коэффициентами c1, c2 , c3 при-

ближающей функции

удобно присвоить соответственно имена «с1»,

Таблица. 5.4.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

B

C

D

E

F

G

H

 

I

 

1

 

(3*2)-СЛАУ Fc=y

 

Нормальная (3*3)-СЛАУ Ac=b

 

2

1/x

 

sqr(x)

y

x

1,482

2,628

4,552

15,316

 

3

1,00

1

1,00

9,00

1

2,628

10,000

27,381

36,300

 

4

0,50

1

1,41

7,00

2

4,552

27,381

88,000

84,402

 

5

0,33

1

1,73

3,00

3

10,690

-1,965

1,017

634,988

 

6

0,25

1

2,00

2,50

4

с1 =^

с2 =^

с3 =^

 

^=Cond(A)

 

7

0,17

1

2,45

1,50

6

 

 

 

 

 

 

8

0,11

1

3,00

2,00

9

 

 

 

 

 

 

9

0,09

1

3,32

2,30

11

 

 

 

 

 

 

10

0,07

1

3,87

2,00

15

 

 

 

 

 

 

11

0,06

1

4,12

3,00

17

 

 

 

 

 

 

12

0,05

1

4,47

4,00

20

 

 

 

 

 

«с2», «с3» (для несовпадениями с названиями ячеек буква «с» должна набиваться в русском регистре).

Для изображения на диаграмме исходных точек данных и графика приближающей зависимости разместим значения аргумента из отрезка его изменения, например, в диапазоне ячеек B14:B23 (см. таблицу 5.5) и присвоим ему имя, например, «arg». В нашем случае мы просто скопировали туда значения x, хотя можно было выполнить иное заполнение. В ячейку C14 мы помещаем формулу

92

«=с1/arg+с2+с3*КОРЕНЬ(arg)» для расчѐта значений приближающей функции. Отметим, что с1, с2, с3 - это не ячейки, а набитые в русском регистре имена, присвоенные ячейкам с вычисленными ранее коэффициентами приближающей функции. После «протягивания» этой формулы вниз диапазон C14:C23 заполняется значениями функции. Выделив далее диапазон ячеек B13:C23, вставляется то-

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

Таблица 5.5.

 

A

B

C

. . .

. . .

. . .

. . .

13

 

arg

f(arg)

14

 

1,000

9,743

15

 

2,000

4,819

16

 

3,000

3,361

17

 

4,000

2,743

18

 

5,000

2,448

19

 

6,000

2,309

20

 

7,000

2,254

21

 

10,000

2,322

22

 

15,000

2,689

23

 

20,000

3,120

12,00

10,00

8,00

6,00

4,00

2,00

0,00

0,00

5,00

10,00

15,00

20,00

Рис. 5.10.

Вычисления для примера 5.3 в MatLab.

Полагая, что на листе Excel уже подготовлены диапазоны с векторами x, y и arg, произведѐм их пересылку в MatLab, и запустим в MatLab выполнение следующих команд:

fi=inline(ʹ[1.*x, 1./x, 1+x.^0]ʹ) c=fi(x)\y

f=fi(arg)*c

93

После их выполнения перешлѐм из MatLab в Excel вектор f (на место значений f(arg)) и вектор коэффициентов c. График по значениям векторов x, y и arg, f удобно построить на точечной диаграмме.

5.1.4 Замечания осглаживанииданных методомнаименьших квадратов

1.В рассмотренном примере 5.3 базисные функции подбирались с учѐтом известных сведений о характере поведения величин, составляющих исходные данные. В случаях, когда подобный выбор базисных функций затруднителен, можно использовать какой-либо «универсальный» класс функций. К таким функциям можно отнести сплайн-функции. Для периодических функций хороший результат может дать использование тригонометрических рядов.

2.В рассматриваемых задачах сглаживания обычно предполагается, что число n точек данных велико (n>m) и их расположение таково, что, в крайнем случае, можно по каким-то m из них провести приближающую функцию (получить хотя бы один набор из m коэффициентов в линейной комбинации базисных функций). В этом случае нормальная система уравнений позволяет получить единственное решение задачи сглаживания. В вырожденных случаях нормальная система не позволяет найти единственное решение задачи – для од-

нозначности решения задачи Fc=y, c=? еѐ обычно дополняют требованием минимальности нормы вектора коэффициентов c .

3.При неудачном выборе базисных функций и данных нормальная система уравнений может оказаться плохо обусловленной. Например, при данных, отличающихся на порядки, полиномиальный базис (5.7) даѐт уравнения, коэффициенты которых отличаются на порядки. В таких случаях надо масштабировать данные либо лучше изначально решать задачу Fc=y, c=? устойчивым вычислительным методом (как это сделано в разделе «Вычисления для примера 5.3 в MatLab»).

5.2 Задание к расчетно-графической работе №5

Задание 1. Определить "вручную" коэффициенты c1 , c2 двух функций fа ( x) , fб ( x) , приближающих по методу наименьших квадратов точки данных (см. таблицу 5.6), ординаты которых выделены жирным шрифтом:

94

а) fа (x) c1 c2 x ,

c1, c2 ? - функция, общая для всех вариан-

тов;

б) fб ( x) - функция, взятая в рамку (в таблице 5.6 вариантов заданий).

По результатам построить в Excel графики функций и показать на них точки данных. (см. в примере 5.2 «Детали построения в Excel графика функции f(arg)»). Все расчеты привести в отчете по работе.

Задание 2. Выполнить на компьютере аппроксимацию по методу наименьших квадратов функцией (с тремя коэффициенты c1, c2 , c3) всех указанных в таблице 5.6 точек данных. Получить на графике вид этой функции и всех приближаемых точек. В отчете описать программу (алгоритм) действий и привести полученный график.

Варианты заданий

Таблица 5.6

 

 

c1x c2 x2

c3 x3

 

 

 

 

 

 

 

 

 

 

 

f ( x )

; x [0,9].

f ( x )

c1x c2 / x

 

c3 ;

x [1,9]

 

 

 

 

 

 

 

 

 

 

 

 

 

Вар.

№1

№2

№3

№4

№5

№6

№7

№8

 

№9

 

№10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xi

yi

yi

 

yi

 

yi

yi

yi

yi

yi

 

yi

 

yi

1.0

1.0

2.0

0.0

-1.0

-1.0

2.0

4.0

-1.0

 

3.0

 

-1.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.0

2.0

3.5

0.0

-1.5

-1.0

3.5

2.0

1.0

 

 

1.0

 

1.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.0

2.0

3.0

1.0

-1.0

0.5

3.0

2.0

2.0

 

 

0.5

 

2.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.0

2.5

3.5

2.5

 

0.0

0.0

3.5

1.0

2.0

 

 

2.0

 

1.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5.0

2.0

3.0

2.0

 

0.0

1.5

3.0

1.0

2.5

 

 

2.5

 

1.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6.0

2.5

2.5

2.0

 

0.5

2.5

2.5

0.5

3.0

 

 

2.0

 

1.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7.0

3.5

2.5

1.0

 

2.0

2.0

2.5

1.0

2.5

 

 

3.0

 

0.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8.0

3.5

1.5

0.0

 

2.5

1.0

1.5

0.5

3.0

 

 

4.0

 

0.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9.0

4.5

1.0

0.5

 

4.0

0.0

1.0

0.0

3.0

 

 

4.0

 

0.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

95

 

 

 

 

 

c3 x4

 

 

f ( x )

c1 x c2 x3

c3 ; x [0,9]

f ( x )

c

c x2

; x [0,9].

 

 

 

1

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вар.

№11

№12

№13

 

№14

№15

№16

№17

№18

 

№19

№20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

i

yi

yi

 

yi

 

yi

yi

yi

 

yi

y

i

 

y

i

yi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.0

0.0

3.0

4.0

 

3.0

0.0

3.0

1.0

2.5

 

1.0

4.0

 

 

 

 

 

 

 

 

 

 

 

 

 

2.0

0.0

3.0

4.0

 

3.0

0.0

3.0

2.0

3.0

 

1.0

3.0

 

 

 

 

 

 

 

 

 

 

 

 

 

3.0

1.0

2.0

3.5

 

2.0

0.5

3.0

2.5

3.0

 

1.5

2.0

 

 

 

 

 

 

 

 

 

 

 

 

 

4.0

1.5

2.0

3.5

 

2.0

1.0

2.5

3.0

2.5

 

2.0

1.5

 

 

 

 

 

 

 

 

 

 

 

 

 

5.0

2.0

1.5

3.0

 

1.0

1.0

2.0

2.5

2.0

 

2.0

2.0

 

 

 

 

 

 

 

 

 

 

 

 

 

6.0

1.5

1.0

3.0

 

0.5

1.5

2.0

2.0

2.0

 

3.0

2.0

 

 

 

 

 

 

 

 

 

 

 

 

 

7.0

1.5

1.0

2.0

 

0.5

2.5

1.0

1.5

1.5

 

4.0

2.5

 

 

 

 

 

 

 

 

 

 

 

 

 

8.0

0.5

2.0

1.0

 

0.0

3.0

1.0

1.0

1.5

 

4.5

3.0

 

 

 

 

 

 

 

 

 

 

 

 

 

9.0

0.0

2.5

1.0

 

-0.5

3.0

0.0

0.0

1.0

 

5.5

3.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f ( x )

 

 

c3 x ; x [1,9]

f ( x )

c1 x 2

c2

/ x

c3 x ; x [1,9].

c1x3 c2 / x

 

 

 

 

 

 

 

 

 

 

 

Вар.

№21

№22

№23

№24

№25

№26

№27

№28

№29

№30

xi

 

yi

 

yi

yi

yi

yi

 

yi

yi

yi

yi

yi

1.0

4.0

 

4.0

0.0

0.0

4.0

 

4.0

4.0

3.0

1.5

1.0

 

 

 

 

 

 

 

 

 

 

 

 

 

2.0

3.0

 

2.5

2.0

1.5

2.5

 

2.5

1.5

2.0

2.0

1.0

 

 

 

 

 

 

 

 

 

 

 

 

 

3.0

2.0

 

2.0

3.0

1.5

2.0

 

2.0

2.0

2.0

2.0

2.0

 

 

 

 

 

 

 

 

 

 

 

 

 

4.0

1.5

 

1.5

3.0

2.0

1.5

 

2.0

1.0

2.5

3.0

1.5

 

 

 

 

 

 

 

 

 

 

 

 

 

5.0

2.0

 

1.0

2.5

2.0

1.5

 

2.5

2.0

2.5

3.0

2.0

 

 

 

 

 

 

 

 

 

 

 

 

 

6.0

2.0

 

1.0

2.5

2.5

1.0

 

2.0

2.0

2.0

3.0

2.5

 

 

 

 

 

 

 

 

 

 

 

 

 

7.0

2.5

 

0.5

2.0

3.0

1.0

 

2.0

3.0

2.0

1.5

3.5

 

 

 

 

 

 

 

 

 

 

 

 

 

8.0

3.0

 

0.0

1.0

4.0

1.5

 

1.5

4.0

1.0

1.0

4.0

 

 

 

 

 

 

 

 

 

 

 

 

 

9.0

3.5

 

-1.0

0.0

4.5

1.0

 

1.0

4.0

0.5

0.0

5.0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

96

Рекомендуемая литература

1.Демидович Б.П. Основы вычислительной математики. –М.:

Наука, 1966, -664с.

2.Метьюз Д.,Финк К. Численные методы. Использование

MATLAB.,М.-Спб.-К., «Вильямс»2001, 716с.

3.Кузьменко В.Г. VBA эффективное использование. М. БИ-

НОМ 2009. - 617с.

4.Калядин В.И., Макаров А.И. Основы работы на персональном компьютере: сборник лабораторных работ. - М.;МГТУ «МА-

МИ», 2010. - 85с.. -58с.

5.Калядин В.И. Численные методы: решение задач в Excel на VBA: учебное пособие. - М.;Университет машиностоления,

2013. - 142с.

6.Антомони В.И., Архипов В.Н., Любин А.Н., Тихомиров В.Н. ПРОГРАММИРОВАНИЕ НА VBA В MICROSOFT OFFICE: сборник лабораторных работ по дисциплине «Информатика» для студентов всех специальностей. - М.:МГТУ «МАМИ». 2011, 160 с.

7.Дьяконов В.П. MATLAB 7.*/R2006/R2007. Самоучитель ДМК, 2008.

97

Приложение А

Справочные сведения по работе с пакетом MATLAB

Основные правила работы в окне команд

команды задаются справа от символов >> приглашения к вводу;

комментарий можно набить справа от символа % ;

команда выполняется после нажатия клавиши Enter;

для вызова ранее введѐнной команды (для редактирования и исполнения) следует использовать клавишу «стрелка вверх», по «стрелке вниз» команды просматриваются в обратном порядке;

для присваивания следует справа от имени переменной или массива указать символ присваивания = и присваиваемую величину;

в именах MATLAB различает прописные и строчные буквы;

массивы заключаются в квадратные скобки, отдельные элементы указываются с индексом в круглых скобках;

для инструкции, которая заканчивается точкой с запятой «;», результат не выводится на экран;

если не указана переменная для значения результата, он присваивается (и выводится) переменной с именем ans, сохраняющей значение до следующего присваивания;

встроенные функции (например, sin) набиваются строчными буквами, за которыми в круглых скобках указывается аргумент (аргументы);

команда clc очищает командное окно (от ранее введѐнных команд) и размещает курсор в левом верхнем углу окна справа от символов >> приглашения к вводу;

команда home окно не очищает от команд, а размещает курсор в левом верхнем углу окна справа от символов >> приглашения к вводу.

98

Интерактивная справка по MATLAB

Интерактивную справку по MATLAB можно получить, нажав F1 (выбрав Help в меню) или набрав в строке командного окна команду

>> help

а затем, выбрав (кликнув мышкой) из предложенных разделов, на-

пример, matlab\opt, можно получить список арифметических операторов и соответствующих им функций – он приведѐн в таб-

лице A.1. Справки по другим объектам MATLAB можно получить, набрав:

>> help объект

Арифметические операторы и функции

Таблица A.1. Арифметические операторы и функции MATLAB

Функция

Название

Оператор

Синтаксис

 

 

 

 

Plus()

Плюс

+

M1+M2

Uplus()

Унарный плюс

+

+M

Minus()

Минус

-

M1-M2

Uminus()

Унарный минус

-

-M

Mtimes()

Матричное умножение

*

M1*M2

Times()

Поэлементное умножение

.*

A1*A2

 

массивов

 

 

Mpower()

Возведение матрицы в

^

M1^x

 

степень

 

 

Power()

Поэлементное возведение

.^

A1^x

 

массива в степень

 

 

Mldivide()

Обратное (справа налево)

\

M1\M2

 

деление матриц

 

 

Mrdivide()

Деление матриц слева на-

/

M1/M2

 

право

 

 

Ldivide()

Поэлементное деление

.\

A1.\A2

 

массивов справа налево

 

 

Rdivide()

Поэлементное деление

./

A1./A2

 

массивов слева направо

 

 

99

Kron()

Тензорное умножение

kron

kron(X,Y

 

Кронекера

 

)

Transpose()

Транспонирование

.'

A.ʹ

Ctranspose()

Транспонирование с ком-

'

Aʹ

 

плексным сопряжением

 

 

Пояснения.

Все операции в MATLAB реализуются как функции, а часто используемым операциям ставится в соответствие оператор, который употребляется в выражениях командной строки. Например, действие с оператором «+»

>> 2+3

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

>> plus(2, 3)

и даѐт, разумеется, одинаковый результат.

Все данные в MATLAB представляются как матрицы (M1, M2) или массивы (A, A1, A2), и операции с ними производятся как действия над матрицами (матричные операции) или над элементами массивов (поэлементные операции). Например, для вектор-столбцов v, w и век- тор-строк vt, wt произведение vt*w трактуется как матричная операция умножение (или в данном случае как скалярное произведение):

>>v=[1;2;3]; vt=[1 2 3];

>>w=[1;1;2]; wt=[1 1 2];

>>wt*v

ans =

9

и даѐт результат 9 = 1 ∙ 1 + 1 ∙ 2 + 2 ∙ 3.

Но поэлементное умножение вектор-строк wt.*vt даст иной результат:

>> wt.*vt ans =

1 2 6

Заметим, то формы массивов (вектор-строки или вектор-столбцы) должны быть согласованы. Например, попытка выполнить поэле-

100