Фортран для профессионалов
Излагаются средства математической библиотеки IMSL, входящей в состав профессиональных версий Фортрана фирм Microsoft и Compaq, позволяющие анализировать линейные модели и выполнять матричные вычисления. Приводятся алгоритмы, положенные в основу процедур библиотеки, а также варианты их программных реализаций. Поясняются все используемые при описании процедур библиотеки понятия. Излагаемый материал иллюстрируется большим числом примеров.Предназначено для научных работников, инженеров, преподавателей, студентов и аспирантов вузов.
часть 3
Содержание
Содержание книги "Фортран для профессионалов : математическая библиотека IMSL"
Отрывок из книги
1. Интерполяция и аппроксимация 67 Описание: Подпрограмма PP1GD, получив вектор с абсциссами x(1:n), в котором xi < xi + 1 для i = 1, …, n - 1, вычисляет производную порядка j f (j)(xi), i = 1, …, n КМ-представления сплайна, возвращая результат в векторе value. Функцио-нально подпрограмма PP1GD аналогична программе, в которой функция PPDER вызывается в цикле. Однако PP1GD значительно эффективнее. Подпрограмма PP1GD основывается на процедуре PPVALU, приведен-ной в [7]. Пример. Решается та же, что и для вышерассмотренной функции PPDER, задача. program pp1gdTest use dfimsl integer(4), parameter :: korder = 4, n = 20, ncoef = 20, ndata = 20, nknot = ndata + korder integer(4) :: i, nintv, nppcf real(4) :: break(ncoef), bscoef(ncoef), df, f, fdata(ndata), ppcoef(korder, ncoef), & value1(n), value2(n), x, xdata(ndata), xknot(nknot), xvec(n) ! Задаем функцию и ее производную f(x) = x * exp(x) df(x) = (x + 1.0) * exp(x) do i = 1, ndata ! Задаем точки интерполяции xdata(i) = float( i - 1) / float(ndata - 1) fdata(i) = f(xdata(i)) end do ! Генерируем последовательность узлов ! и вычисляем затем интерполяционный В-сплайн call bsnak(ndata, xdata, korder, xknot) call bsint(ncoef, xdata, fdata, korder, xknot, bscoef) ! Преобразовываем В-сплайн в КМ-представление call bscpp(korder, xknot, ncoef, bscoef, nppcf, break, ppcoef) ! Генерируем оценочные точки do i = 1, n xvec(i) = float(i - 1) / float(n - 1) end do nintv = nppcf ! Оценка КМ-представления call pp1gd(0, n, xvec, korder, nintv, break, ppcoef, value1) ! Оценка первой производной КМ-представления В-сплайна call pp1gd (1, n, xvec, korder, nintv, break, ppcoef, value2) ! Вывод заголовка таблицы результатов write(*, "(11x, 'x', 8x, 's(x)', 7x, 'Error', 7x, 's''(x)', 7x, 'Error')") do i = 1, n ! Вывод результата на однородной сетке
Внимание!
При обнаружении неточностей или ошибок в описании книги "Фортран для профессионалов : математическая библиотека IMSL (автор О. Бартеньев)", просим Вас отправить сообщение на почту help@directmedia.ru. Благодарим!
и мы свяжемся с вами в течение 15 минут
за оставленную заявку