Hi everyone. I have a simple doubt about whether is possible to have an index number inside a function in a for loop. The ilustrative example below makes my doubt clearer.
I have an affine function f(x) = 2x - a and I want to find the root for distinct values of a. In this case, is it possible to use the fzero function inside a loop?
I understand why the error occurs but I do not know how to fix it. I have a similar code in Fortran and I am trying to convert it to Julia.
Thanks a lot!
a = [1 3 5]
function main(x)
2*x - a[i]
end # function
guess = 5
for i in 1:3
y = fzero(main, guess)
println(y)
end # for
UndefVarError: j not defined
If I understand your problem correctly (please submit fully reproducible code to make it easier for us!), a common way to deal with it in Julia is to have the method take the index, and then bind the index to the function to create a single-parameter function:
a = [1 3 5]
function main(x, i)
2*x - a[i]
end
guess = 5
for i in 1:3
y = fzero(x -> main(x,i), guess)
println(y)
end
I think it’d actually be the same, since the indexing would still take place for each function call. You’d have to move it outside the function for the speedup to occur:
for i in 1:3
b = a[i]
y = fzero(x -> main(x,b), guess)
println(y)
end