Табулирование функций
Табулирование функций - построение таблиц функций.
В общем случае задача ставится следующим образом: для значений аргумента, заданных (определенных) на интервале от А (начальное значение аргумента) до В (конечное значение аогумента) с шагом h, надо построить таблицу следующего вида:
| Y | ||
Х1 | Y1 | ||
Х2 | Y2 | ||
... | ... | ||
Хn | Yn |
{Вывод тела} Создать строку 1 Создать строку 2 ... Создать строку n |
Вывести шапку
Вывести таблицу
Вывести тело
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 |
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;