|
Программируем по-русски
|
Основная задача Глагола — дать человеку возможность воплощать свои мысли на языке, близком к его родному языку. Издатель Глагола
|
(******************************************************************************) (**) ОТДЕЛ ПроМатем1+; (****************************************************************************** * НАЗНАЧЕНИЕ: проверка точности вычислений трансцендентных функций * * ПРИМЕЧАНИЯ: * Для каждого типа функции выбирается 20 случайных возрастающих * значений аргумента. Далее для каждого значения вычисляется прямая функция, * а к результатам применяется обратная функция. Потом вычисляется * относительная ошибка результатов и первоначальных значений аргумента. ******************************************************************************) ИСПОЛЬЗУЕТ Матем ИЗ "...\Отделы\Числа\", Вывод ИЗ "...\Отделы\Обмен\"; ПОСТ АРГУМЕНТОВ = 20; (* число аргументов *) ВИД Вещ = Матем.Вещ; Функция = ЗАДАЧА(x:Вещ):Вещ; Вектор = РЯД АРГУМЕНТОВ+1 ИЗ Вещ; (******************************************************************************) ЗАДАЧА СлучАрг(x+:Вектор; от,до:Вещ); (* Заполняет вектор аргументов случайными числами от <от> до <до>, * округляет до 4-го знака после запятой и располагает в возрастающем порядке.*) ПЕР i,j,k:ЦЕЛ; a:Вещ; УКАЗ ОТ i:=1 ДО АРГУМЕНТОВ ВЫП a:=(до-от)*Матем.случ() + от; ЕСЛИ МОДУЛЬ(a) < 1.D-4 ТО a:=Матем.знак(a)*1.D-4 КОН; x[i]:=ВШИРЦЕЛ(10000*a)/10000; КОН; (* Сортировка вставками *) ОТ i:=1 ДО АРГУМЕНТОВ-1 ВЫП k:=i; a:=x[i]; ОТ j:=i+1 ДО АРГУМЕНТОВ ВЫП ЕСЛИ x[j] < a ТО k:=j; a:=x[j] КОН КОН; Матем.обмен(x[i],x[k]) КОН КОН СлучАрг; (******************************************************************************) ЗАДАЧА Оборот(прямИмя-,обрИмя-:ЦЕПЬ; прямФ,обрФ:Функция; от,до:Вещ); ПЕР i:ЦЕЛ; x0:Вектор; y,x1,оо:Вещ; УКАЗ Вывод.Цепь('^x0, y='); Вывод.Цепь(прямИмя); Вывод.Цепь('(x0), x1='); Вывод.Цепь(обрИмя); Вывод.Цепь('(y), относ.ошибка^'); СлучАрг(x0,от,до); ОТ i:=1 ДО АРГУМЕНТОВ ВЫП y:=прямФ(x0[i]); x1:=обрФ(y); оо:=(x0[i]-x1)/x0[i]; Вывод.ЧВещ('%8.4f %23e %23e %15.4e^',x0[i],y,x1,оо) КОН КОН Оборот; УКАЗ Оборот('exp' ,'ln' ,Матем.exp ,Матем.ln ,-10,10); Оборот('exp10','log10' ,Матем.exp10,Матем.log10 , -5, 5); Оборот('exp2' ,'log2' ,Матем.exp2 ,Матем.log2 ,-15,15); Оборот('sin' ,'arcsin',Матем.sin ,Матем.arcsin,-Матем.ПИ/2,Матем.ПИ/2); Оборот('cos' ,'arccos',Матем.cos ,Матем.arccos, 0,Матем.ПИ); Оборот('tg' ,'tg' ,Матем.tg ,Матем.arctg ,-Матем.ПИ/2,Матем.ПИ/2); Оборот('sh' ,'sh' ,Матем.sh ,Матем.Arsh , 0, 5); Оборот('ch' ,'ch' ,Матем.ch ,Матем.Arch , 0, 5); Оборот('th' ,'th' ,Матем.th ,Матем.Arth , -5, 5); КОН ПроМатем1. ▲ Вопросы, замечания и предложения высылайте на atimopheyev@yahoo.com или Издателю Глагола:
|
|