Табулирование функций


 

Табулирование функций - построение таблиц функций.

В общем случае задача ставится следующим образом: для значений аргумента, заданных (определенных) на интервале от А (начальное значение аргумента) до В (конечное значение аогумента) с шагом h, надо построить таблицу следующего вида:

А h -шаг B заданный интервал Число шагов = n = число строк таблицы
шапка   тело таблицы
Х

Y
Х1 Y1
Х2 Y2
... ...
Хn Yn

 

{Вывод тела} Создать строку 1 Создать строку 2 ... Создать строку n
Анализ объекта, который надо построить (таблицы), позволяет разбить его на шапку и тело. Поэтому задача по выводу распадается на 2 подзадачи: вывод шапки и вывод тела.

Вывести шапку

Вывести таблицу

Вывести тело

 


WriteLn ('| X | Y |');

WriteLn ('+-------+-------+');

 

В общем случае ширина строк в шапке неизвестна, потому, что она будет зависеть от того, сколько символов вы выберете для представления значения Х и значения Y.

Анализ тела таблицы показывает, что оно имеет т.н. регулярную структуру (см. далее – Массивы), и вывод его на экран можно записать следующим образом:

Создание каждой строки на экране будет состоять из трех шагов:

1. Получить текущее значение x.

2. Вычислить значение функции y = f(x).

3. Вывести значения x и y.

В итого получим следующую последовательность действий для вывода тела:

1шаг {создание 1-ой строки тела}

Х1 = А

Y1 = F(X1);

WriteLn(Х1 и Y1

2шаг {создание 2-ой строки тела}

X2 = X1 + h

Вычислить Y2 = F(X2).

WriteLn( X2 и Y2 можно свернуть в цикл

3шаг {создание 3-ей строки тела}

X3 = X2 + h

Вычислить Y3 = F (X3)

WriteLn(X3 и Y3

Из выше написанного легко заметить, начиная со второго шага (с создания второй строки) замечается повторяемость, что говорит о том, что можно найти обобщенную запись (рекуррентную формулу) для действий, начиная со второй строки. Эта обобщенная запись будет иметь вид:

Xi = Xi-1 + h Вычислить Yi = F (Xi) WriteLn(Xi и Yi)

 

 


То, что не удалось обобщить, нужно включить в подготовку цикла, и ее надо сразу упростить, чтобы включить в цикл (тело цикла) все шаги, начиная с 1-го:

X1 = A X0 + h = A X0 = A - h

X1 = X0 + h упрощенная подготовка цикла

В общем случае, цикл получится следующим:

X0 = A – h;

for i := 1 to n do

begin

точнее n = round((B - A) / h) + 1
Xi = Xi-1 + h

Yi = f(Xi)

WruteLn(Xi и Yi);

end;

В этом фрагменте программы остаются неизвестными 2 момента:

1) чему равняется n?

2) как выводить строку со значением Xi и Yi?

Для вычисления n обычно используется формула: n = (B - A) / h + 1, где h - заданный шаг.

± ЦЦЦ.ЦЦЦЦ
± ЦЦЦ.ЦЦЦЦ
Вывод строк в шапке таблицы можно будет уточнить после того, как определим, как выводится каждая детальная строка в теле таблицы:

Например:

 

9 позиций 9 позиций

 

 

Writeln('| ', x:9:4,' | ', y:9:4,' |'); вывод детальной строки

 

Writeln('| X | Y |); вывод строки шапки

9 позиций 9 позиций

 

В общем случае заранее ширина шапки неизвестна (она определяется тогда, когда станет ясна форма вывода строк тела шапки).


 



Дата добавления: 2016-05-28; просмотров: 2142;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.01 сек.