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

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


 

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

39341. Проектирование общественное здание 299 KB
  Для каркасно-панельных зданий применяют эффективные конструкции – сборные крупные панели, объемные блоки, каркасный монолит с применением высокопрочного и легкого бетона и других экономичных материалов, обеспечивающих высокую степень заводской готовности, которые снижают материалоемкость, стоимость производства, увеличивают комфортабельность, долговечность зданий и снижают эксплутационные расходы.
39342. Проектирование микропроцессорной системы на основе микроконтроллера 1886ВЕ2 127 KB
  Разработка технического проекта Основу структурной схемы микроконтроллера образует внутренняя двунаправленная 8битная шина которая связывает между собой все основные узлы и устройства: резидентную память АЛУ блок регистров специальных функций устройство управления и порты ввода вывода. 8битное АЛУ может выполнять арифметические операции сложения вычитания умножения и деления; логические операции И ИЛИ исключающее ИЛИ а также операции циклического сдвига сброса инвертирования и т. Простейшие операции автоматически образуют...
39343. Социальные явления, отношения, поведение и деятельность людей в социальной сфере 52.12 KB
  Для достижения целей курсовой работы были поставлены задачи: Проанализировать сущность и характерные черты менеджмента Изучить понятие и значение организации Изучить составные части управления в социальной сфере Глава 1.13]Социальный менеджмент это область управления формирующая у будущих специалистов теоретические и практические навыки позволяющие эффективно воздействовать на социальные процессы влиять на создание благоприятной для человека социальной среды проектировать социальные организации что в свою очередь обеспечивает...
39344. СИНТЕЗ КОМБІНАЦІЙНОЇ СХЕМИ. СХЕМОТЕХНІКА ПРИСТРОЇВ НА ОПЕРАЦІЙНИХ ПІДСИЛЮВАЧАХ 71.35 KB
  ОУ майже завжди використовуються в схемах з глибокої негативним зворотним звязком яка завдяки високому коефіцієнту підсилення ОУ повністю визначає коефіцієнт передачі отриманої схеми.2 Активний алгебраїчний суматор Мікросхеми суматорів призначені для підсумовування двох вхідних двійкових кодів.3 Розробка схеми розрахунки параметрів та аналіз На базі схеми з багатопельовим ЗЗ схема Рауха синтезувати схему фільтра верхніх частот належним вибором двополюсників.1 – схема Рауха Складемо граф схеми Рауха.
39345. Правонарушение и юридическая ответственность 51.28 KB
  Материальная ответственность это вид юридической ответственности состоящий в обязанности одной из сторон трудового договора контракта возместить в соответствии с законодательством материальный ущерб причиненный другой стороне этого договора. Совокупность этих условий называется содержанием договора. Условия договора делятся на три группы: обычные случайные и существенные. Обычные условия – это условия которые на практике включаются в содержание данного договора однако их отсутствие не влияет на его действительность.
39346. Расчет электронного логического автомата 6.39 MB
  Логический автомат – это устройство автоматически выполняющее некоторые функции для задания которых используется аппарат алгебры логики. Функции комбинационной схемы управления КСУ: В двоичном коде функции КСУ представлены в табл. Функции КСУ в двоичном коде Число
39347. Проектирование статического регулятора с промежуточным усилителем и последовательным корректирующим устройством 3.29 MB
  Составление функциональной схемы замкнутой САУ Рис. Обобщенная функциональная схема САУ работающей по отклонению. Принцип управления по отклонению используется в замкнутых САУ и реализуется с помощью отрицательной обратной связи по регулируемой величине. Обобщенная функциональная схема САУ работающего по отклонению представлена на следующем рисунке: На этом рисунке: З – задатчик; P – регулятор; О – объект управления; элемент сравнения сумматор; задание; регулируемая величина; отклонение или ошибка управления; управляющее...
39348. Разработка цифрового логического устройства 4.16 MB
  Структурная схема логического автомата для управления роботом: БУиП блок управления и питания; АС автомат состояний; СИ схема индикации; КСУ комбинационная схема управления; УГ управляющий генератор; ИУ исполнительное устройство; ОУ объект управления; ЛА логический автомат. Минимизация по €œ1€ Минимизация по €œ0€ Рисунок 1.4 Рисунок 1. Рисунок 1.
39349. Измерение результатов национальной экономики 86.5 KB
  Модель кругооборота ресурсов, продукта и доходов в макроэкономике позволяет понять основы современной системы измерения результатов национальной экономики, получившей название система национальных счетов (СНС).