I can't write recursive function in Matlab (Please help me)

I tried many times but couldn't write a recursive function in Matlab. I don't know how to do it. My friends, I would be glad if someone could help me.

12 comentarios

I wrote simply code blog, i want to recursive function of it. I want to like this: function [itr] = newton(x,tol)
Rik
Rik el 23 de Oct. de 2020
Do you explicitly want a recursive function, or do you just want to implement this algorithm?
User will enter values of x and tol. I will call function. After i will enter x and tol. Simply, i will enter f(x) and tolerance. These are my inputs. My output is number of iteration. If iteration < tolerance, take output. For example, i called function newton(x,tol). after, i entered values randomly. such as newton(1.8,0.01). My output will be 3. Because 3.iterations is < tolerance. To sum up, I already sent my code blog of newton raphson, so you can see above. I need recursive function of this.
How can I do it? If someone is help me, i will be very happy.
At the very least you will have to start your newton.m file with the line
function itr=newton(x,tol)
Then the rest of you code can calculate the number of iterations needed. It doesn't sound like you need a recursive function. The loop you have there should work.
Sir, I need recursive function. For example, i have a question like this. I should call recursive function.
You know recursive function should contain your function. You do not use while loop.
Rik
Rik el 24 de Oct. de 2020
I don't speak the language in this screenshot, but I don't see any indication that the only way to solve this is recursion. I see no indication that a while loop wouldn't work. You're free to implement it any way you like. What is your question?
I'm a master student in computer engineering. This is my homework. I agree with you. But i need do with recursive function.
Rik
Rik el 24 de Oct. de 2020
Then implement it as a recursive function. What is your question?
function [itr] = newton(x,tol) how can we apply this according to the above question. Maybe we can use ifelse instead while.
function [itr] = newton(x,tol)
x=0;
tol=0;
if hata>tol.......
I don't know how to adapt it.
Rik
Rik el 24 de Oct. de 2020
Just because you aren't getting the help you were hoping for dosn't make this question not appropriate, so I removed your flag.

Iniciar sesión para comentar.

Respuestas (1)

Rik
Rik el 24 de Oct. de 2020
In case you just want to know how to create a recursive function at all:
function n=I_call_myself(n)
disp(n)
if n>0
n=I_call_myself(n-1);
else
disp('n has reached 0')
end
end

8 comentarios

Sir, I know principles of recursive function. How do we define my function? I don't understand it.
Rik
Rik el 24 de Oct. de 2020
I have no clue how you should force this algorithm in a recursive function that makes any sense. This seems the perfect place for a while loop. The point is that in a recursive function you have the function call itself. At some point that recursion should stop, in your can when hata<tol.
Rooter Boy
Rooter Boy el 24 de Oct. de 2020
Editada: Rooter Boy el 24 de Oct. de 2020
I tried write but result is false. output should be 3 for solution. I don't know how to call. Firstly i define function but i can't.
function [itr] = newton(x,tol)
hata=tol+1;
n=1;
itr=0;
if hata>tol
x(n+1)=0.2*(4*x(n)+(32/power(x(n),4)));
hata=abs(x(n+1)-x(n));
n=n+1;
itr=itr+1;
disp('itr');
end
You need to use while instead of if. For readability I would also suggest you include the closing end for you function.
function [itr] = newton(x,tol)
hata=tol+1;
n=1;
itr=0;
while hata>tol
x(n+1)=0.2*(4*x(n)+(32/power(x(n),4)));
hata=abs(x(n+1)-x(n));
n=n+1;
itr=itr+1;
end
disp(itr);
end
If you want to make it recursive you should probably have two outputs of your function, or use the length of x to define itr and n:
%untested code:
function [itr,x] = newton(x,tol)
hata=tol+1;
n=numel(x);
itr=n-1;
x(n+1)=0.2*(4*x(n)+(32/power(x(n),4)));
hata=abs(x(n+1)-x(n));
if hata>tol
[itr,x] = newton(x,tol);
return
end
disp(itr);
end
code didn't work.
Error in newtont (line 9)
[itr,x] = newton(x,tol);
Rik
Rik el 24 de Oct. de 2020
What was the error? You need to provide the full error message. If you don't, we can only give you this advice: change the code.
Sir, I found solutions myself. This is advanced level coding. I want to delete these questions. If you help me about this topic, i will be happy.
Thanks for everything by the way.
Rik
Rik el 24 de Oct. de 2020
Sorry, once you receive an answer it is considered rude to delete it, so the system will not allow you to do that. People with a similar question might find the posts here helpful.

Iniciar sesión para comentar.

Categorías

Más información sobre Programming en Centro de ayuda y File Exchange.

Preguntada:

el 23 de Oct. de 2020

Comentada:

el 24 de Oct. de 2020

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by