|
Программируем по-русски
|
Основная задача Глагола — дать человеку возможность воплощать свои мысли на языке, близком к его родному языку. Издатель Глагола
|
(******************************************************************************) (**) ОТДЕЛ ПроФункц+; (****************************************************************************** * НАЗНАЧЕНИЕ: проверка точности вычислений специальных функций * * ПРИМЕЧАНИЯ: * Вычисленные значения сравниваются с табличными значениями из * файла 'ПроФункц.дан'. ******************************************************************************) ИСПОЛЬЗУЕТ Матем ИЗ "...\Отделы\Числа\", Функц ИЗ "...\Отделы\Числа\", Читать ИЗ "...\Отделы\Обмен\", Вывод ИЗ "...\Отделы\Обмен\"; ВИД Вещ = Матем.Вещ; (******************************************************************************) ЗАДАЧА Значений(метка-:ЦЕПЬ; п+:Читать.Поток):ЦЕЛ; (* Цель: 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 или Издателю Глагола:
|
|