logo
Подбельский Фомин_Программирование на языке СИ_

10.2. Итерационные методы и ряды

Вычислить m значений заданной функции f(x) на интервале [а,b]. Результаты оформить в виде табл. 10.2. Столбцы таблицы: 1 - значение хi; 2 - значение функции f1(xi), вычисленное с использованием библиотечных функций компилятора; 3 - значение функции f2(хi), вычисленное с помощью явного разложения в ряд (итерационный процесс до достижения машинного нуля); 4 - M-zero - значение машинного нуля относительно f2(xi), т.е. точность вычислений; 5 - количество итераций или количество членов ряда в разложении функции.

Таблица 10.2

xi

f1(xi)

f2(xi)

Точность (M-zero)

Число итераций

х0=a

хт-1=b

Вычисления проводить для float, double и long double.

Ограничения.

• Переменных с индексами (и массивы) не использовать.

• Факториалы и высокие (больше 2) степени в выражениях для членов ряда в явном виде не применять.

• Количество т точек на интервале [а,b] не меньше 10. Разбиение (расположение точек на оси х) может быть равномерным либо по предложенному вами правилу (детерминированному или случайному).

• Для тригонометрических функций в программе приводить значение аргумента к величине 0<=x<=/2.

• Для показательных функций выделять целую часть аргумента, а разложение выполнять для дробной части.

Комментарий по итерационным методам (см.: Трифонов Н.П., Пасхин Е.Н. Практикум работы на ЭВМ. - М.: Наука, 1982. С. 13-16):

1. Для уравнения y = (х>0, k>0, k - целое) можно записать F(х,у) = 1-х/уk =0, откуда получим по формуле Лагранжа:

Здесь для начального приближения y0 > 0 необходимо выполнение условия y0k<(k+1)x.

Если использовать F(x,y)=yk - x=0, то получим итерационную формулу Ньютона:

справедливую для y0>0.

Нужная точность оценивается соотношением |уn+1-уп|<, где обычно заранее задано. Однако в работе выполнять вычисление нужно с точностью до "машинного нуля".

2. Для многих функций требуется использование формулы Маклорена (частный случай разложения в ряд Тейлора):

где uk(x) = akxk и коэффициенты таковы:

Остаточный член:

Примеры разложения в ряд Тейлора:

Указанные разложения малоэффективны при больших по модулю значениях аргумента, так как ряды в этих случаях сходятся медленно.

Рекомендации.

1. Для тригонометрических функций следует автоматически приводить значение аргумента к величине 0 х /2. В этом случае справедлива оценка остаточного члена Rn: |Rn| |un+1|, поэтому счет можно прекращать при |un| .

2. Для показательной функции можно представить значение аргумента в виде х=Е(х)+r, где Е(х) - целая часть х, r - дробная часть (0 r 1). В этом случае еx = еE(x)er ; eE(x) вычисляется как еr = r + +... с остаточным членом |Rn|<|un|, что справедливо для |r|<1, поэтому счет следует вести до |un|<, используя в качестве оценку машинного нуля.

Для функции sh(x) остаточный член Rn < для 0<х п.

2 Для функции ch(x) остаточный член Rn < при 0<|х|<п.

Таким образом, для функций ch(x), sh(x) при больших значениях х рекомендуется вначале получить грубое приближение для n<х, а затем продолжать вычисления до "машинного нуля".

Варианты заданий по итерационным методам и рядам.

Ниже приведена табл. 10.3, содержащая варианты заданий.

Таблица 10.3