Методичка MatchCAD. Практикум по курсам Информатика, Прикладное программное обеспечение
Скачать 2.28 Mb.
|
Упражнения 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, которая работает по такому же алгоритму, но при отсутствии решения выдает зна- чения, в наибольшей степени удовлетворяющие заданной системе уравнений и дополни- тельным ограничениям. Более подробно об этой функции смотрите в специальной литера- туре. 58 x 0 y 0 Given x 2 y 2 r 2 x y 2 x 0 y 0 F r ( ) Find x y ( ) F 6 2.414 0.414 F 3 ( ) 2.871 0.871 Рисунок 6.10 – Параметризация предыдущей задачи Упражнения 1. Построить график функции f(x) и приблизительно определить один из корней уравнения. Решить уравнение f(x) = 0 с помощью встроенной функции MathCAD root. 2. Для полинома g(x) выполнить следующие действия: 1) с помощью команды Символы → Коэффициенты полинома создать вектор V, содержащий коэффициенты полинома; 2) решить уравнение g(x) = 0 с помощью функции polyroots; 3) решить уравнение символьно, используя команду Символы → Переменные → Вычислить. 59 3. Решить систему линейных уравнений: 1) матричным способом и используя функцию lsolve; 2) методом Гаусса; 3) используя функцию Find. № ва- ри- анта Система уравнений № вари- анта Система уравнений 1 1 2 3 1 2 3 1 2 3 0, 3 1, 2 0, 2 0, 6 0,1 0, 2 1, 6 0, 3 0, 05 0, 34 0,1 0, 32 x x x x x x x x x 6 83 1 25 0 35 0 6 0 32 0 43 0 25 0 3 0 91 1 2 0 45 0 21 0 3 2 1 3 2 1 3 2 1 , x , x , x , , x , x , x , , x , x , x , 2 01 1 72 0 44 0 12 0 77 0 04 0 86 0 02 0 56 0 12 0 02 0 78 0 3 2 1 3 2 1 3 2 1 , x , x , x , , x , x , x , , x , x , x , 7 210 3 5 0 5 0 100 5 0 6 5 0 5 56 5 0 5 0 3 3 2 1 3 2 1 3 2 1 x x , x , x , x x , , x , x , x 3 83 0 86 0 44 1 42 1 32 0 54 1 74 0 54 1 58 0 22 0 44 0 66 0 3 2 1 3 2 1 3 2 1 , x , x , x , , x , x , x , , x , x , x , 8 37 0 63 0 05 0 35 0 31 0 06 0 34 0 01 0 15 0 15 0 94 0 45 0 3 2 1 3 2 1 3 2 1 , x , x , x , , x , x , x , , x , x , x , 4 38 0 14 0 84 0 87 0 23 0 93 0 19 0 98 0 25 0 94 0 94 0 21 0 3 2 1 3 2 1 3 2 1 , x , x , x , , x , x , x , , x , x , x , 9 32 0 1 0 34 0 03 0 42 0 71 0 1 0 15 0 34 0 15 0 05 0 63 0 3 2 1 3 2 1 3 2 1 , x , x , x , , x , x , x , , x , x , x , 5 69 0 69 0 95 0 13 0 12 0 05 0 99 0 9 0 29 9 76 1 37 0 63 0 3 2 1 3 2 1 3 2 1 , x , x , x , , x , x , x , , x , x , x , 10 6 0 3 0 2 0 2 1 4 0 5 1 1 0 3 0 3 0 1 0 6 1 2 0 3 2 1 3 2 1 3 2 1 , x , x , x , , x , x , x , , x , x , x , 4. Найти все решения систем нелинейных уравнений |