
- •Решение функциональных и вычислительных задач средствами пакета прикладных программ MathCad2000 и электронных таблиц ms Excel»
- •Содержание
- •Решение функциональных и вычислительных задач средствами пакета прикладных программ MathCad2000
- •3.3. Решение слау с помощью обратной матрицы
- •3.5. Решение слау с помощью методом Гаусса
- •Решение функциональных и вычислительных задач средствами электронной таблицы ms Excel
3.3. Решение слау с помощью обратной матрицы
Записываем матрицы А и В:
Решаем систему с помощью обратной матрицы:
Производим
проверку по формуле
:
В результате
проверки находим, что результат вычисления
выраженияравен столбцу из свободных членов,
следовательно, решение найдено верно/
Решение СЛАУ с помощью по формулам Краммера
Задаём матрицы А и В:
Решаем определитель, составленный из элементов матрицы A:
так как определитель матрицы A не равен нулю, то существует единственное решение.
Находим
:
Заменяем элементы первого столбца матрицы A на элементы матрицы B и решаем полученный определитель:
Находим
:
Заменяем элементы второго столбца матрицы A на элементы матрицы B и решаем полученный определитель:
Находим
:
Заменяем элементы третьего столбца матрицы A на элементы матрицы B и решаем полученный определитель:
Находим
:
Заменяем элементы четвертого столбца матрицы A на элементы матрицы B и решаем полученный определитель:
Находим x1, x2, x3, x4 по формуле
3.5. Решение слау с помощью методом Гаусса
Задаём матрицы А и В:
Сформируем расширенную матрицу:
Обращаемся к методу Гаусса, сформировав единичную матрицу из расширенной:
С помощью функции submatrix выделяем блок из матрицы D:
Где D - название матрицы, из которой находится выделяемый блок,
0 – начальный номер строки, выделяемого блока,
3 – конечный номер строки, выделяемого блока,
4 – начальный номер столбца выделяемого блока,
4 – конечный номер столбца, выделяемого блока.
Анализ полученных результатов
Решая систему линейных алгебраических уравнений пятью способами, получили один и тот же ответ, что говорит о правильности полученного результата. Проверкой это подтвердили.
Интерполирование. Аппроксимация
Найти приближенное значение функции при заданном значении аргумента
с помощью линейной интерполяции
с помощью кубического сплайна
с помощью линейной аппроксимации
методом наименьших квадратов при m=2 и при m=3, где m- порядок полинома. Вычислить среднеквадратичное отклонение
с помощью полиномиальной регрессии
построить графики таблично заданной функции, интерполяционного полинома и аппроксимирующей функции в одних осях координат.
0.150 6.616 0.162
0.155 7.399
0.160 6.196
0.165 6.005
0.170 7.825
0.175 5.655
Решение:
В MathCAD есть несколько способов интерполяции и предсказывания:
линейная интерполяция – соединение точек прямой линией;
кубическая сплайновая интерполяция – соединение точек с использованием кубических линий;
интерполяция В-сплайн – соединение точек с использованием многочленов определенной степени в данных узлах;
многомерная кубическая сплайновая интерполяция – создание поверхности, проходящей через сетку точек;
линейное предсказание (экстраполяция) – определение значений вне набора данных.
Далее будут приведены примеры интерполирования функции с использованием лишь некоторых способов интерполирования.
Решение с помощью линейной интерполяции
Для решения с помощью линейной интерполяции используется функция линейного интерполирования linterp(x, y, xd)
Функция linterp(vx, vy, xd) – возвращает оценку значения в точке x, вычисленную методом линейной интерполяции на основе значений из векторов x и y;
vx – вещественный вектор, элементы которого должны идти в порядке возрастания и соответствовать значениям х;
vy – вещественный вектор одного размера с vх. Его элементы соответствуют значениям y;
xd – значение переменной x, в которой нужно проинтерполировать величину y. Предполагается, что х лежит в интервале изменения элементов vx.
Задаем значения х и у в виде матриц:
Находим функцию f(x):
Строим график функции:
Рисунок 4.1
График проходит через узлы интерполяции, значит функция задана верно.
Решение с помощью параболического сплайна
Сплайн – это математическая модель гибкого, тонкого стержня из упругого материала. Стержень закрепляется в двух соседних узлах с заданными углами наклона. Стержень длиннее, чем расстояние между двумя точками. Линия, которую описывает сплайн-функция, напоминает по форме гибкую линейку, закреплённую в узловых точках (откуда и название: spline – гибкая линейка).
Функция cspline(vx, vy) – возвращает вектор коэффициентов кубического сплайна vs, который используется функцией interp для построения кубического сплайна, интерполирующего данные, представленные в векторах vx и vy. На поведение сплайна на концах условий не налагается. Вектор vs становится первым параметром функции interp.
Функция interp(vs, vx, vy, x) – возвращает интерполированное значение в точке х, полученное с помощью кубических сплайнов на основе данных, представленных в векторах vx и vy.
Рисунок 4.2
Решение с помощью линейной аппроксимации
Найдем коэффициенты аппроксимирующего полинома с помощью функций intercept и slope.
Функция intercept(vx, vy) – свободный член уравнения регрессии. Равен отрезку, отсекаемому линией регрессии на оси ординат, и определяется по формуле:
Функция slope(vx, vy) – коэффициент линейного уравнения регрессии. Определяет тангенс угла наклона линии регрессии к оси х, используя формулу:
Применим эти функции для получения свободного члена и коэффициента регрессии
Записываем аппроксимирующий полином и получаем приближенное значение функции в заданной точке.
Построим график аппроксимирующего полинома и таблично заданной функции.
Рисунок 4.3
Решение с помощью метода наименьших квадратов
Суть метода: сумма квадрата разности между аппроксимирующей функцией и функцией заданной таблично должна быть минимальной.
Задаем степень аппроксимирующего полинома.
при m=2
Рисунок 4.4
при m=3
Рисунок 4.5
Решение с помощью полиноминальной регрессии
Задача регрессии заключается в получении параметра приближённой функции таким, чтобы функция отличалась от таблично заданной функции с наименьшей среднеквадратичной погрешностью.
при m=2
Функция regress(vx, vy, m) – вектор, требующий interp для нахождения полинома порядка m, наилучшим образом приближающего данные из vx и vy.
submatrix(A, ir, jr, ic, jc,) – субматрица, состоящая из элементов матрицы А, содержащихся в строках от ir по jr и столбцах с ic по jc.
Рисунок 4.6
при m=3
Рисунок 4.7
Графики таблично заданной функции в одних осях координат
Для сравнения всех функций и полученных вычислений построим общий график:
Рисунок 4.8
Анализ полученных результатов
Проведя исследование функции различными методами, мы получили примерно одинаковые результаты, так как при исследовании разными методами таблично заданная функция ведет себе по разному. Но, исследуя функцию с помощью метода наименьших квадратов и полиномиальной регрессии при одинаковых значениях порядка полинома графики функций совпадают, что говорит о правильности всех вычислений. Так же на это указывает тот факт, что среднеквадратичное отклонение получилось меньше единицы.
Решить дифференциальное уравнение методом Рунге-Кутта
При решении дифференциального уравнения искомой величиной является функция. Для обыкновенных дифференциальных уравнений неизвестная функция – функция одной переменной. Дифференциальные уравнения в частных производных – это дифференциальные уравнения, в которых неизвестной является функция двух или большего числа переменных. MathCAD имеет ряд встроенных функций, предназначенных для решения дифференциального уравнения. Каждая из этих функций предназначена для численного решения обыкновенного дифференциального уравнения. В результате решения получается матрица, содержащая значения функции, вычисленные на некотором множестве точек (на некоторой сетке значений). Для каждого алгоритма, который используется при решении дифференциальных уравнений, MathCAD имеет различные встроенные функции. При решении поставленной задачи будем использовать метод Рунге-Кутта, применяя функцию rkfixed(y, x1, x2, n, F)
Функция rkfixed(y, x1, x2, n, F) – выдает таблицу результатов решения системы обыкновенных дифференциальных уравнений методом Рунге-Кутта четвертого порядка с фиксированным шагом интегрирования. Эта функция имеет пять аргументов:
y – вектор начальных значений искомых функций;
x1 – начальное значение независимой переменной;
x2 – конечное значение независимой переменной;
n – фиксированное число шагов интегрирования;
F – правые части системы уравнений, записанные в векторе в символьном виде.
Решение:
Функция rkfixed(y, x1, x2, n, F) выдает таблицу результатов решений с (m + 1) столбцами и n строками (m – число уравнений в системе). Нулевой столбец таблицы – это текущее значение независимой переменной (аргумента) x. Они определяются через x1, x2 и n. Последующие столбцы решения определяют значения искомых функций y1(x), y2(x), … для соответствующих значений аргумента x.
Таблица 1
Зная значение независимой переменной и соответствующие значения искомой функции, можно построить графическую зависимость, что и показано на рисунке 5.1
Рисунке. 5.1
-
столбец координат узлов сетки
-
столбец значений решения в узлах сетки
Линейное программирование
Решение задачи линейного программирования с помощью функции maximize или minimize.
Для перевозок груза на трех линиях могут быть использованы суда трех типов. Производительность судов при использовании их на различных линиях характеризуется данными, приведенными в таблице. В ней же общее время, в течение которого суда каждого типа находятся в эксплуатации, и минимально необходимые объемы перевозок на каждой из линий. Определите, какие суда, на какой линии и в течение какого времени следует использовать, чтобы обеспечить максимальную загрузку судов с учетом возможного времени их эксплуатации.
Таблица 2
Тип судна |
Производительность судов (млн. тонно-миль в сутки) на линии |
Общее время эксплуатации судов (сутки) | ||
1 |
2 |
3 | ||
I |
8 |
14 |
11 |
300 |
II |
6 |
15 |
13 |
300 |
III |
12 |
12 |
4 |
300 |
Заданный объем перевозок (млн. тонно-миль) |
3000 |
5400 |
3300 |
|
За x1 возьмем, сколько времени (суток) нужно использовать первое судно на первой линии, за x2 сколько времени нужно использовать первое судно на второй линии и т.д., получаем целевую функцию:
Зададим начальные значения, присваивая каждому из x значение 0:
Затем с помощью Given зададим ограничения и найдем решение этой функции, оптимизируя ее, применяя функцию maximize(), так же поставим ограничение на то, что значения не отрицательны, т.к. это противоречит заданному нами определению.
Ответ получен в виде матрицы, содержащей значения x1, x2, x3, x4, x5, x6, x7, x8, x9. Чтобы удостовериться в правильности найденных значений, производится проверка:
Проверка показала, что найденные значения отвечают требованиям заданных ограничений.
Ответ:
Для того чтобы обеспечить максимальную загрузку судов с учетом возможного времени их эксплуатации, нужно использовать первое судно только на второй линии в течение трехсот суток. Второе судна на второй и на третьей линии в течение сорока шести и двухсот пятидесяти четырех суток соответственно. Третье судно на первой и на второй в течение двухсот пятидесяти и пятисот суток соответственно.