Проба мат.Функций
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы
 
 glagol.png Программируем по-русски
 

Основная задача Глагола — дать человеку возможность воплощать свои мысли на языке, близком к его родному языку.

Издатель Глагола
 

 
(******************************************************************************)
(**)                        ОТДЕЛ ПроФункц+;
(******************************************************************************
 * НАЗНАЧЕНИЕ: проверка точности вычислений специальных функций                   
 *
 * ПРИМЕЧАНИЯ: 
 *   Вычисленные значения сравниваются с табличными значениями из 
 *   файла 'ПроФункц.дан'.
 ******************************************************************************)
ИСПОЛЬЗУЕТ
  Матем  ИЗ "...\Отделы\Числа\",
  Функц  ИЗ "...\Отделы\Числа\",
  Читать ИЗ "...\Отделы\Обмен\",
  Вывод  ИЗ "...\Отделы\Обмен\";

ВИД
  Вещ = Матем.Вещ;

(******************************************************************************)
ЗАДАЧА Значений(метка-:ЦЕПЬ; п+:Читать.Поток):ЦЕЛ;
(* Цель:  1) открыть поток, содержащий проверочные данные
 *        2) найти в нём данные для заданной функции
 *        3) прочитать число проверочных значений этой функции
 * До:    <метка> - строка-метка с названием функции
 * После: <п>     - поток, открытый и установленный в начало данных
 *                  для этой функции
 * Ответ: число проверочных значений этой функции *)
ПЕР
  строка:ЦЕПЬ[100];
  значений:ЦЕЛ;
УКАЗ
  п:=Читать.Открыть('ПроФункц.дан');
  ЕСЛИ п = ПУСТО ТО
    Вывод.Цепь('^Файл "ПроФункц.дан" не найден.^');
    СТОП(1) 
  КОН;
  п.видЗнаков:=Читать.знУни;
  ПОКА НЕ Читать.Конец(п) ВЫП
    Читать.Строка(п,строка);
    ЕСЛИ строка = метка ТО
      значений:=Читать.Цел(п);
      Читать.ПропуститьСтроку(п);
      ВОЗВРАТ значений
    КОН
  КОН;
  Вывод.Цепь('^В файле "ПроФункц.дан" не найдена метка: "');
  Вывод.Цепь(метка);
  Вывод.Цепь('".^');
  СТОП(1) 
КОН Значений;
 
(******************************************************************************)
ЗАДАЧА Факториал;
ПЕР
  п:Читать.Поток; (* поток, содержащий проверочные данные *)
  i,n:ЦЕЛ;        (* счётчик значений и значений всего    *)
  F,Ft,оо:Вещ;    (* вычисленная функция, её таблич.значение и относ.ошибка *)
  x:Вещ;          (* аргумент функции *)
УКАЗ
  n:=Значений('Факториал',п);
  Вывод.Цепь('^x, Факториал(x), Таблица(x), относ.ошибка^');
  ОТ i:=1 ДО n ВЫП
    x:=Читать.ШирВещ(п);
    Ft:=Читать.ШирВещ(п);
    F:=Функц.Факториал(x);
    оо:=(F-Ft)/Ft;
    Вывод.ЧВещ('%8.4f %23e %23e %9.1e^',x,F,Ft,оо)
  КОН;
  Читать.Закрыть(п)
КОН Факториал;

(******************************************************************************)
ЗАДАЧА БиномКоэф;
ПЕР
  п:Читать.Поток;
  i,n:ЦЕЛ; F,Ft,оо:Вещ;
  m,k:Вещ;
УКАЗ
  n:=Значений('Биномиальные коэффициенты',п);
  Вывод.Цепь('^m, k, БиномКоэф(m,k), Таблица(m,k), относ.ошибка^');
  ОТ i:=1 ДО n ВЫП
    m:=Читать.ШирВещ(п);
    k:=Читать.ШирВещ(п);
    Ft:=Читать.ШирВещ(п);
    F:=Функц.БиномКоэф(m,k);
    оо:=(F-Ft)/Ft;
    Вывод.ЧВещ('%5d %5d %10f %10f',m,k,F,Ft);
    Вывод.ЧВещ('%9.1e^',оо,0,0,0)
  КОН;
  Читать.Закрыть(п)
КОН БиномКоэф;

(******************************************************************************)
ЗАДАЧА Г;
ПЕР
  п:Читать.Поток;
  i,n:ЦЕЛ; F,Ft,оо:Вещ;
  x:Вещ;
