Search All of the Math Forum:
Views expressed in these public forums are not endorsed by
NCTM or The Math Forum.



Re: code problem
Posted:
Jun 19, 2012 8:11 PM


TideMan <mulgor@gmail.com> wrote in message <00ccb4936074456d90373cd77de9ad5e@googlegroups.com>... > On Wednesday, June 20, 2012 11:22:08 AM UTC+12, Jonathan wrote: > > Hi, > > I'm trying to solve a simple function iteratively. My code is as follows... > > d2=3; > > z=0.0192; > > newvar=zeros(1,1552); > > for n = 1:.1:156 > > newvar(n) = (d2./n).*tanh((2*pi*d2)./n); > > end > > > > The first issue is that Matlab objects to this and gives me the message "Attempted to access newvar(1.1); index must be a positive integer or logical." > > > > Ultimately, what I'm trying to find is the n value that equals the solution to the equation, which is indicated by z. I was planning to do this by using find, once I have run the loop. > > > > What am I doing wrong? > > > > Thanks > > Jon > > First of all, you cannot proclaim that you are not solving it iteratively. > You are solving it by preparing a lookup table. > Secondly, as the error message has told you, you are using a floating point number as an index  you can't do that. > Here's one way to do it without a loop: > L=[1:0.1:156]; % I'm guessing L is wave length > newvar = (d2./L).*tanh((2*pi*d2)./L); > > Now, you cannot use find, but you can use min: > [dum,imn]=min(abs(newvarz)); > and your solution is L(imn)
Thanks Tideman. Very simple! Appreciate the help.



