67456

Модифицированная функция Бесселя нулевого индекса

Лекция

Информатика, кибернетика и программирование

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

Русский

2014-09-10

172 KB

0 чел.

Лекция 4

 – одна из функций Бесселя. Точнее, это т.н. модифицированная функция Бесселя нулевого индекса.

,

,

,   ,

.

Условия прекращения цикла суммирования:   и  


S0 = 0

A0 = 1

S1 = S0 + A1

A1 = A0*B1

B1 = (x/2)2/12

S2 = S1 + A2

A2 = A1*B2

B2 = (x/2)2/22

. . .

. . .

. . .

Si = Si-1 + Ai

Ai = Ai-1* Bi

Bi = (x/2)2/i2


Текст программы на языке  
Free Pascal,  TP7:

program BesselI0 ;

var

   x,y: Double;

function BesselI0(x, eps : Double): Double;

var

   I, N: integer;

   T, A, B, R, x2: Double;

begin

 x2 := sqr(x/2) ;

 A := x2 ;

 N := 0 ;

 B := x2 / (N + 2) / (N + 2) ;

 

 repeat

   inc(N);

   A := A * B ;

   B := x2 / (N + 2 ) / (N + 2) ;

   R := A / (1 - B) ;

 until ( B < 1) and ( R < eps ) ;

 T := 1;

 for I := N downto 1 do

   T := 1 + x2 / I / I * T ;

 BesselI0 := T ;

end ;


begin

 x := 3 ;

 y := BesselI0(x, 1e-20) ;

 writeln(y) ;

 readln ;

end.

begin

writeln(‘Введите x’) ;  readln(x) ;

writeln(‘Введите eps’) ;  readln(eps) ;

 if  (eps <= 0) or (eps >= 1)  then  exit ;

   

   writeln(‘f=’, BesselI(x, Eps));

   readln;

end.


Оконное приложение в среде
Lazarus:


Текст кода в среде
Lazarus:

unit Unit1;

{$mode objfpc}{$H+}

interface

uses

 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

 { TForm1 }

 TForm1 = class(TForm)

   Button1: TButton;

   Edit1: TEdit; Edit2: TEdit; Edit3: TEdit;

   Label1: TLabel; Label2: TLabel; Label3: TLabel;

   procedure Button1Click(Sender: TObject);

 private

   { private declarations }

 public

   { public declarations }

 end;

var

 Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

function BesselI0(x, eps : Double): Double;

var

 . . .

begin

 . . .

end;

procedure TForm1.Button1Click(Sender: TObject);

var

 x, y, eps: double;

begin

 x := StrToFloat(Edit1.Text);

 eps := StrToFloat(Edit2.Text);

 y := BesselI0(x, eps);

 Edit3.Text := FloatToStr(y);

end;

end.

Оконное приложение в среде Visual C++, фрагмент кода:

double BesselI0(double x, double eps)

{

 int i, N;

 double T, A, B, R, x2;

 x2 = (x / 2.0)*(x / 2.0) ;

 A = x2 ;

 N = 0 ;

 B = x2 / ((double)N + 2.0) / ((double)N + 2.0) ;

 

 do

 {

   N++;

   A *= B ;

   B = x2 / ((double)N + 2.0) / ((double)N + 2.0) ;

   R = A / (1 - B) ;

 }

//  while (!( B < 1 &&  R < eps )) ;

 while (B >= 1 || R >= eps);

 T = 1.0;

 for (i = N; i >= 1; i--)

   T = 1.0 + x2 / ((double)i * (double)i) * T;

 return T;

}

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)

{

 double x;

 x = System::Convert::ToDouble(textBox1->Text);

 double eps;

 eps = System::Convert::ToDouble(textBox2->Text);

 double y;

 y = BesselI0Aux(x, eps);

 textBox3->Text=System::Convert::ToString(y);

}


Рекурсия

