Персональная страничка
| ||
Предыдущий раздел:
Следующий раздел:
1) Придумайте рекуррентное соотношение, задающее следующие числовые последовательности:
а) 1, 2, 3, 4, …
б) 0, 5, 10, 15, …
в) 1, 1, 1, 1, …
г) 1, -1, 1, -1, …
д) 1, -2, 3, -4, 5, -6, …
е) 2, 4, 8, 16, …
ж) 2, 4, 16, 256, …
з) 0, 1, 2, 3, 0, 1, 2, 3, 0, …
и) 1!, 3!, 5!, 7!, …
2) Придумайте рекуррентные соотношения для вычисления последовательностей следующего вида:
а)
б)
в)
3) Придумайте рекуррентное соотношение, укажите начальное значение и число шагов, необходимые для вычисления следующих величин:
а)
б)
в)
г)
д)
е)
ж)
з)
и)
к)
4) Составьте рекуррентные соотношения для приведенных ниже величин.
Указание: как видно, данные формулы основаны на повторении одной или нескольких операций. Рекуррентное соотношение должно содержать их однократное выполнение.
а) Золотое сечение
Если вычисления продолжать до бесконечности, то результат сойдется к числу называемому «Золотое сечение» (оно же золотая пропорция, гармоническое деление и число Фидия). Данное число было известно еще до нашей эры (его открытие приписывают Пифагору), а само название было дано Леонардо да Винчи. Считается, что объекты, в которых присутствуют пропорции, равные этому числу, воспринимаются как красивые.
б) | |
в) |
Следующий раздел:
Предыдущий раздел:
2) реккурентное соотношение x5+1 = x5 +5 ?
Кажется, ты правильно все понимаешь. Правильно написать это можно, например, так: x(n+1) = x(n) + 5
А какой ответ должен получаться в 4в?
Ответы я предпочитаю не давать. Если у вас уже есть вариант, могу подтвердить или опровергнуть его правильность.
Ну получилось 10.4069918… Похоже на правду, нет?
У меня 2.15847687231104… получается. А рекуррентное соотношение какое?
Всё, совпало, я наоборот сделал, от 98 до 2, теперь такой же ответ, спасибо.
Программу оформил вот так, можно как-то проще или лучше?
Блин, все пробелы в начале строк съело.
Нет, проще, думаю, уже нельзя. Только readln в начале не очень понятно зачем.
О, я думал оно так не будет работать. Спасибо большое.
Начальное значение x нужно задать, но можно было написать просто
В принципе x в начале и так равен 0, но задать его явно это требование хорошего стиля.
То есть если не присваивать переменной никакого значения, то она автоматически будет равна нулю, так? Хороший стиль — это хорошо, учту.
Да, так. Но:
1) Позже в разделе «11. Процедуры и функции» появятся локальные переменные, для которых это не верно.
2) Это верно для PascalABC. Но в других языках это часто бывает не так.
3) Типична ситуация, когда решая сложную задачу, программист выделяет в ней простые подзадачи, решает их, а потом из получившихся кусков собирает решение всей задачи. И вот он протестировал каждый из кусков — все работает. Собрал вместе — хрен. А потому что во время тестирования какая-то переменная была равна 0, а когда этот кусок вставили в середину программы, она уже не 0.
В общем, полагаться на ноль по умолчанию — не хорошо.
Спасибо большое, всё доступно объяснили, буду помнить.
Здравствуйте. Не могли бы вы написать как найти рек куренные соотношения к заданию 4 а и 4б
Попробуйте выделить повторяющиеся действия. Они и должны присутствовать в рекуррентном соотношении. Еще можно обратить внимание на подобие — если часть выражения подобна целому, то можно взять ее за и подумать как вычислить по ней целое выражение .
Вы не могли бы написать какое именно будет рекуррентное соотношения. Так как у меня сложнее задание и мне надо по подобию составить. Саму суть понимаю, но именно дробь не получается
К сожалению, не могу. Моя принципиальная позиция — не давать ответов. Я считаю, что для обучающегося это как минимум бесполезно.
Тарас Викторович, допускается ли использование условных операторов? К примеру 1)-з?
Вообще-то все задачи здесь можно решить без условных операторов. Если можешь решить 1з с помощью if’а — это хорошо. Но стоит подумать как это сделать без него.
Во 2 задании первоначальное значение равно «1». Можно ведь не составлять функцию, где первое значение «1», а просто написать вначале writeln(‘1’)?
Ну, да, пример такой… курьезный что ли. Толку от подобной последовательности, понятно, немного. Но для общего развития полезно прикинуть, какие рекуррентные соотношения могут порождать такую последовательность.
В задании 3-к возможно вычисление нечетных факториалов введением условия
if i mod 2=0 then
continue;
но факториал будет вычисляться не полностью. К примеру (5!=1*3*5, а не 5!=1*2*3*4*5). Если есть другой способ вычисления нечетных факториалов, подскажите, пожалуйста.
Я думаю, что поднапрягшись, ты сам догадаешься, как добиться нужного результата. В общем, я в тебя верю!
Тарас,подскажите,теориетически — все понятно, а в практике-сложнее, как в ступоре каком то, пока разогреюсь, подумаю..
первая задача «а» этой темы,верно я мыслю или все таки нет,этого от меня хотят?
var
i: integer;
begin
for i := 1 to 20 do
writeln(i);
end.
1) Придумайте рекуррентное соотношение, задающее следующие числовые последовательности:
б) 0, 5, 10, 15, …
var
x,i,y:integer;
begin
writeln(0);
for i:= 1 to 30 do begin
x := x+1;
if x mod 5=0 then
writeln( x );
end;
end.
правильно или нет?
задание 1е не могу выполнить(
var
x,y:real;
i:integer;
begin
for i:= 2 to 20 do begin
y := (1+(i-1)*(i-1)/(i-1));
x := (y+1);
x:= (((x+y)*2)-6)*2;
writeln ( x );
end;
end.
2 и 4 не использует и все, понимаю,что код составил не так,но что не так,не понимаю.
Я, наверное что-то не понял. Но для получения ряда в задании 1е у меня вышел такой код:
var
z,x,y:integer;
begin
writeln(‘введите y ‘);
readln(y);
z:=1;
for x:=1 to y do
begin
z:=2*z;
writeln(z);
end;
end.
4_в писали, что проще нельзя, а мне кажется, что так еще проще:
program chetvertaja_v;
var
i:integer;
p:real;
begin
p:=sqrt(98);
for i:= 48 downto 1 do
p:=sqrt(p+(2*i));
writeln (p);
end.
Ответ: 2.15847687231104
Роман, у меня 1_е похоже, но, можно вывести через запятую, чтоб совсем идеально:
program pervaja_e;
var
x,i,n: integer;
begin
writeln(‘введите количество чисел ряда, которые нужно вывести’);
readln(x);
n:=1;
for i:= 1 to x do
begin
n:=n*2;
write (n,’, ‘);
end;
end.
Роман, в условии нужно придумать рекуррентное соотношение.
1_е будет так:
program pervaja_e;
var
x,i: integer;
n: real;
function f(m:integer): real;
begin
f:=exp(ln(2)*m);
end;
begin
n:=0;
for i:= 1 to 4 do
begin
n:=f(i);
write (n,’, ‘);
end;
write (‘…’);
end.
2_б еще таким соотношением вывести можно:
program pervaja_b;
var
x, i, n: integer;
function f(m:integer): integer;
begin
f:=m*5;
end;
begin
writeln(‘введите количество чисел ряда, которые нужно вывести’);
readln(x);
n:=0;
for i:= 0 to x-1 do
begin
n:=f(i);
write (n,’, ‘);
end;
write (‘…’);
end.
4 а, б, в — решила без реккурентного соотношения, например:
program chetvertaja_a;
var
i:integer;
p:real;
begin
p:=0;
for i:= 1 to 100 do
p:=1+1/p;
writeln (p);
end.
Ответ: Золотое сечение = 1.618…
Или так и надо было?
p:=1+1/p; — значение p на каждом шаге определяется по его предыдущему значению. Это и есть рекуррентное соотношение.