Файл: Практикум по курсам Информатика, Прикладное программное обеспечение.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 10.01.2024

Просмотров: 189

Скачиваний: 5

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

49
OR IGIN
1

Vx
1 2
3 4
5 6
7



















Vy
1.14 1.82 2.34 3.54 4.64 6.72 10.06



















- векторы координат точек
0 2
4 6
8 0
2 4
6 8
10 12
Vy
Vx
0 0.5 1
1.5 2
0 2
4 6
8 10 12
Vy ln Vx
(
)


a) b)
0 2
4 6
8 0
1 2
3
ln Vy
(
)


Vx
0 0.5 1
1.5 2
0 1
2 3
ln Vy
(
)


ln Vx
(
)


c) d)
Рисунок 5.9 – Расположение точек на графике в зависимости от масштабирования координатных осей: a) – натуральная шкала; b) – логарифмическая шкала по x; c) – логарифмическая шкала по y; d) – логарифмические шкалы по обеим осям
Расположив точки на графиках с различными шкалами, можно заметить, что на ри- сунке 5.9 (с) точки приближенно укладываются в прямую линию. Это означает, что под- бираемую функцию можно линеаризовать, если заменить вектор y на ln(y). Следователь- но, за искомую функцию принимаем экспоненциальную
`
bx
ae
y

или показательную
x
ab
y

, как общий случай.
Если бы точки ложились на прямую линию в полулогарифмических координатах, показанных на рис. 5.9 (b), то можно было бы предположить в качестве аппроксимирую- щей функцию вида
)
ln(x
b
a
y


При прямолинейной тенденции расположения точек в логарифмических координа- тах, показанных на рис 5.6 (d), предполагаемая функция имеет вид степенной функции
b
ax
y

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

50
1   2   3   4   5   6   7

Упражнения
1. Рассчитать значения
x
x
e
x
x
y
x



)
1
ln
4
sin(
3
для x = 1, 2, …, 10. Для полученных значений провести сплайн – интерполяцию.
2. Используя данные приведенной ниже таблицы (значения x и y для каждой опыт- ной точки), выполните линейную аппроксимацию и аппроксимацию полиномом с помо- щью метода наименьших квадратов.
Ном ер ва ри ан та x/y
Номер опытной точки
1 2
3 4
5 6
7 8
9 10 1
X
3,44 1,72 2,06 3,07 0,99 7,65 2,92 3,53 4,10
-0,47
Y
23 5,7 7,6 17,6 4,3 147,6 15,7 24 35 12 2
X
2,06 5,45 1,01 1,04 1,13 4,73 3,92 1,02 4,92 5,38
Y
0,14 0,072 0,199 0,196 0,19 0,08 0,09 0,198 0,078 0,073 3
X
3,72 4,21 4,17 5,64 2,95 6,85 2,01 1,92 3,57 2,95
Y
-6,9
-6,58
-6,6
-6
-7,5
-5,7
-9
-9,3
-7
-7,6 4
X
6,04 6,33 4,86 5,91 4,96 5,58 6,15 6,13 4,65 5,49
Y
79,31 57,43 80,66 92,55 90,12 96,3 70,50 71,52 68,31 98,56 5
X
2,91 2,94 6,35 6,58 3,80 6,43 0,57 5,96 3,40 4,55 y
62,16 61,02 44,56 82,52 39,17 70,24 103,2 66,48 48,35 40,24 6
X
1,9 2
2,1 2,2 2,3 2,4 2,5 2,6 2,7 2,8
Y
5,08 5
5,02 5,02 5,04 5,08 5,12 5,18 5,24 5,32 7
X
1,5 2,2 2,9 3,6 4,3 5
5,7 6,4 7,1 7,8
Y
8,51 13,46 19,82 27,61 36,82 47,45 59,51 72,96 87,86 104,17 8
X
0,6 0,65 0,7 0,75 0,8 0,85 0,9 0,95 1
1,05
Y
0,9 1,45 2,04 2,66 3,32 4,01 4,74 5,50 6,3 7,13 9
X
0,6 0,75 0,9 1,05 1,2 1,35 1,5 1,65 1,8 1,95
Y
12 13,46 15,15 17,06 19,2 21,56 24,15 26,96 30 33,26 10 X
-6
-4
-3
-1 0
1 2
3 4
5
Y
10,1
-3,9
-7,9
-9,9
-7,9
-3,9 2,1 10,1 20,1 32,1 3. В разделе 4.3 решена задача о популяции кроликов (числа Фибоначчи). Рассчи- тать поголовье кроликов для n = 1, 2, …12 и полученные данные аппроксимировать по ме- тоду наименьших квадратов (тип аппроксимирующей функции выбрать, исходя из вида данных).
Контрольные вопросы
1. Дайте определение интерполяции.
2. Дайте определение аппроксимации.
3. Для чего служит экстраполяция?
4. В каких случаях применяется линейная, сплайн-интерполяция?
5. В каких случаях применяется аппроксимация прямой? Аппроксимация полино- мом?

51
ЛАБОРАТОРНАЯ РАБОТА № 6
РЕШЕНИЕ УРАВНЕНИЙ И СИСТЕМ
Цель: Научиться применять функционал MathCAD при решении уравнений и сис-
тем.
6.1 Решение одного уравнения
Теоретические сведения
Пусть задана некоторая непрерывная функция y=f(x). Требуется найти такие значе- ния x, для которых f(x)=0. Эти значения x называются корнями уравнения f(x)=0.
Все уравнения можно разделить на два больших класса: линейные и нелинейные уравнения. Решить линейное уравнение с одним неизвестным ax+b=0 просто, этот случай рассматривать здесь не будем.
В свою очередь, нелинейные уравнения также можно разделить на две большие группы: алгебраические и трансцедентные.
АЛГЕБРАИЧЕСКИЕ УРАВНЕНИЯ можно записать в виде
0
a x
a x
a x
a
0 1
1
n
1
n n
n








,
(6.1) где n – целое число, a i
– заданные коэффициенты. Оно имеет n корней, включая кратные и комплексные.
ТРАНСЦЕДЕНТНЫЕ УРАВНЕНИЯ – нелинейные уравнения, которые содержат тригонометрические (например, sinx, cosx и т.п.) или другие специальные функции (на- пример, lnx, e x
и т.п.). В общем случае количество корней трансцедентного уравнения за- ранее не известно.
Методы решения уравнений делятся на: прямые методы; итерационные методы.
ПРЯМЫЕ МЕТОДЫ позволяют найти решение непосредственно с помощью фор- мул и обеспечивают получение точного (без погрешностей метода) решения. Например, решение уравнения ax
2
+bx+c=0 дается формулой a
2
ac
4
b b
x
2 2
,
1




В ИТЕРАЦИОННЫХ МЕТОДАХ процедура решения задается в виде многократ- ного применения некоторого алгоритма. Полученное решение всегда является прибли- женным. При этом обычно требуется задать некоторое начальное приближение корня, ко- торое в ходе итераций уточняется. Если в ходе итераций получаются все более точные значения корня, то говорят, что метод итераций сходится, в противном случае он будет расходиться. Если некоторый итерационный метод расходится то это может быть вызвано следующими причинами:
1) отсутствием решения;
2) выбором неудачного начального приближения;
3) непригодностью используемого метода к решению данной задачи.
В общем случае рекомендуется следующая последовательность решения нелиней- ного уравнения f(x)=0: исследуется количество, характер и расположение корней; находятся некоторые приближенные значения корней (их локализация); выбирается интересующий нас корень и проводится его уточнение (решение с не- обходимой точностью).
В системе MathCAD первые два этапа удобно проводить графически: для этого строится график функции y=f(x) в нужном диапазоне значений x и визуально определяют-


52 ся координаты пересечения кривой с осью x. Дополнительно можно использовать воз- можности трассировки графиков и увеличения их масштаба.
Задача 1. Решить графически уравнение cos(x)-x-0.2=0.
Решение: График данной функции приведен ниже на рисунке 6.1. Правый график –
увеличенный фрагмент графика, приведенного слева. Видно, что значения корня равно
приблизительно 0.62.
Рисунок 6.1 – Графическое решение уравнения
Алгебраические уравнения
Если задан полином n-й степени n
n
2 2
1 0
x a
x a
x a
a
)
x
(
p






,
(6.2) то для нахождения его корней (вещественных и комплексных) удобно использовать стандартную функцию системы MathCAD
polyroots(V).
Она возвращает вектор длины n, компоненты которого – корни данного полинома.
Коэффициенты исходного полинома (8.2) задаются в векторе V (рамерности n+1):













n
1 0
a a
a
V

Отметим, что функция polyroots не требует начального приближения.
Задача 2. Найти корни уравнения x
3
– 10 x + 2 = 0.
Решение: Программа расчета, результат и проверка решения приведены на рис.6.2
Рисунок 6.2. Пример использования функции polyroots для нахождения корней по- линома
Уравнения любого типа
Решение одного уравнения любого типа дается функцией
root(f(x),x, [a, b]) ,
которая возвращает такое значение x, лежащее между a и b (причем b>a), при кото- ром f(x)=0. Здесь a и b – необязательные параметры. Если они отсутствуют, то функция root требует начального приближения x для организации итерационного процесса. Для

53 поиска комплексного корня следует взять в качестве начального приближения комплекс- ное число. Если корней несколько, то выдаваемое значение корня зависит от заданного начального приближения. Если начальное приближение очень близко к минимуму или максимуму функции f, то итерационный процесс может не сходиться или выдавать реше- ния, лежащие далеко от начального приближения.
Ниже на рис. 6.3 показано применение функции root на примере нахождения кор- ней полинома, уже рассмотренного и решенного выше с помощью функции polyroots (см. рис. 6.2).
Рисунок 6.3 – Пример использования функции root для нахождения корней полинома
Задача 3. Найти корни трансцедентного уравнения cos(x)=x+0.2.
Решение: Программа расчета и результат приведены на рис. 6.4. Ранее это урав-
нение мы уже решали графически (см. рис. 6.1).
Следует отметить, что найденные с помощью численных методов значения корней являются приближенными – это видно (см., например, рис.6.2, 6.4) из результатов провер- ки. Точность расчетов в системе MathCAD регулируется значением системной перемен- ной TOL.
Рисунок 6.4. Пример использования функции root для нахождения корней трансцендентного уравнения
По умолчанию TOL=0.001, но ее значение можно уменьшить и тем самым умень- шить погрешность метода.
В общем случае при использовании функции root предлагается использовать по- следовательность действий, описанную выше в разделе «Предварительные сведения» при анализе итерационных методов решения.
6.2 Решение систем линейных уравнений
Краткие сведения из теории
Рассмотрим систему n линейных уравнений с n неизвестными



















n n
nn
2
n2 1
n1 2
n
2n
2 22 1
21 1
n
1n
2 12 1
11
b x
a x
a x
a b
x a
x a
x a
b x
a x
a x
a

(6.3)
Систему (6.3) можно записать в компактной матричной форме


54
B
X
A


,
(6.4) где A- матрица коэффициентов при неизвестных:













nn n2
n1 2n
22 21 1n
12 12
a a
a a
a a
a a
a
A













n
2 1
b b
b
B
и













n
2 1
x x
x
X
– вектор свободных членов и вектор решений соответственно.
В курсе линейной алгебры показано, что если матрица A не вырождена (т.е. ее оп- ределитель не равен нулю), то система (6.3) или (6.4) имеет единственное решение.
Таким образом, при
0
A
det

решение системы (6.4) существует и его также можно записать в матричной форме:
B
A
X
1



,
(6.5) где
1
A

– матрица, обратная А.
Решение методом обратной матрицы
Допустим, что задана система (6.3). Тогда:

определяем матрицу A и вектор B;

проверяем матрицу A на вырожденность;

если матрица не вырождена, то находим вектор решений по формуле (6.5);

выводим результат;

делаем проверку.
Задача 4. Решить систему уравнений

























18 2x
7x x
3x
2 3x
5x x
x
31 5x x
3x
2x
10
x x
x x
4 3
2 1
4 3
2 1
4 3
2 1
4 3
2 1
Решение: Текст программы, результат и проверка решения показаны на рисунке
8.5.
Рисунок 6.5 – Решение системы линейных уравнений с помощью операторов

55
Решение с помощью функции lsolve
Для решения систем линейных уравнений можно также использовать стандартную функцию
lsolve(A,B), которая возвращает вектор решений для заданных значений матрицы коэффициентов A и вектора свободных членов B. Матрица A, как и в предыдущем случае, должна быть не вы- рожденной.
Задача 5. Решить систему уравнений из задачи 4 с помощью функции lsolve.
Решение: Решение с проверкой представлено на рис. 6.6.
Рисунок 6.6 -Решение системы линейных уравнений с помощью функции lsolve
Решение линейной системы методом Гаусса
Этот метод состоит в том, что систему n уравнений приводят последовательным исключением неизвестных к системе треугольного вида, а затем ступенчатую матрицу преобразуют так, чтобы в первых n столбцах получилась единичная матрица. Последний
(n+1) столбец содержит решение системы. В MathCAD прямой и обратный ходы метода
Гаусса выполняет функция rref(M).
Задача 6. Решить систему уравнений из задачи 4 методом Гаусса.
Решение: Решение с проверкой представлено на рис. 6.7.
A
1 2
1

3 1
3 1
1 1
1 5
7 1
5 3
2










B
10 31 2

18









- ис ходные данные
A
12

- матрица не вырождена
Ar augment A B

(
)

Ar
1 2
1

3 1
3 1
1 1
1 5
7 1
5 3
2

10 31 2

18









Ag rref Ar
(
)

Ag
1 0
0 0
0 1
0 0
0 0
1 0
0 0
0 1
16 15.5

0.5 9









решение и ответ:
X
submatrix Ag 0

3

4

4

(
)

X
16 15.5

0.5 9









Рисунок 6.7 – Решение системы линейных уравнений методом Гаусса


56
6.3 Решение систем нелинейных уравнений
При решении систем нелинейных уравнений в системе MathCAD используется специальный вычислительный блок (solve block), который имеет следующую структуру:
<Начальные приближения переменных>
Given
<Уравнения>
<Ограничительные условия>
<Выражения с функциями Find или Minerr>
Здесь:
Начальные приближения переменных – начальные значения для всех неизвест- ных, входящих в систему уравнений;
Given – ключевое слово, которое указывает MathCAD, что далее следует система уравнений;
Уравнения – решаемые уравнения, количество которых равно количеству неиз- вестных;
Ограничительные условия – дополнительные ограничения на решения в виде не- равенств;
Функции Find(z1,z2,z3, …) и Minerr(z1,z2,z3, …) возвращают вектор решений системы уравнений. Число аргументов z1,z2,z3,… должно быть равно числу неизвестных в уравнениях.
При наборе уравнений и неравенств следует использовать логические операторы =
(булево равенство), >,

и пр.
MathCAD возвращает в блоке solve block только одно решение. Для поиска кон- кретного решения нужно использовать соответствующие начальные приближения или до- полнительные ограничения в виде неравенств. Рассмотрим использование блока решений на конкретных примерах.
Задача 5. Решить систему уравнений
2
y x
6
y x
2 2







Решение: Данные уравнения допускают простую геометрическую интерпретацию
(см. рис. 8.8). Видно, что существует два решения системы уравнений.. Для их поиска
применим рассмотренный выше блок решения. В качестве ограничений будем использо-
вать предварительную информацию., полученную из рисунка 6.8.
Рисунок 6.8 – Координаты двух точек пересечения окружности и прямой определяют решение данной системы
На рисунке 6.9 приведены два варианта программы, в каждом находится один ко-
рень.

57
Функцию Find, которая завершает блок решения, можно использовать, как и лю- бую другую функцию. Можно вывести найденное решение, как это сделано в программе на рис. 6.9.
вариант 1
начальные приближения x
0

y
0

Given x
2
y
2

6
x y

2
x
0

y
0

Find x y

(
)
0.414

2.414





вариант 2
x
0

y
0

Given x
2
y
2

6
x y

2
x
0

y
0

Find x y

(
)
2.414 0.414








начальные приближения
Рисунок 6.9 – Решение системы нелинейных уравнений с помощью блока solve block
Можно определить новую переменную с использованием данной функции, напри- мер, a := Find(z1,z2, …) и вектор a использовать в другом месте рабочего документа. Ис- пользуя Find, можно также определить другую функцию. Для этого блок решения необхо- димо закончить выражением типа f(a, b, c,…) := Find(z1, z2, z3, …).
Эта конструкция удобна при многократном решении систем уравнений, содержа- щих параметры a, b, c, … .Программа на рисунке 6.10 – пример такой параметризации за- дачи. Предположим, что ищется пересечение прямой из предыдущей задачи и окружности переменного радиуса r. В этом случае функция определяется следующим образом: F( r ) :=
Find(x,y). Эта функция возвращает вектор значений, элементы которого содержат x и y координаты точек пересечения.
Если в ходе решения системы уравнений итерации перестают сходиться, а нужная точность еще не достигнута, то поиск решения прекращается и выводится сообщение «No solution was found» («решение не найдено»). Причиной может быть как отсутствие реше- ния, так и неудачные начальные приближения или ограничения. В этом случае полезно провести графический анализ системы уравнений и уточнить область, в которой могу на- ходиться искомые решения. Это поможет выбрать более подходящее начальное прибли- жение. В этой ситуации также можно применить вместо функции Find другую функцию –
Minerr, которая работает по такому же алгоритму, но при отсутствии решения выдает зна- чения, в наибольшей степени удовлетворяющие заданной системе уравнений и дополни- тельным ограничениям. Более подробно об этой функции смотрите в специальной литера- туре.