УКАЗ
  n:=Значений('Г функция',п);
  Вывод.Цепь('^x, Г(x), Таблица(x), относ.ошибка^');
  ОТ i:=1 ДО n ВЫП
    x:=Читать.ШирВещ(п);
    Ft:=Читать.ШирВещ(п);
    F:=Функц.Г(x);
    оо:=(F-Ft)/Ft;
    Вывод.ЧВещ('%8.4f %23e %23e %9.1e^',x,F,Ft,оо)
  КОН;
  Читать.Закрыть(п)
КОН Г;

(******************************************************************************)
ЗАДАЧА НепГ;
ПЕР
  п:Читать.Поток;
  i,n:ЦЕЛ; F,Ft,оо:Вещ;
  a,x:Вещ;
УКАЗ
  n:=Значений('Неполная Г функция',п);
  Вывод.Цепь('^a, x, НепГ(a,x), Таблица(a,x), относ.ошибка^');
  ОТ i:=1 ДО n ВЫП
    a:=Читать.ШирВещ(п);
    x:=Читать.ШирВещ(п);
    Ft:=Читать.ШирВещ(п);
    F:=Функц.НепГ(a,x);
    оо:=(F-Ft)/Ft;
    Вывод.ЧВещ('%5f %15.4e %23e %23e ',a,x,F,Ft);
    Вывод.ЧВещ('%9.1e^',оо,0,0,0)
  КОН;
  Читать.Закрыть(п)
КОН НепГ;

(******************************************************************************)
ЗАДАЧА Бета;
ПЕР
  п:Читать.Поток;
  i,n:ЦЕЛ; F,Ft,оо:Вещ;
  x,y:Вещ;
УКАЗ
  n:=Значений('Бета функция',п);
  Вывод.Цепь('^x, y, Бета(x,y), Таблица(x,y), относ.ошибка^');
  ОТ i:=1 ДО n ВЫП
    x:=Читать.ШирВещ(п);
    y:=Читать.ШирВещ(п);
    Ft:=Читать.ШирВещ(п);
    F:=Функц.Бета(x,y);
    оо:=(F-Ft)/Ft;
    Вывод.ЧВещ('%5f %5f %23e %23e ',x,y,F,Ft);
    Вывод.ЧВещ('%9.1e^',оо,0,0,0)
  КОН;
  Читать.Закрыть(п)
КОН Бета;

(******************************************************************************)
ЗАДАЧА НепБета;
ПЕР
  п:Читать.Поток;
  i,n:ЦЕЛ; F,Ft,оо:Вещ;
  a,b,x:Вещ;
УКАЗ
  n:=Значений('Неполная Бета функция',п);
  Вывод.Цепь('^a, b, x, НепБета(a,b,x), Таблица(a,b,x), относ.ошибка^');
  ОТ i:=1 ДО n ВЫП
    a:=Читать.ШирВещ(п);
    b:=Читать.ШирВещ(п);
    x:=Читать.ШирВещ(п);
    Ft:=Читать.ШирВещ(п);
    F:=Функц.НепБета(a,b,x);
    оо:=(F-Ft)/Ft;
    Вывод.ЧВещ('%5f %5f %5f %23e ',a,b,x,F);
    Вывод.ЧВещ('%23e %9.1e^',Ft,оо,0,0)
  КОН;
  Читать.Закрыть(п)
КОН НепБета;

(******************************************************************************)
ЗАДАЧА erf;
ПЕР
  п:Читать.Поток; i,n:ЦЕЛ; F,Ft,оо:Вещ;
  x:Вещ;
УКАЗ
  n:=Значений('erf функция',п);
  Вывод.Цепь('^x, erf(x), Таблица(x), относ.ошибка^');
  ОТ i:=1 ДО n ВЫП
    x:=Читать.ШирВещ(п);
    Ft:=Читать.ШирВещ(п);
    F:=Функц.erf(x);
    оо:=(F-Ft)/Ft;
    Вывод.ЧВещ('%8.4f %23e %23e %9.1e^',x,F,Ft,оо)
  КОН;
  Читать.Закрыть(п)
КОН erf;

(******************************************************************************)
УКАЗ
  Факториал;
  БиномКоэф;
  Г; НепГ;
  Бета; НепБета;
  erf
КОН ПроФункц.




Вопросы, замечания и предложения высылайте на atimopheyev@yahoo.com или Издателю Глагола:
 email
 
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы