using a function to answer new questions

2 views (last 30 days)
jacob Mitch
jacob Mitch on 1 Oct 2019
Commented: jacob Mitch on 1 Oct 2019
I have created
function y=Gss(n);
a=3; b=0.2; N(1)=0.2;
for v=2:n+1
N(v)=exp(-a*N(v-1)^2)+b;
end
y=N(v);
How would I use this code to calculate something like
if abs(N(v-1)-N(v))<5
answer=v
else v=v+1 'till you get the desired v'
end
Do I create another script and call Gss(n) or how would I write it in the first function file. I think I would have to use a loop for the second code

Accepted Answer

David Hill
David Hill on 1 Oct 2019
function [N,answer] = Gss(n);
N=zeros(1,n+1);
answer=0;
a=3; b=0.2; N(1)=0.2;
for v=2:n+1
N(v)=exp(-a*N(v-1)^2)+b;
if abs(N(v-1)-N(v))<5
answer=v;
end
end
end
Or you could just wait to get array N back and then:
function N = Gss(n);
N=zeros(1,n+1);
a=3; b=0.2; N(1)=0.2;
for v=2:n+1
N(v)=exp(-a*N(v-1)^2)+b;
end
end
%once array N comes back
answer=find(abs(diff(N))<5)+1;%this provides multiple answers if multiple differences are <5
  1 Comment
jacob Mitch
jacob Mitch on 1 Oct 2019
Hi Thanks David this really allows me to understand well, I just wanted to ask am I able to retain the first y=N(v) that I get from inputing n into Gss(n) value say answer1 and then proceed to calculate the second part as the smallest v such that abs(N(v) -N(v-1))<5 say answer2 whilst outputing each value of N(v) in the iteration.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!

Translated by