Вступление   Главы  1  2  3  4  5  6  7   Приложения  А  Б  

Глава 7. Численные методы


    Глава 7. Численные методы
    Интерполяция методом Лагранжа Интерполяция методом Ньютона Общая задача интерполирования Встроенные процедуры Maple Процедуры пакета CurveFitting Решение уравнений Численное дифференцирование Числ...
    Интерполяция методом Лагранжа
    На практике очень часто приходится иметь дело с данными, которые представлены в виде таблиц и задают зависимость одних параметров исследуемого явления от других. Задача состоит в том, чтобы по так...
    На заметку
    Ограниченным базис называется потому, что используются не все функции этого базиса (все функции образуют бесконечное множество). По полному базису можно разложить практически любую функцию, удовлет...
    Решение задачи
    Основу процедуры составляют два вложенных цикла. В рамках первого цикла переменная si пробегает значения из списка-параметра процедуры. Такими значениями являются списки, определяющие точку и знач...
    На заметку
    Команда sl[l] возвращает в качестве значения узловую точку из списка, выбранного в первом цикле, в то время как с помощью команды s[l] возвращается узловая точка списка, выбранного во втором, вложе...
    Решение задачи
    Если теперь по заданным точкам строить интерполяционную функцию, получим следующий полином третьей степени....
    Решение задачи
    Внимание! Поскольку процедура lagr(), согласно ее определению, является оператором, она должна действовать на аргумент, который и является переменной интерполирования. Процедура определена таким о...
    Решение задачи
    Как несложно проверить, интерполяционный полином при этом не меняется:...
    Решение задачи
    Ниже определим процедуру, которая будет отображать в области вывода график для интерполяционного полинома Лагранжа вместе с базовыми точками, по которым выполняется интерполяция. Параметрами проце...
    Решение задачи
    Локальные переменные а и b в теле процедуры используются для определения нижней и верхней границ области интерполирования соответственно Значения обеих переменных инициализируются равными первой у...
    Решение задачи
    Аппроксимация зависимостей интерполяционными полиномами Лагранжа наиболее эффективна, когда интерполируемая функция сама является полиномом. В этом случае, если взять достаточное количество базовы...
    Решение задачи
    Первой в группе является команда randomize инициализации генератора случайных чисел. После этого в качестве пустого списка инициализируется переменная в. Значение переменной N, определяющей количе...
    На заметку
    По умолчанию процедурой rand() генерируется целое случайное число из двенадцати цифр Затем выполняется оператор цикла, в котором переменная цикла i пробегает все значения в диапазоне от 1 до N. Для...
    Решение задачи
    Как несложно заметить, на границах области интерполирования отклонения полинома действительно существенны....
    Примечание
    Если пользователь скопирует приведенный выше программный код в рабочий лист Maple и несколько раз подряд выполнит его, то каждый раз он будет получать разные наборы базовых точек и, соответственно,...
    Примечание
    Погрешность при решении задачи интерполяции может быть вызвана следующими причинами Во-первых, существует погрешность, связанная с неточностью заданных узловых точек и значений интерполируемой функ...
    На заметку
    Если число интерполяционных точек равно n+1, то полином может иметь порядок и ниже п Это имеет место, например, в тех случаях, когда интерполируемая функция сама является полиномом степени, меньшей...
    Решение задачи
    Процедура ErEst() имеет три параметра. Первым параметром является базовый список с интерполяционными точками. Второй и третий параметры — переменная интерполирования и оценка для производной интер...
    Примечание
    Элементы списка С нумеруются, начиная с индекса 1 и заканчивая индексом N. Число интерполяционных точек, таким образом, равно N. Порядок интерполяционного полинома равен N-1. Поэтому оценка М являе...
    Совет
    Проверим, как работает созданная процедура. Для этого вызовем ее, указав в качестве базового интерполяционного списка созданный ранее генератором случайных чисел список В. Оценку для производной ос...
    Решение задачи
    Если третьим параметром указать число, погрешность также будет представлена числом. Посмотрим, что произойдет, если в качестве второго параметра указать узловую точку....
    Решение задачи
    Ничего удивительного в том, что погрешность равна нулю, нет. Ведь в узловой точке, по определению, значение интерполяционного полинома точно совпадает со значением функции. Нетрудно понять, что по...
    Решение задачи
    После этого создаем два списка. В каждом из этих списков табулируем значения функции по пяти узловым точкам. Однако узловые точки в каждом случае выбраны по-разному. В первом случае выбираем равно...
    Решение задачи
    Во втором случае узлы выбираются согласно формуле xi=(i-l/i), а индексная переменная i пробегает значения от 1 до 5....
    Решение задачи
    Теперь на одном рисунке отобразим все три графика: для интерполируемой функции и двух интерполяционных полиномов для каждого набора точек. Точки из первого набора, определяемого списком С, обознач...
    Решение задачи
    Как видно из рисунка, интерполяционные полиномы весьма далеки от совершенства. Полином по первому множеству вообще представляет собой прямую. Поэтому естественным образом возникает вопрос о том, к...
    Решение задачи
    Прежде чем искать нули полиномов, изменим значение переменной среды _EnvAllSolutions. Это нужно для того, чтобы при решении соответствующего уравнения искались все решения....
    Решение задачи
    Теперь находим нули полинома Чебышева первого рода индекса n....
    Решение задачи
    Решение представлено через переменную среды _Z1, которая в области вывода сопровождается тильдой. Это значит, что на переменную наложены ограничения. Чтобы узнать, каким условиям эта переменная до...
    Решение задачи
    Перевод содержимого области вывода гласит, что исходная переменная _Z1 переименована в Z1" и предполагается, что это целое число. Теория говорит о том, что для построения оптимального полинома, ко...
    Решение задачи
    В качестве интерполируемой возьмем функцию Бесселя нулевого порядка....
    Решение задачи
    Ниже в качестве пустого списка инициализируется переменная Fp. Далее вычисляются узловые точки (переменная X) и значения интерполируемой функции в этих точках (переменная Y), после чего эти данные...
    Решение задачи
    Теперь по этим базовым точкам можно построить интерполяционный полином. На графике, представленном ниже, показана исходная функция, точки интерполяции и интерполяционный полином....
    Решение задачи
    Можем получить выражение для представленного выше на рисунке полинома....
    Решение задачи
    Поскольку элементы списка Fp, по которому строился полином, определялись в формате числа с плавающей точкой, в таком же виде представлены и коэффициенты интерполяционного полинома....
    Контрольные вопросы
    1.Какие из перечисленных ниже процедур Maple могут использоваться для выполнения полиномиальной интерполяции? Нужно ли при этом подключать специальные пакеты? а)interp(); б)Rationallnterpolation()...
    Интерполяция методом Ньютона
    При интерполяции по методу Ньютона в результате получают тот же полином, что и при интерполяции Лагранжа. Причина проста и состоит в том, что в обоих случаях строят полином минимально необходимой...
    Решение задачи
    На заметку
    Предложенный выше способ определения разделительных разностей основан на определении специальной функции Р() для вычисления произведения аргументов. В общем случае число таких функций на единицу бо...
    Примечание
    Здесь еще раз хочется напомнить, что при интерполяции функции полиномом последний не зависит от способа его получения. В этом смысле, что полином Ньютона, что Лагран-жа — все едино. Полином один и...
    Решение задачи
    Локальная переменная L инициализируется со значением А[1][2]. Это значение интерполируемой функции в первой узловой точке. Далее переменной Ямх присваиваем в качестве значения длину списка А. С по...
    Решение задачи
    Легко заметить, что этот полином полностью совпадает с построенным ранее. Ниже приведен пример вычисления еще одного полинома. В этом случае для интерполяционной переменной выбрано другое название...
    Решение задачи
    Для построения интерполяционного полинома методом Ньютона можно было поступить несколько иначе, благо возможности Maple позволяют это сделать. Итак, будем искать интерполяционный полином в виде L(...
    Решение задачи
    Локальная переменная N определяется как такая, что на единицу меньше числа элементов в списке X. Переменная S определяется как функция двух переменных: индекса к и аргумента t и представляет собой...
    На заметку
    Несовпадение индексов выше объясняется просто. Дело в том, что индексация коэффициентов начинается с нуля, а индексация элементов в списках X и У — с единицы. Далее определяется функция L(), имеюща...
    Примечание
    Не следует забывать, что нижняя граница изменения индексной переменной равна О, в то время как индексация элементов списков начинается с 1. Полученная в результате система решается относительно неи...
    На заметку
    Для решения такой системы в среде, отличной от Maple, пришлось бы разрабатывать специальные подпрограммы. Для того чтобы коэффициентам присвоить значения в соответствии с полученным решением, испол...
    Примечание
    В отличие от предыдущих случаев, в том числе и процедуры newtonf), где результат процедуры задавался как действие, в процедуре newton2() результатом является выражение. Здесь переменная интерполиро...
    Решение задачи
    Получаем вполне ожидаемый результат. Поскольку, как неоднократно отмечалось, при использовании метода Ньютона получаем тот же полином, что и при интерполяции Лагранжа, справедливыми остаются все з...
    Общая задача интерполирования
    В качестве базовых интерполяционных функций можно выбрать, по большому счету, любой их набор — главное, чтобы такие функции были независимы. Причем линейной независимости функций в обычном пониман...
    Решение задачи
    Исключительно в целях наглядности в самом начале процедуры задается два массива — узловых точек х и значений функции в этих точках у. Массивы определяются исходя из данных списка А. Переменная п и...
    Решение задачи
    В переменную L1 запишем интерполяционную функцию (полином), построенную по степенным функциям....
    Решение задачи
    В качестве базовых интерполяционных функций можно взять ортогональные полиномы. Например, рассмотрим полиномы Чебышева первого рода, которые, как известно, задаются следующим образом....
    Решение задачи
    Результат интерполирования по этим полиномам запишем в переменную L2....
    Решение задачи
    На первый взгляд кажется, что получено новое, отличное от Ы, выражение, но это не так. Убедиться в последнем можно, упростив его....
    Решение задачи
    Ничего удивительного в этом нет, ведь полиномы — есть полиномы, даже если это полиномы Чебышева. Еще один класс функций, представляющих особый интерес, — тригонометрические функции. Рассмотрим сле...
    Решение задачи
    На заметку Командой iquo(n,m) в качестве результата возвращается целая часть отделения п на ш, в то время как irem(n,m) есть остаток от целочисленного деления n на m. Чтобы представить себе, что ж...
    Решение задачи
    Видим, что это набор тригонометрических функций (чередующиеся синусы и косинусы), используемых, корме прочего, при выполнении разложений в ряд Фурье....
    Примечание
    Приведенная выше система функций часто используется для интерполирования периодических функций. Перечисленные функции в совокупности периодичны с периодом 2л. Поскольку в данном случае функция инте...
    Решение задачи
    Полученное в результате выражение достаточно громоздко, поэтому преобразуем его, перейдя к формату представления чисел с плавающей точкой....
    Решение задачи
    Помня о том, что нет такой формулы, которая была бы нагляднее картинки, построим две интерполяционные функции — по полиномам (L1) и тригонометрическим функциям (L3)....
    Решение задачи
    Сплошная линия для полиномиальной интерполяции, штрихованная — для интерполяции тригонометрическими функциями. Видим, что функции ведут себя практически одинаково. Однако между такими интерполяцио...
    Встроенные процедуры Maple
    Было бы удивительно, если разработчики Maple обошли стороной вопросы, связанные с проблемой интерполирования функций. В частности, для построения интерполяционного полинома в Maple предусмотрена п...
    Решение задачи
    Таблица 7.1. Табулированные значения для интерполируемой функции Узловая точка Значение функции -2 36 -1 48 0 30 1 0 3 96...
    Решение задачи
    Четвертым параметром процедуры spline () может быть либо одно из зарезервированных ключевых слов из набора linear (интерполяция линейными зависимостями), quadratic (интерполяция параболами), cubic...
    Примечание
    В качестве четвертого параметра может быть указано любое целое положительное число, не только в диапазоне от 1 до 4. Просто для этих чисел существует альтернативный вызов через текстовую опцию. Нап...
    Решение задачи
    Выражения достаточно громоздки. Посмотрим, что будет, если использовать в качестве сплайн-полиномов линейные зависимости....
    Решение задачи
    По сравнению с предыдущим случаем, здесь получен более простой результат. Однако простота — далеко не всегда значит эффективность. В этом несложно убедиться, если построить графики для интерполяци...
    Решение задачи
    Очевидно, что линейная сплайн-интерполяция является достаточно грубой. По большому счету, это просто соединение интерполяционных точек линиями. Такой тип интерполяции используется крайне редко. Чт...
    Решение задачи
    Можно видеть, что все три графика (сплайны третьей и четвертой степени, а также интерполяционный полином четвертой степени) практически совпадают, особенно в левой части рисунка. Правда, интерполя...
    Процедуры пакета CurveFitting
    В Maple есть пакет, который предназначен специально для выполнения различного рода аппроксимаций. Речь идет о пакете CurveFitting. Ниже описываются основные функции и процедуры, которые будут дост...
    На заметку
    В Maple 9 в процедуре Spline() допускается использование опции endpoints, значениями которой могут быть ключевые слова natural (значение по умолчанию), notaknot или periodic. С помощью этой опции з...
    Решение задачи
    Решение задачи
    Практически те же замечания можно отнести и к процедуре интерполирования полиномами Polynomiallnterpolation(), предлагаемой в пакете CurveFit-ting. От встроенной процедуры interp() эта отличается...
    Решение задачи
    Как видим, результат один и тот же....
    На заметку
    В Maple 9 процедура Polynomial interpolation () имеет опцию form, которая определяет, в каком виде будет выведен на экран интерполяционный полином. Ее возможными значениями являются ключевые слова...
    Решение задачи
    Чтобы сравнить разные способы интерполирования, построим графики соответствующих интерполяционных функций....
    Решение задачи
    Интервал для отображения графиков не случайно указан до 1, а не до 3, как можно было бы предположить. Дело в том, что в последнем случае разницу между интерполяционными функциями заметить вообще н...
    Примечание
    Если аппроксимирующая функция получена по методу наименьших квадратов, то никакой гарантии в том, что она проходит не то что через все, а хотя бы через одну базовую табличную точку, нет. В этом смы...
    Решение задачи
    Теперь по базовым точкам выполним аппроксимацию. Сначала воспользуемся линейной зависимостью, предлагаемой по умолчанию. В пределах погрешности, с которой определялись базовые точки, параметры опр...
    Примечание
    Выше при вызове процедуры LeastSquares() обязательно следует указывать значение для опции params. Если этого не сделать, то константа Pi в аргументе синуса будет интерпретироваться как параметр опт...
    Решение уравнений
    Встроенные функции Maple при аналитическом решении уравнений исключительно эффективны. При решении уравнений в численном виде это справедливо вдвойне. В последнем случае может быть полезна процеду...
    Решение задачи
    Если для поиска корней указать диапазон 0..1, то корень, соответствующий граничной точке диапазона, будет определен так....
    Решение задачи
    Примечание
    Если первым аргументом процедуры fsolve)) указано не непосредственно уравнение (равенство), а выражение, то решаться будет уравнение, получаемое путем приравнивания этого выражения к нулю. Для поис...
    Решение задачи
    Однако очень часто приходится не просто искать корни уравнений, а еще и демонстрировать умение создавать соответствующие процедуры для их определения. В качестве примера рассмотрим процедуру, в ра...
    Решение задачи
    Основная часть кода данной процедуры нужна для отслеживания особых ситуаций, когда в процессе поиска решения на одном из этапов пробная точка случайно совпадает с корнем. Однако прежде выполняется...
    Примечание
    Перед тем, как выделять функциональную зависимость процедурой unapply(), указанное параметром процедуры выражение f преобразуется в формат представления чисел с плавающей точкой. Для этого использу...
    Примечание
    О том, что точка х=с является центром интервала, станет известно после выполнения первой команды в операторе while. Именно там переменной с будет присвоено значение. Как правило, в таких ситуациях...
    Примечание
    Согласно определению процедуры, в том случае, если обе границы первоначального интервала одновременно являются корнями, возвращен будет тот, который соответствует первой (нижней) указанной границе...
    Решение задачи
    Существуют и другие способы получения приближенных решений уравнения. Очень близок к методу половинного деления метод хорд или метод секущих. Принципиальное отличие от метода половинного деления с...
    Решение задачи
    Теперь воспользуемся процедурой khorda(), предварительно оценив, что производная для Fl(x) по абсолютной величине меньше ехр(-З) на рассматриваемом интервале быть не может. Эту величину, преобразо...
    Решение задачи
    Как видим, результаты в пределах погрешности полностью совпадают. Однако для процедуры khorda(), по сравнению с DoublDiv(), такое совпадение несколько хуже....
    Численное дифференцирование
    Очень часто приходится сталкиваться с ситуацией, когда при численном решении той или иной задачи необходимо вычислить производную или решить дифференциальное уравнение — в численном виде, разумеет...
    Решение задачи
    С учетом начального условия решим данное уравнение в численном виде (решать уравнение в численном виде без начальных условий крайне проблематично)....
    Решение задачи
    Прежде чем появится результат, выводится сообщение, гласящее буквально следующее: "Внимание, невозможно определить значение далее .96981062, возможна сингулярность". Поэтому значения функции будем...
    Решение задачи
    На заметку
    В данном случае в результате выполнения команды nsol(0) выводится список, в котором указано значение точки и значение функции в этой точке. В общем случае в таком списке присутствует еще и значение...
    Решение задачи
    Сами по себе эти значения мало о чем говорят. Интересно их сравнить с точным решением уравнения. Maple с такой задачей справляется, однако результат довольно громоздок. Нас интересуют значения фун...
    Решение задачи
    Примечание
    Результатом решения уравнения является, как известно, равенство. Если процедуру unapply() применить к равенству, то получим оператор, действие которого на аргумент состоит в восстановлении равенств...
    Решение задачи
    Как несложно заметить, совпадение данных более чем приемлемое. Теперь попробуем "обойти" особенность, о которой шла речь в полученном выше предупреждении. Для этого в процедуре численного дифферен...
    Решение задачи
    Никакие предупреждающие сообщения в данном случае не появляются, и значения для функции вычисляются для всего указанного диапазона. Однако точность оставляет желать лучшего. Рассмотрим другое урав...
    Решение задачи
    Поскольку выше значение опции output указано равным listprocedure, в результате возвращается список равенств, левые части которых — переменная, функция и производная от этой функции, а правые част...
    Решение задачи
    Выше процедура eval () после оператора присваивания первым параметром содержит производную от функции у(х) по переменной х, а вторым параметром является определенная ранее процедура nums. В этом с...
    Решение задачи
    Аналогичным образом вычисляются и значения самой функции. Проверим, как численные методы работают при решении краевых задач. С этой целью определим следующее уравнение....
    Решение задачи
    Будем вычислять значения функции на интервале от 0 до 1 с шагом 0.1. Для этого вводим такую команду (метод решения краевой задачи вычислительным ядром определяется автоматически на основе классифи...
    Решение задачи
    Как всегда, сравниваем численное решение с точным. Определяем функциональный оператор, задающий точное решение задачи....
    Решение задачи
    Совпадение хорошее. Однако следует проверить точность вычисления не только функции, но и ее производной....
    Решение задачи
    Как видим, производная также вычисляется достаточно корректно....
    Численное интегрирование
    Численное интегрирование выполняется с помощью той же самой процедуры, что и вычисление интегралов в символьном виде. Разница состоит в том, что теперь процедура int() (или Int()) сама указывается...
    Решение задачи
    Таблица 7.7. Значения опции method Значение Описание CCquad Метод квадратур _cuhre Метод вычисления многократных интегралов на областях конечных размеров (новое в Maple 9 значение) dOlajc Адаптивн...
    Решение задачи
    Далее рассмотрим интеграл от функции, имеющей особенность на границе интегрирования....
    Решение задачи
    Внимание! Явное указание метода интегрирования автоматически означает, что никакие другие методы, в том числе и методы обработки сингулярностей, не используются. Наконец, с помощью двойного интегр...
    Решение задачи
    В Maple 9 воспользоваться приведенной выше командой не удастся из-за переопределения опции для метода Монте-Карло и изменения синтаксиса вызова команд вычисления многократных интегралов. В качеств...
    Решение задачи
    На заметку
    Вычисление интегралов методом Монте-Карло основано на использовании вероятностных оценок. Например, площадь круга могла бы вычисляться так: генератором случайных чисел продуцируются точки на плоско...
    Заключительные замечания
    Описанные в этой главе приемы имели своей целью, в первую очередь, продемонстрировать возможности системы Maple в области численных расчетов. В этом отношении Maple не уступает ни одному из извест...


- Начало -