Определить k, при котором y становится больше a

На Паскале очень часто рассчитывают значения по формулам. Также решаются задачи по нахождению приближённого значения, с использованием некоторого параметра, который задаёт границу поиска. Если заранее неизвестно, сколько будет выполняться цикл, то это называется итерацией. Наша предлагаемая задача решается именно методом итерации.


задача на паскаль на итерацию

Условие задачи



Дана формула y=xk/k при k=1,2,…. Определить k, при котором y становится больше a.



Пояснение к программе


Сперва мы должны ввести в программу значения двух параметров. Значение а будет задавать границу поиска.


Мы не знаем, когда закончится цикл, поэтому цикл с параметром здесь нельзя использовать. Будем применять цикл с предусловием while.


Ещё одним хитрым заданием в этой программе является нахождение числа возводимого в степень k. Встроенная функция в Паскале почему-то отсутствует (а может и специально).


Поэтому всем программистам, пишущим на Паскале, приходится идти на следующее ухищрение:


exp(k*LN(x))


, данная запись эквивалентна математическому возведению числа в степень xk.


Как вы понимаете, тип для этих данных нужно изначально задавать вещественный, потому что вычисления приближённые, так как используется натуральный логарифм.


Суть кода следующая:


Сперва мы вводим данные: x,y,k
Затем запускам цикл while и проверяем больше ли переменная a, чем y.
Если это так, то увеличиваем переменную k на единицу. Изначально, k=0.
Затем производим вычисление по формуле exp(k*LN(x))/k
После этого, вновь возвращаемся к проверке.


Код программы


Program iter1;

Var
a,x,y:real;
k:integer;
begin
write(введите x=);
readln(x);
write(введите y=);
readln(a);
k:=0;
while y<a do
begin
k:=k+1;
y:=exp(k*LN(x))/k;
end;
write(k=, k);
end.

Перевод числа из десятичной системы в двоичную