Численное интегрирование с использованием степенных рядов
Разложением функции y= f (x) в степенной ряд называется представление этой функции в некоторой области значений переменного x в виде суммы сходящегося степенного ряда. Область, в которой функция представлена в виде суммы степенного ряда, называется областью разложения функции в степенной ряд. Здесь С0, С1, С2,…, Сn,… — некоторые фиксированные известные числа, которые называются коэффициентами… Читать ещё >
Численное интегрирование с использованием степенных рядов (реферат, курсовая, диплом, контрольная)
Курсовая работа
Численное интегрирование с использованием степенных рядов
1. Постановка задачи и определение основных требований к разрабатываемому программному обеспечению
1.1 Введение
Интегрирование — вычисление значения определённого интеграла. Под численным интегрированием понимают набор численных методов отыскания значения определённого интеграла. Если в конкретном случае для подынтегральной функции сложно или невозможно найти первообразную, удобно воспользоваться разложением функции на ряд однотипных слагаемых, и затем интегрировать каждое слагаемое отдельно до тех пор, пока не будет достигнута требуемая точность.
Данное программное средство было разработано на основе следующего технического задания:
Разработать программное средство позволяющее применить численное интегрирование функции с использованием степенных рядов.
1.2 Основание для разработки
Программа разрабатывается на основе учебного плана кафедры «Информационные системы и технологии» по вычислительной математике.
1.3 Назначение программного средства
Основной функцией программного средства является численное интегрирование функции с использованием степенных рядов.
1.4 Требования к программному средству
Требования к функциональным характеристикам
После запуска программа предлагает пользователю выбрать из предложенного списка функцию, которую необходимо интегрировать, и необходимые коэффициенты. После этого пользователь вводит пределы интегрирования и требуемую точность вычислений. Нажав на кнопку, пользователь получает ответ или сообщение о некорректно введённых данных или некорректно поставленной задаче.
Требования к надежности
Предусмотреть блокировку некорректных действий.
Требования к условиям эксплуатации
Носитель с программой должен эксплуатироваться в условиях с температурой от -5 до 500С и влажностью воздуха 10−80%.
Требования к составу и параметрам технических средств
Наличие ПК с клавиатурой. Необходимое пространство на жестком диске — около 400 Кб.
Требования к информационно-программной совместимости
Программа должна работать под управление операционной системы семейства DOS (версии не ниже 3.3), либо Win 32 (Windows 95, Windows 98, Windows 2000, Windows XP, Windows Vista Windows 7 и т. п.).
2. Проектирование программного средства и программная реализация
интегрирование модульный алгоритм программный
2.1 Построение математической модели для интегрирования функции с использованием степенных рядов
Пусть нам необходимо вычислить определённый интеграл некоторой функции f(x) на отрезке [a, b]. Введём понятие степенного ряда.
Степенной ряд — это функциональный ряд следующего вида:
C0+C1(x-x0)+C2(x-x0)2+…+Cn(x-x0)n+…
Здесь С0, С1, С2,…, Сn,… — некоторые фиксированные известные числа, которые называются коэффициентами степенного ряда, они образуют бесконечную последовательность. X0 — известное число (фиксированное) — центр разложения степенного ряда. X — переменная величина.
Для любого степенного ряда существует интервал (-R;R), в каждой внутренней точке которого ряд сходится, а в каждой внешней точке расходится.
Разложением функции y= f(x) в степенной ряд называется представление этой функции в некоторой области значений переменного x в виде суммы сходящегося степенного ряда. Область, в которой функция представлена в виде суммы степенного ряда, называется областью разложения функции в степенной ряд.
Если данная функция разлагается в степенной ряд, то разложение
называется ряд Тейлора для функции f(x), а при x0=0 — ряд Маклорена.
Всякой функции, которая в точке x0 имеет бесконечное число производных, можно сопоставить ряд Тейлора.
Одно из основных свойств степенного ряда выглядит так:
То есть, разложив функцию в ряд Маклорена и проинтегрировав каждое слагаемое (пока не будет достигнута требуемая точность), а затем просуммировав их, мы проинтегрируем исходную функцию. Интегрировать каждое слагаемое в отдельности безусловно проще, так как здесь мы имеем дело с интегрированием хорошо известной степенной функции.
При вычислениях необходимо учитывать, что отрезок интегрирования должен попадать в область сходимости ряда.
Если нам необходимо проинтегрировать не функцию f(x), а, например, функцию f(x2), то в разложении функции f(x) следует заменить x на x2, а затем поступать аналогично.
Для основных элементарных функций составлены типовые разложения:
1) ,
2) ,
3) ,
4), при; при .
5) ,
6) ,
7) ,
8) ,
9) ,
10) ,
Для знакочередующихся рядов вычисление приближённого значения интеграла следует прекратить тогда, когда абсолютное значение очередного слагаемого станет меньше требуемой точности e. Для знакопостоянных рядов необходимо оценить сумму членов, отброшенных после n-ого слагаемого. Как только эта сумма станет меньше e, вычисления можно прекратить.
2.2 Ручное интегрирование функции с использованием степенных рядов
Найти интеграл, e=0,0001.
Решение.
Разложим функцию cosx в степенной ряд:
Проинтегрируем получившийся ряд:
Так как программа производит вычисления с большим количеством знаков после запятой, она даёт более точный результат, равный 0,841 468.
Вычислим данный интеграл вручную:
Таким образом, мы видим, что наш метод работает верно и точность вычислений соблюдается.
2.3 Разработка модульной структуры программы
Рис. 1. Модульная структура программы
2.4 Разработка алгоритма программы
Блок-схема программы
1. Основная программа — процедура Button1Click (Sender: TObject).
Назначение: основная процедура программы, производит проверки на корректность данных и выводит результат работы программы. (см. Рис. 2).
Входные параметры: нет.
Выходные параметры: нет.
Рис. 2.1. Процедура Button1Click
Рис. 2.2. Процедура Button1Click
Рис. 2.3. Процедура Button1Click
2. Процедура proc0.
Назначение: считает значение интеграла функции e^(kx). (см. Рис. 3).
Входные параметры: нет.
Выходные параметры: нет.
Рис. 3.1. Процедура Proc0
Рис. 3.2. Процедура Proc0
3. Процедура proc1.
Назначение: считает значение интеграла функций sin (kx), arctg (kx) (см. Рис. 4).
Входные параметры: нет.
Выходные параметры: нет.
Рис. 4.1. Процедура Proc1
Рис. 4.2. Процедура Proc1
4. Процедура proc2.
Назначение: считает значение интеграла функций cos (kx). (см. Рис. 5).
Входные параметры: нет.
Выходные параметры: нет.
Рис. 5.1. Процедура Proc2
Рис. 5.2. Процедура Proc2
5. Процедура proc4.
Назначение: считает значение интеграла функции (1+kx)^m. (см. Рис. 6).
Входные параметры: нет.
Выходные параметры: нет.
Рис. 6. Процедура Proc4
6. Процедура proc5.
Назначение: считает значение интеграла функций 1/(1+kx). (см. Рис. 7).
Входные параметры: нет.
Выходные параметры: нет.
Рис. 7. Процедура Proc5
7. Процедура proc6.
Назначение: считает значение интеграла функции 1/(1-kx). (см. Рис. 8).
Входные параметры: нет.
Выходные параметры: нет.
Рис. 8.1. Процедура Proc6
Рис. 8.2. Процедура Proc6
8. Процедура proc7.
Назначение: считает значение интеграла функции ln (1+kx). (см. Рис. 9).
Входные параметры: нет.
Выходные параметры: нет.
Рис. 9 Процедура Proc7.
9. Процедура proc9.
Назначение: считает значение интеграла функции sh (kx). (см. Рис. 10).
Входные параметры: нет.
Выходные параметры: нет.
Рис. 10.1. Процедура Proc9
Рис. 10.2. Процедура Proc9
10. Процедура proc10.
Назначение: считает значение интеграла функции ch (kx). (см. Рис. 11).
Входные параметры: нет.
Выходные параметры: нет.
Рис. 11.1. Процедура Proc10
Рис. 11.2. Процедура Proc10
2.5 Описание структур, типов данных и глобальных переменных
На главной форме присутствуют объекты:
Combobox1 — объект для осуществления выбора функции.
Edit2 — поле для ввода коэффициента k.
Edit4 — поле для ввода коэффициента m.
Edit5 — поле для ввода предела интегрирования a.
Edit6 — поле для ввода предела интегрирования b.
Edit7 — поле для ввода точности вычислений e.
Edit8 — поле для вывода ответа.
Button1 — кнопка «Ответ».
В программе используются следующие глобальные переменные:
real fb1 — значение интеграла в точке b на предыдущем шаге.
real fb2 — значение интеграла в точке b на текущем шаге.
real fa1 — значение интеграла в точке a на предыдущем шаге.
real fa2 — значение интеграла в точке a на текущем шаге.
real k — коэффикиент перед x.
real m — параметр функции.
real a — верхний предел интегрирования.
real b — нижний предел интегрирования.
real e — точность.
boolean f — определяет алгоритм вычиисления схожих функций.
2.6 Описание процедур и функций
1 Процедура Button1Click (Sender: TObject).
Назначение: основная процедура программы, производит проверки на корректность данных и выводит результат работы программы. (см. Рис. 2).
Входные параметры: нет.
Выходные параметры: нет.
2. Процедура proc0.
Назначение: считает значение интеграла функции e^(kx). (см. Рис. 3).
Входные параметры: нет.
Выходные параметры: нет.
3. Процедура proc1.
Назначение: считает значение интеграла функций sin (kx), arctg (kx) (см. Рис. 4).
Входные параметры: нет.
Выходные параметры: нет.
4. Процедура proc2.
Назначение: считает значение интеграла функций cos (kx). (см. Рис. 5).
Входные параметры: нет.
Выходные параметры: нет.
5. Процедура proc4.
Назначение: считает значение интеграла функции (1+kx)^m. (см. Рис. 6).
Входные параметры: нет.
Выходные параметры: нет.
6. Процедура proc5.
Назначение: считает значение интеграла функции 1/(1+kx). (см. Рис. 7).
Входные параметры: нет.
Выходные параметры: нет.
7. Процедура proc6.
Назначение: считает значение интеграла функций 1/(1-kx). (см. Рис. 8).
Входные параметры: нет.
Выходные параметры: нет.
8. Процедура proc7.
Назначение: считает значение интеграла функции ln (1+kx). (см. Рис. 9).
Входные параметры: нет.
Выходные параметры: нет.
9. Процедура proc9.
Назначение: считает значение интеграла функции sh (kx). (см. Рис. 10).
Входные параметры: нет.
Выходные параметры: нет.
10. Процедура proc10.
Назначение: считает значение интеграла функции ch (kx). (см. Рис. 11).
Входные параметры: нет.
Выходные параметры: нет.
Заключение
В данной курсовой работы были закреплены и систематизированы навыки программирования на языке Delphi, а так же навыки в разработке алгоритмов и в составлении программ для решения поставленной задачи. Был изучен один из методов численного интегрирования функции — интегрирование функции с использованием степенных рядов.
1. Delphi. Программирование на языке высокого уровня / В. В Фаронов — СПб.: Питер, 2007. — 640 с.
2. Демидович Б. П., Марон И. А. Основы вычислительной математики. — М.: Наука, 1970.
Приложение
Исходный текст программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class (TForm)
Label1: TLabel;
ComboBox1: TComboBox;
Label2: TLabel;
Label4: TLabel;
Edit2: TEdit;
Label6: TLabel;
Edit4: TEdit;
Button1: TButton;
Edit5: TEdit;
Label7: TLabel;
Label8: TLabel;
Edit6: TEdit;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Edit7: TEdit;
Edit8: TEdit;
procedure Button1Click (Sender: TObject);
procedure proc0;
procedure proc1;
procedure proc2;
procedure proc4;
procedure proc5;
procedure proc6;
procedure proc7;
procedure proc9;
procedure proc10;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
fb1,fa1,fb2,fa2,k, m, a, b, e:real;
f:boolean;
implementation
{$R *.dfm}
procedure TForm1. Button1Click (Sender: TObject);
var s: real;
begin
if (length (edit2.text)=0) or (length (edit5.text)=0) or (length (edit6.text)=0) or (length (edit7.text)=0)
then MessageDlg ('Заполните все поля', mtInformation, [mbOk], 0);
if ((form1.ComboBox1.ItemIndex=3) or (form1.ComboBox1.ItemIndex=4)) and (length (edit4.text)=0) then MessageDlg ('Введите значение m', mtInformation, [mbOk], 0);
try
k:=StrToFloat (Edit2.Text);
a:=StrToFloat (Edit5.Text);
b:=StrToFloat (Edit6.Text);
e:=StrToFloat (Edit7.Text);
except
on EconvertError do
MessageDlg ('Значения полей должны быть числовыми', mtInformation, [mbOk], 0);
end;
if (form1.ComboBox1.ItemIndex=3) or (form1.ComboBox1.ItemIndex=4) then
begin
try
m:=StrToFloat (Edit4.Text);
except
on EconvertError do
MessageDlg ('Значения полей должны быть числовыми', mtInformation, [mbOk], 0);
end;
end;
if (form1.ComboBox1.ItemIndex=4) or (form1.ComboBox1.ItemIndex=5) or (form1.ComboBox1.ItemIndex=6) or (form1.ComboBox1.ItemIndex=7)
then
if ((k*a<=-1) or (k*b<=-1)) or ((k*b>=1) or (k*a>=1)) then MessageDlg ('Неверные пределы интегрирования', mtInformation, [mbOk], 0);
if (form1.ComboBox1.ItemIndex=8) then
if ((k*a<-1) or (k*b<-1)) or ((k*b>1) or (k*a>1)) then MessageDlg ('Неверные пределы интегрирования', mtInformation, [mbOk], 0);
if (form1.ComboBox1.ItemIndex=1) then f:=true;
if a<>b then
begin
case form1. ComboBox1.ItemIndex of
0: proc0;
1: proc1;
2: proc2;
3: proc4;
4: proc4;
5: proc5;
6: proc6;
7: proc7;
8: proc1;
9: proc9;
10: proc10;
end;
s:=fb1-fa1;
end
else s:=0;
edit8.Clear;
edit8.text:=FloatToStr (s);
end;
procedure TForm1. proc0;
var x, x1, r:real; i, p: integer;
begin
x:=b*k;
x1:=b*k;
i:=2;
p:=1;
fb1:=x;
x:=x*x1;
fb2:=x/(i*p);
if b<(i+1) then
if b=0 then
r:=1/(p*i*(i+1-b))
else
if (b>0) or ((i+1)mod 2=0) then
r:=exp (ln (abs (b))*(i+1))/(p*i*(i+1-b))
else
r:=-exp (ln (abs (b))*(i+1))/(p*i*(i+1-b))
else r:=1;
while abs®>e do
begin
fb1:=fb1+fb2;
x:=x*x1;
p:=p*i;
i:=i+1;
fb2:=x/(k*i*p);
if b<(i+1) then
if b=0 then
r:=1/(p*i*(i+1-b))
else
if (b>0) or ((i+1)mod 2=0) then
r:=exp (ln (abs (b))*(i+1))/(p*i*(i+1-b))
else
r:=-exp (ln (abs (b))*(i+1))/(p*i*(i+1-b))
else r:=1;
end;
x:=a*k;
x1:=a*k;
i:=2;
p:=1;
fa1:=x;
x:=x*x1;
fa2:=x/(k*i*p);
if a<(i+1) then
if a=0 then
r:=1/(p*i*(i+1-a))
else
if (a>0) or ((i+1)mod 2=0) then
r:=exp (ln (abs (a))*(i+1))/(p*i*(i+1-a))
else r:=-exp (ln (abs (a))*(i+1))/(p*i*(i+1-a))
else r:=1;
while abs®>e do
begin
fa1:=fa1+fa2;
x:=x*x1;
p:=p*i;
i:=i+1;
fa2:=x/(k*i*p);
if a<(i+1) then
if a=0 then
r:=1/(p*i*(i+1-a))
else
if (a>0) or ((i+1)mod 2=0) then
r:=exp (ln (abs (a))*(i+1))/(p*i*(i+1-a))
else r:=-exp (ln (abs (a))*(i+1))/(p*i*(i+1-a))
else r:=1;
end;
end;
procedure TForm1. proc1;
var x, x1: real; i, p, z:integer;
begin
x:=b*k*b*k;
x1:=b*k*b*k;
i:=2;
z:=1;
p:=1;
fb1:=x/(k*i*p);
i:=i+2;
z:=z*(-1);
if f then
begin
p:=p*(i-1)*(i-2);
fb2:=x*z/(k*i*p);
end
else
fb2:=x*z/(k*i*(i-1));
while abs (fb2)>e do
begin
fb1:=fb1+fb2;
x:=x*x1;
i:=i+2;
z:=z*(-1);
if f then
begin
p:=p*(i-1)*(i-2);
fb2:=x*z/(k*i*p);
end
else
fb2:=x*z/(k*i*(i-1));
end;
x:=a*k*a*k;
x1:=a*k*a*k;
i:=2;
z:=1;
p:=1;
fa1:=x/i*p;
i:=i+2;
z:=z*(-1);
if f then
begin
p:=p*(i-1)*(i-2);
fa2:=x*z/(k*i*p);
end
else
fa2:=x*z/(k*i*(i-1));
while abs (fa2)>e do
begin
fa1:=fa1+fa2;
x:=x*x1;
i:=i+2;
z:=z*(-1);
if f then
begin
p:=p*(i-1)*(i-2);
fa2:=x*z/(k*i*p);
end
else
fa2:=x*z/(k*i*(i-1));
end;
end;
procedure TForm1. proc2;
var x, x1: real; i, p, z:integer;
begin
x:=b*k;
x1:=b*k*b*k;
fb1:=x;
x:=x*x1;
z:=-1;
i:=3;
p:=2;
fb2:=x*z/(k*i*p);
while abs (fb2)>e do
begin
fb1:=fb1+fb2;
z:=z*(-1);
x:=x*x1;
i:=i+2;
p:=p*(i-1)*(i-2);
fb2:=x*z/(k*i*p);
end;
x:=a*k;
x1:=a*k*a*k;
fa1:=x;
x:=x*x1;
z:=-1;
i:=3;
p:=2;
fa2:=x*z/(k*i*p);
while abs (fa2)>e do
begin
fa1:=fa1+fa2;
z:=z*(-1);
x:=x*x1;
i:=i+2;
p:=p*(i-1)*(i-2);
fa2:=x*z/(k*i*p);
end;
end;
procedure TForm1. proc4;
var x, x1, m1:real; i, p: integer;
begin
x:=b*k;
x1:=b*k;
fb1:=x;
i:=2;
p:=1;
x:=x*x1;
m1:=m;
fb2:=m1*x/(k*i*p);
while abs (fb2)>e do
begin
fb1:=fb1+fb2;
m1:=m1*(m1-i+1);
x:=x*x1;
p:=p*i;
i:=i+1;
fb2:=m1*x/(k*i*p);
end;
x:=a*k;
x1:=a*k;
fa1:=x;
i:=2;
p:=1;
x:=x*x1;
m1:=m;
fa2:=m1*x/(k*i*p);
while abs (fa2)>e do
begin
fb1:=fb1+fb2;
m1:=m1*(m1-i+1);
x:=x*x1;
p:=p*i;
i:=i+1;
fa2:=m1*x/(k*i*p);
end;
end;
procedure TForm1. proc5;
var x, x1: real; i, z: integer;
begin
x:=b*k;
x1:=b*k;
fb1:=x;
i:=2;
x:=x*x1;
z:=-1;
fb2:=x*z/(k*i);
while abs (fb2)>e do
begin
fb1:=fb1+fb2;
z:=z*(-1);
x:=x*x1;
i:=i+1;
fb2:=x*z/(k*i);
end;
x:=a*k;
x1:=a*k;
fa1:=x;
i:=2;
x:=x*x1;
z:=-1;
fa2:=x*z/(k*i);
while abs (fa2)>e do
begin
fa1:=fa1+fa2;
z:=z*(-1);
x:=x*x1;
i:=i+1;
fa2:=x*z/(k*i);
end;
end;
procedure TForm1. proc6;
var x, x1, r:real; i: integer;
begin
x:=b*k;
x1:=b*k;
fb1:=x;
i:=2;
x:=x*x1;
fb2:=x/(k*i);
if b
if b=0 then
r:=1/((i+1)*(i-b))
else
if (b>0) or ((i+1)mod 2=0) then
r:=exp (ln (abs (b))*(i+1))/((i+1)*(i-b))
else
r:=-exp (ln (abs (b))*(i+1))/((i+1)*(i-b))
else r:=1;
while abs®>e do
begin
fb1:=fb1+fb2;
x:=x*x1;
i:=i+1;
fb2:=x/(k*i);
if b
if b=0 then
r:=1/((i+1)*(i-b))
else
if (b>0) or ((i+1)mod 2=0) then
r:=exp (ln (abs (b))*(i+1))/((i+1)*(i-b))
else
r:=-exp (ln (abs (b))*(i+1))/((i+1)*(i-b))
else r:=1;
end;
x:=a*k;
x1:=a*k;
fa1:=x;
i:=2;
x:=x*x1;
fa2:=x/(k*i);
if a
if a=0 then
r:=1/((i+1)*(i-a))
else
if (a>0) or ((i+1)mod 2=0) then
r:=exp (ln (abs (a))*(i+1))/((i+1)*(i-a))
else
r:=-exp (ln (abs (a))*(i+1))/((i+1)*(i-a))
else r:=1;
while abs®>e do
begin
fa1:=fa1+fa2;
x:=x*x1;
i:=i+1;
fa2:=x/(k*i);
if a
if a=0 then
r:=1/((i+1)*(i-a))
else
if (a>0) or ((i+1)mod 2=0) then
r:=exp (ln (abs (a))*(i+1))/((i+1)*(i-a))
else
r:=-exp (ln (abs (a))*(i+1))/((i+1)*(i-a))
else r:=1;
end;
end;
procedure TForm1. proc7;
var x, x1: real; i, z: integer;
begin
x:=b*k*b*k;
x1:=b*k;
i:=2;
fb1:=x/(k*i);
z:=-1;
x:=x*x1;
i:=i+1;
fb2:=x*z/(k*i*(i-1));
while abs (fb2)>e do
begin
fb1:=fb1+fb2;
z:=z*(-1);
x:=x*x1;
i:=i+1;
fb2:=x*z/(k*i*(i-1));
end;
x:=a*k*a*k;
x1:=a*k;
i:=2;
fa1:=x/(k*i);
z:=-1;
x:=x*x1;
i:=i+1;
fa2:=x*z/(k*i*(i-1));
while abs (fa2)>e do
begin
fa1:=fa1+fa2;
z:=z*(-1);
x:=x*x1;
i:=i+1;
fa2:=x*z/(k*i*(i-1));
end;
end;
procedure TForm1. proc9;
var x, x1, r:real; i, p: integer;
begin
x:=b*k*b*k;
x1:=b*k*b*k;
i:=2;
p:=1;
fb1:=x/(k*i*p);
i:=i+2;
p:=p*(i-1)*(i-2);
fb2:=x/(k*i*p);
if b<(i+2) then
if b=0 then
r:=(i+2)/(p*i*(i+1)*(sqr (i+2)-b*b))
else
r:=exp (ln (abs (b))*(i+2))*(i+2)/(p*i*(i+1)*(sqr (i+2)-b*b))
else r:=1;
while abs®>e do
begin
fb1:=fb1+fb2;
x:=x*x1;
i:=i+2;
p:=p*(i-1)*(i-2);
fb2:=x/(k*i*p);
if b<(i+2) then
if b=0 then
r:=(i+2)/(p*i*(i+1)*(sqr (i+2)-b*b))
else
r:=exp (ln (abs (b))*(i+2))*(i+2)/(p*i*(i+1)*(sqr (i+2)-b*b))
else r:=1;
end;
x:=a*k*a*k;
x1:=a*k*a*k;
i:=2;
p:=1;
fa1:=x/i*p;
i:=i+2;
p:=p*(i-1)*(i-2);
fa2:=x/(k*i*p);
if a<(i+2) then
if a=0 then
r:=(i+2)/(p*i*(i+1)*(sqr (i+2)-a*a))
else
r:=exp (ln (abs (a))*(i+2))*(i+2)/(p*i*(i+1)*(sqr (i+2)-a*a))
else r:=1;
while abs®>e do
begin
fa1:=fa1+fa2;
x:=x*x1;
i:=i+2;
p:=p*(i-1)*(i-2);
fa2:=x/(k*i*p);
if a<(i+2) then
if a=0 then
r:=(i+2)/(p*i*(i+1)*(i+3-a*a))
else
r:=exp (ln (abs (a))*(i+2))*(i+2)/(p*i*(i+1)*(sqr (i+2)-a*a))
else r:=1;
end;
end;
procedure TForm1. proc10;
var x, x1, r:real; i, p: integer;
begin
x:=b*k;
x1:=b*k*b*k;
fb1:=x;
x:=x*x1;
i:=3;
p:=2;
fb2:=x/(k*i*p);
if b<(i+2) then
if b=0 then
r:=(i+2)/(p*i*(i+1)*(sqr (i+2)-b*b))
else
if b>0 then
r:=exp (ln (abs (b))*(i+2))*(i+2)/(p*i*(i+1)*(sqr (i+2)-b*b))
else
r:=-exp (ln (abs (b))*(i+2))*(i+2)/(p*i*(i+1)*(sqr (i+2)-b*b))
else r:=1;
while abs®>e do
begin
fb1:=fb1+fb2;
x:=x*x1;
i:=i+2;
p:=p*(i-1)*(i-2);
fb2:=x/(k*i*p);
if b<(i+2) then
if b=0 then
r:=(i+2)/(p*i*(i+1)*(sqr (i+2)-b*b))
else
if b>0 then
r:=exp (ln (abs (b))*(i+2))*(i+2)/(p*i*(i+1)*(sqr (i+2)-b*b))
else
r:=-exp (ln (abs (b))*(i+2))*(i+2)/(p*i*(i+1)*(sqr (i+2)-b*b))
else r:=1;
end;
x:=a*k;
x1:=a*k*a*k;
fa1:=x;
x:=x*x1;
i:=3;
p:=2;
fa2:=x/(k*i*p);
if a<(i+2) then
if a=0 then
r:=(i+2)/(p*i*(i+1)*(sqr (i+2)-a*a))
else
if a>0 then
r:=exp (ln (abs (a))*(i+2))*(i+2)/(p*i*(i+1)*(sqr (i+2)-a*a))
else
r:=-exp (ln (abs (a))*(i+2))*(i+2)/(p*i*(i+1)*(sqr (i+2)-a*a))
else r:=1;
while abs®>e do
begin
fa1:=fa1+fa2;
x:=x*x1;
i:=i+2;
p:=p*(i-1)*(i-2);
fa2:=x/(k*i*p);
if a<(i+2) then
if a=0 then
r:=(i+2)/(p*i*(i+1)*(sqr (i+2)-a*a))
else
if a>0 then
r:=exp (ln (abs (a))*(i+2))*(i+2)/(p*i*(i+1)*(sqr (i+2)-a*a))
else
r:=-exp (ln (abs (a))*(i+2))*(i+2)/(p*i*(i+1)*(sqr (i+2)-a*a))
else r:=1;
end;