При решении сложных задач программирования эти задачи разбиваются на более простые подзадачи. Каждая из подзадач, в свою очередь, может быть разбита на еще более простые подзадачи, и т.д. Если задача в ходе такого последовательного разбиения свелась (необязательно за один шаг) сама к себе самой, имеет место рекурсия.

Если задача сводится к себе, и еще раз к себе, и так далее, то количество обращений к себе должно быть конечным.

Каждое очередное сведение задачи к себе должно приближать задачу к тривиальному случаю. В тривиальном случае задача решается по алгоритму, который более не сводит задачу к себе.

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


Пример.
  

Применяя сведение задачи к себе  n  раз, можно «дойти» до тривиального случая – до значения  0!, а оно равно 1.

Пример 2.   

Применение такого сведения задачи к себе приводит к «зацикливанию».


Числа Фибоначчи  выражаются «сами через себя» при , но выражаются явно (дают тривиальный случай) при  и :

,  ,  ,  .

,   – Golden Ratio.

Сумма убывающей геометрической прогрессии

, ,

есть функциональный (а именно, степенной, по степеням переменной ) ряд с коэффициентами 1, 1, … .


Полиномы Фибоначчи  являются коэффициентами разложения в степенной ряд функции

,     .

Полиномы Фибоначчи  выражаются «сами через себя» при , но выражаются явно (дают тривиальный случай) при  и :

,    ,    

Связь с числами Фибоначчи:  


Пример
 рекурсивной функции

function  Fib(n: integer; x: double): double;

begin

if  n < 1 then  

Fib := 0

else

if  n = 1 then  

Fib := 1

else

if  n = 2 then  

Fib := x

else

Fib := x*Fib(n-1, x) + Fib(n-2, x);

end;

Пример рекурсивной процедуры.  Ханойские башни.

var

 n: integer;

procedure HanoiTowers(n, x, y, z: integer);

begin

 if n = 1 then

    writeln(x,'->', y)

 else

 begin

     HanoiTowers(n-1, x, z, y);

     writeln(x,’–>’, y);

     HanoiTowers(n-1, z, y, x);

 end;

end;

begin

 readln(n);

 HanoiTowers(n,1,2,3);

end.


Тип «Перечисляемый»

<Перечисляемый тип> : : = 

(<Список имён значений>)

Первому из элементов <Списка имён значений> придаётся внутренний (недоступный пользователю) номер 0, второму – номер 1, и т.д.


Переменные типа «Перечисляемый»

Примеры

var

 v1: (LeftDyrecton, RightDyrecton, BackDyrecton);

type

MyType2=(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);

MyType4=(MyTrue, MyFalse);

var

MyVar2: MyType2;

MyVar3: boolean;

MyVar4: MyType4;

begin

for  MyVar2 :=Monday  to  Friday  do  writeln(MyVar2);    // Ошибка

for  MyVar4 :=MyFalse to  MyTrue  do  writeln(MyVar4);  // Ошибка

for MyVar3 := False to True do writeln(MyVar3);            // Выход:  False  True

end.

Замечание.  boolean ≠ (False, True). Вообще говоря.

Замечание.  Тип «Перечисляемый – порядковый тип.


 

А также другие работы, которые могут Вас заинтересовать

25371. Социальная сфера человеческой жизни 55.5 KB
  Многие страны пережили во второй половине XX столетия некий этапный период который потребовал не только поисков эффективных форм экономического политического и культурнодуховного развития общества но и поиска новых средств социальной поддержки населения. Это в свою очередь потребовало переосмысления противоречивого опыта социальной защиты населения советского периода истории отечественной благотворительности государственной социальной политики существующих форм организации социальной поддержки слабых групп населения. В этот период в...
