Error, too many levels of recursion
Error, (in …) too many levels of recursion
|
|
|
||||||||||||||||||||||||||||||||||||||||
I’m trying to plot the graph of a recursive function in Maple 17 but I keep getting the error Error, (in f) too many levels of recursion.
I need to plot a logarithmic graph in the range of x=1,…40.
Here is the code:
with(plots);
f:=x->(2.25*f(x-1)-0.5*f(x-2));
f(1):=1/3;
f(2):=1/12;
logplot(f(x),1..40);
How can I fix this problem? Maybe I need to write it in an iterative form, but I don’t know how.
Thank you very much for any help!
asked Jul 23, 2014 at 20:18
Considering your comment, if you do the following, then you will get a graph very close to the one you got in Matlab.
Digits:= 15:
f:= proc(n)
option remember;
if not n::posint then 'procname'(args)
else 2.25*thisproc(n-1) - 0.5*thisproc(n-2)
end if
end proc:
f(1):= 1/3: f(2):= 1/12:
f_exact:= proc(n)
option remember;
if not n::posint then 'procname'(args)
else 9/4*thisproc(n-1) - 1/2*thisproc(n-2)
end if
end proc:
f_exact(1):= 1/3: f_exact(2):= 1/12:
plots:-logplot([
[seq([x, abs(f(x))], x= 1..40)],
[seq([x,f_exact(x)], x= 1..40)]
]);
answered Jul 24, 2014 at 19:49
Carl LoveCarl Love
1,4618 silver badges7 bronze badges
0
Your function is extremely sensitive to floating-point errors. You must use exact arithmetic in computing the values of f. If you don’t, then you’ll get negative function values, and then using logarithms won’t make sense.
Also, your function is only defined for integer values of n. You have to somehow inform the plot command of that.
f:= proc(n)
option remember;
if not n::posint then 'procname'(args)
else 9/4*thisproc(n-1) - 1/2*thisproc(n-2)
end if
end proc:
f(1):= 1/3: f(2):= 1/12:
plot([seq([x,log10(f(x))], x= 1..40)]);
answered Jul 24, 2014 at 0:36
Carl LoveCarl Love
1,4618 silver badges7 bronze badges
3
- Темы
-
Изображения и видео
-
Цифровая обработка сигналов
-
Верификация и валидация
-
Математика и статистика
-
Биология
-
Системы связи
-
Встраиваемые системы
-
Глубокое и машинное обучение(ИИ)
-
Автоматизация испытаний
-
Робототехника и беспилотники
-
ПЛИС и СнК
-
Радиолокация
-
Системы управления
-
Финансы
-
Электропривод и силовая электроника
-
Другое
Настроить подписки по умолчанию можно
профиле
.
-
Изображения и видео
- Сортировка
-
По дате публикации
-
По кол. комм/отв
-
По рейтингу
-
По просмотрам
-
По дате публикации
- Тип
-
Публикации
-
Вопросы
-
Публикации
- вопрос
- 02.06.2023
Работа со строковыми данными в таблице
В таблице , в одном из столбцев есть нужная переменная, как достать все данные об этой строке отталикиваясь только от этой переменной?
В таблице , в одном из столбцев есть нужная переменная, как достать все данные об этой строке отталикиваясь только от этой переменной?
- вопрос
- 31.05.2023
Работа со строковыми данными в таблице
Добрый день, нужна помощь в работе с таблицей. У меня есть определенный коэф. Kg=2.53, в таблице идет столбец значений Kg, как осуществить поиск и выбор нужного значения, между теми, что идут в таблиц…
Добрый день, нужна помощь в работе с таблицей. У меня есть определенный коэф. Kg=2.53, в таблице идет столбец значений Kg, как осуществить поиск и выбор нужного значения, между теми, что идут в таблиц…
- вопрос
- 28.05.2023
Преобразование Фурье
Здравствуйте, помогите пожалуйста разобраться с преобразованием Фурье. Желательно с объяснением решения (см. вложенный скрин). Заранее всем спасибо!
Здравствуйте, помогите пожалуйста разобраться с преобразованием Фурье. Желательно с объяснением решения (см. вложенный скрин). Заранее всем спасибо!
- вопрос
- 26.05.2023
Облачные вычисления в MatLab
Возможны ли облачные вычисления в среде MatLab, без установки приложения на собственный компьютер? Если » да», то как это сделать?
Возможны ли облачные вычисления в среде MatLab, без установки приложения на собственный компьютер? Если » да», то как это сделать?
- вопрос
- 20.05.2023
Смодилровать устройство электромеханического типа в программе Симулинк
Нужно смоделировать устройство (Блок схемы уже есть) которые изготавливают упругие элементы из проволоки для амортизаторов бортовой радиоэлектронной аппаратуры. Там есть обратная связь ( в виде датчик…
Нужно смоделировать устройство (Блок схемы уже есть) которые изготавливают упругие элементы из проволоки для амортизаторов бортовой радиоэлектронной аппаратуры. Там есть обратная связь ( в виде датчик…
- вопрос
- 20.05.2023
Структурная схема блока Synchronous Machine Round Rotor.
Добрый день! Мне нужна структурная схема (и может быть ее описание) блока Synchronous Machine Round Rotor. Помогите пожалуйста найти источник информации.
Добрый день! Мне нужна структурная схема (и может быть ее описание) блока Synchronous Machine Round Rotor. Помогите пожалуйста найти источник информации.
- вопрос
- 14.05.2023
Моделирование искажений изображения
Необходимо было моделировать возможные искажения изображения, проблемы возникли в моделировании процесса преломления света при прохождении через сферическую поверхность, полученное изображение было в…
Необходимо было моделировать возможные искажения изображения, проблемы возникли в моделировании процесса преломления света при прохождении через сферическую поверхность, полученное изображение было в…
- вопрос
- 02.05.2023
Интегральная чатотно импульсная модуляция
Мне нужно сделать интегральную частотно-импульсную систему автоматического управления теплопотреблением помещения. Я никак не могу разобраться как сделать регулятор ичим
Мне нужно сделать интегральную частотно-импульсную систему автоматического управления теплопотреблением помещения. Я никак не могу разобраться как сделать регулятор ичим
The error message «too many levels of recursion» is sometimes misleading. In the problem below, the error source was an undefined list variable.
This hint may help to find programming errors.
> restart;
> #===============================
> EE := proc(n1,n2)
> #===============================
> global N;
> # create list of nodes N
> if not has(N,n1) then
> N:=[op(N),n1];
> end if;
> if not has(N,n2) then
> N:=[op(N),n2];
> end if;
> end proc:
> #===============================
> EE(a,b); #N is undefined->recursion error?
> N:=[];
> EE(a,b); #N is defined empty->no error
Error, (in EE) too many levels of recursion
N := [ ]
[a, b]
Tags are words are used to describe and categorize your content. Combine multiple words with dashes(-), and seperate tags with spaces.
You have too much recursion because your code assumes n
to be even for the stopping criterion to work. If you call your flops count function with n
equal to 3, it will call the function with argument 3/2
and your recursion will never end. You could replace your function with
flops(n) := (89+1/3)*n^3 + 2 * flops(floor(n/2))
and use the criterion flops(0) := 0
But this will only work if you use numbers, not some arbitrary N
. If you want to solve the recurrence equation, you should use the rsolve
command:
rsolve({flops(n) = (89+1/3)*n^3 + 2 * flops(n/2),flops(1)=0},flops(n));
which will give you $frac{1072}{9}n(n^2-1)$ as an answer to your problem.