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). Вообще говоря.

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


 

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

32465. Технологии отображения информации 35.5 KB
  Поток электронов электронный луч проходит через фокусирующую и отклоняющую катушки которые направляют его в определенную точку покрытого люминофором экрана. Период сканирования по горизонтали определяется скоростью перемещения луча поперек экрана. В процессе развертки перемещения по экрану луч воздействует на те элементарные участки люминофорного покрытия экрана в которых должно появиться изображение. Интенсивность луча постоянно меняется в результате чего изменяется яркость свечения соответствующих участков экрана.
32466. Направление технического прогресса в СКС и Т 27.5 KB
  Современная индустрия туризма за последние годы притерпела вестма существенные изменения в связи с внедрением новых компьютерных технологий успешное функционирование любой фирмы на рынке туристского бизнеса практически не мыслимо без использования современных информационных технологий. Современные компьютерные технологии активно внедряются в сферу туристского бизнеса и их применение становится неотъемлемым условием повышения конкурентоспособности любого туристского предприятия. Возможность формирования новых маркетинговых каналов...
32467. Инфраструктура предприятий сервиса. Технические средства предприятий (организаций) социально-культурного сервиса и туризма 31 KB
  Тип гостиничной телефонной станции зависит от количества абонентных точек назначения гостиницы и ее расположения. Для облегчения связи с работниками управления и администрации гостиницы телефонное оборудование может быть укомплектовано телефонной системой. Устройство внутренней связи: важный фактор эффективности работы гостиницы. Телетайпфакс представляет собой систему письменной телекоммуникации обслуживающую как администрацию гостиницы так и клиентов.
32468. Задачи технического и технологического оснащения предприятий 27.5 KB
  Технология совокупность методов обработки изготовления изменения состояния свойств формы сырья материала или полуфабриката применяемых в процессе производства для получения готовой продукции наука о способах воздействия на сырье материалы и полупродукты соответствующими орудиями производства. Развитие науки и техники способствует совершенствованию средств массового производства туристских услуг материальнотехнической базы в гостиничном хозяйстве на транспорте в бюро путешествий.
32469. Модернизация технических средств предприятий СКС и Т 26 KB
  Бурное развитие туристкой индустрии в последнее десятилетие связано в 2мя факторами: развитием гражданской авиации и созданием компьютерных систем бронирования. В свою очередь увеличение числа авиалиний самолетов а так же рост объемов авиаперевозок закономерно привели к необходимости создания и использования компьютерных систем бронированияCRS которые стали основным инструментом для резервирования авиабилетов. Теперь в системах бронирования заложена информация не только о наличие мест но и общая информация о рейсах.
32470. Технология художественных изделий из керамики 498.54 KB
  Обжиг керамических изделий 3й разряд Сформировать знания о процессе обжига керамических изделий его видах и способах. Назначение и суть обжига керамических изделий. Виды и способы обжига. Объясняет назначение обжига керамических изделий виды и способы обжига правила загрузки и выгрузки изделий устройство обжиговых печей.
32471. Формование керамических изделий и его виды 103.77 KB
  Способы формования керамических изделий Исходя из содержания воды в формовочной массе различают следующие основные способы формовки: способ литья содержание воды 2534; пластический способ воды 1625 это свободная лепка формование на гончарном круге ручной оттиск в форме формование по вращающейся гипсовой форме с помощью шаблона или ролика; полусухой способ 716 влажности; сухой способ 27 влажности. Литье Этот способ широко применяется в производстве художественных керамических изделий что объясняется возможностью...
32472. Ручная роспись керамических изделий, подготовка, инструменты 32.21 KB
  Пером расписывают изделия прошедшие утельный или политой обжиг. Кистью можно наносить на изделия цветные массы ангобы глазурь. Роспись на изделиях можно производить без нанесения предварительного контура и по заранее нанесенному припорохом рисунку. На отводку поступают изделия предварительно оформленные основным декором.
32473. Декорирование изделий в сыром виде 15.92 KB
  Способы нанесения декора на керамический материал Декорирование является важным этапом в общем цикле технологического процесса по изготовлению художественных керамических изделий. Декорирование керамических изделий можно вести как живописным так и скульптурным методом. К живописному относят роспись изделий а также нанесение на них сплошных или частичных декоративных покрытий керамическими красками глазурями ангобами люстрами и эмалями.