25372. Экологические проблемы социальной работы 51 KB
  Главная теоретическая и практическая задача экологии раскрыть общие закономерности организации жизни и на этой основе разработать принципы рационального использования природных ресурсов в условиях все возрастающего влияния человека на биосферу. Взаимодействие человеческого общества и природы стало одной из важнейших проблем современности поскольку положение которое складывается в отношениях человека с природой часто становится критическим: исчерпываются запасы пресной воды и полезных ископаемых нефти газа цветных металлов и др....
25373. Социальная политика в системе общественных отношений, ее взаимосвязь с социальной работой 37 KB
  Социальная политика в системе общественных отношений ее взаимосвязь с социальной работой В условиях быстрых социальных перемен на макроуровне системы социальной работы для оптимизации ее деятельности требуется проведение эффективных социальных мероприятий и создание качественно новых программ разрешающих и предвосхищающих проблемы конкретного общества. Главная цель этих усилий состоит в содействии нормальному функционированию социальной сферы через реализацию социальной политики. Социальная политика представляет собой обязательный элемент...
25374. Основные модели и приоритеты социальной политики в России и за рубежом 19.81 KB
  Основные модели и приоритеты социальной политики в России и за рубежом.Полит идеология неразрывно связана с полит сознанием – это сфера общ сознания образуемая совок соц чувств представлений взглядов отражающих реальные полит отношен и вместе с тем составляющих их неотъемлемую часть. Неолиберализм отказались от прямой демократии признали неравенство людей но выдвинули идею соц равенства пересмотрели пункт о невмешательстве госва в экку. Социал демократич полит идеология в сер 19в защищала рабочие классы трудящихся от беззакония.
25375. Объект предмет и категории теории социальной работы 39.5 KB
  Объект предмет и категории теории социальной работы Теория социальной работы это наука о закономерностях и принципах функционирования развития и регулирования конкретных социальных процессов и состояний личности в трудных жизненных ситуациях защите ее прав и свобод посредством целенаправленного воздействия на личность и окружающую ее социальную среду. Выбор объекта и предмета науки влияет на содержание теории и практики социальной работы. Объект и предмет основополагающие категории развития теории социальной работы. Так в...
25376. Социальная работа как вид профессиональной деятельности: объекты и субъекты 35 KB
  чтобы понять сущность социальной работы как профессионального вида деятельности необходимо дать определение рядовому понятию – деятельность. Деятельность – это способ существования и развития социальной действительности проявление социальной активности целенаправленное отражение и преобразование окружающего мира. Основой социальной работы в России выступает благотворительность уходящая своими корнями в глубокую древность. Профессия социальный работник специалист по социальной работе официально зарегистрированы в мартеапреле...
25377. Основные тенденции истории социальной работы за рубежом 62.5 KB
  Основные тенденции истории социальной работы за рубежом Периодизация истории социальной работы за рубежом повторяет основные периоды в истории развития народов: 1.Развитие социальной работы в новое время середина XVII – начало XX в.Развитие социальной работы в новейшее время XXв. Кроме этой классификации не менее распространена следующая: пять периодов в истории социальной работы за рубежом: 1.
25378. Основные тенденции становления социальной работы в России 133 KB
  Родоплеменные и общинные формы помощи и взаимопомощи у славян до Х в. Самыми распространенными формами помощи бедным односельчанам являлось кормление по домам призреваемые находились целые сутки в одном доме переходя на следующие в другой и подаяние милостыни но в деревнях денег было мало и подавали чаше всего едой и одеждой. Характеризуется отсутствием государственной систему социальной помощи населению. Самая распространенная форма помощи подача милостыни.
25379. Сущность и классификация технологий социальной работы 36 KB
  Сущность и классификация технологий социальной работы При определении технологий в социальной работе необходимо учитывать общую трактовку социальных технологий особенности социальной работы как одного из видов человеческой деятельности а также особенности объектов субъектов содержания средств и других элементов социальной работы как системы. В отечественной литературе социальные технологии применительно к социальной работе трактуются как совокупность приемов методов и воздействий применяемых социальными службами отдельными учреждениями...