Singular Exceptions on Windows OS

When I use LsqFit to loop some curve fitting, I come across some singular exceptions. Anyone could give me some guidance on this problem. My os is window 32. Thank you.

func(x, p) = 1 ./ (p[1]+p[2] * exp.(-p[3] * x ))
println(F_averaged_vi)
println(F_VarY)

# averaged_vi: [-3.15, -2.25, -1.95, -1.65, -1.35, -1.05, -0.75, -0.45, -0.15, 0.15, 0.45, 0.75, 1.05, 1.35, 1.65, 1.95, 2.55]
#F_VarY [0.1, 0.65, 0.88, 0.883333, 1.94286, 1.28, 0.766667, 1.36071, 1.65405, 2.425, 3.23333, 3.80286, 6.23333, 8.1375, 21.9, 1.3, 24.6]

p0 = [0.01, 0.5, 0.5]
fit = LsqFit.curve_fit(func, F_averaged_vi, F_VarY, p0, lower = [0.005,realmin(Float64),realmin(Float64)],
upper = [0.05,typemax(Float64),typemax(Float64)],maxIter=1000)

Result:
Base.LinAlg.SingularException(3)

Stacktrace:
 [1] A_ldiv_B! at .\linalg\lu.jl:238 [inlined]
 [2] \(::Base.LinAlg.LU{Float64,Array{Float64,2}}, ::Array{Float64,1}) at .\linalg\factorization.jl:48
 [3] \(::Array{Float64,2}, ::Array{Float64,1}) at .\linalg\generic.jl:832
 [4] macro expansion at C:\Users\wangfeng\.julia\v0.6\LsqFit\src\levenberg_marquardt.jl:111 [inlined]
 [5] macro expansion at .\simdloop.jl:73 [inlined]
 [6] #levenberg_marquardt#1(::Float64, ::Float64, ::Int32, ::Float64, ::Float64, ::Float64, ::Float64, ::Float64, ::Bool, ::Array{Float64,1}, ::Array{Float64,1}, ::LsqFit.#levenberg_marquardt, ::LsqFit.#f#5{#func,Array{Float64,1},Array{Float64,1}}, ::Calculus.#g#5{LsqFit.#f#5{#func,Array{Float64,1},Array{Float64,1}},Symbol}, ::Array{Float64,1}) at C:\Users\wangfeng\.julia\v0.6\LsqFit\src\levenberg_marquardt.jl:110
 [7] (::LsqFit.#kw##levenberg_marquardt)(::Array{Any,1}, ::LsqFit.#levenberg_marquardt, ::Function, ::Function, ::Array{Float64,1}) at .\<missing>:0
 [8] #lmfit#2(::Array{Any,1}, ::Function, ::LsqFit.#f#5{#func,Array{Float64,1},Array{Float64,1}}, ::Calculus.#g#5{LsqFit.#f#5{#func,Array{Float64,1},Array{Float64,1}},Symbol}, ::Array{Float64,1}, ::Array{Float64,1}) at C:\Users\wangfeng\.julia\v0.6\LsqFit\src\curve_fit.jl:13
 [9] (::LsqFit.#kw##lmfit)(::Array{Any,1}, ::LsqFit.#lmfit, ::Function, ::Function, ::Array{Float64,1}, ::Array{Float64,1}) at .\<missing>:0
 [10] #lmfit#3(::Array{Any,1}, ::Function, ::Function, ::Array{Float64,1}, ::Array{Float64,1}) at C:\Users\wangfeng\.julia\v0.6\LsqFit\src\curve_fit.jl:38
 [11] (::LsqFit.#kw##lmfit)(::Array{Any,1}, ::LsqFit.#lmfit, ::Function, ::Array{Float64,1}, ::Array{Float64,1}) at .\<missing>:0
 [12] #curve_fit#4(::Array{Any,1}, ::Function, ::#func, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}) at C:\Users\wangfeng\.julia\v0.6\LsqFit\src\curve_fit.jl:45
 [13] (::LsqFit.#kw##curve_fit)(::Array{Any,1}, ::LsqFit.#curve_fit, ::Function, ::Array{Float64,1}, ::Array{Float64,1}, ::Array{Float64,1}) at .\<missing>:100:

My Julia Information
Julia Version 0.6.3
Commit d55cadc350* (2018-05-28 20:20 UTC)
Platform Info:
  OS: Windows (i686-w64-mingw32)
  CPU: Intel(R) Core(TM) i5-4300M CPU @ 2.60GHz
  WORD_SIZE: 32
  BLAS: libopenblas (DYNAMIC_ARCH NO_AFFINITY Nehalem)
  LAPACK: libopenblas
  LIBM: libopenlibm
  LLVM: libLLVM-3.9.1 (ORCJIT, haswell)
 

Most likely you are solving a system with a singular matrix.

Providing a self-contained minimal working example could get you more help, but it may be an issue with your algorithm and/or conditioning.

Dear@Tamas_Papp, Thank you very much for your help, Is there some methods to throw this kind of exceptions in Julia? In my data analysis, I need to loop 1326 cases, in which this kind of exceptions may happen seven times, so I would like to throw them off.

Thank you again.

You are looking for exception handling, but I would recommend understanding what is going on instead.

Thank you very much for your quick reply, It may depends on my data analysis method, I will deeply analyze the data to see how the exceptional case influence the result.
Thank you!

Maybe the LsqFit.curve_fit() has some explanations to this issues. I will check it and hope to find the solution.

As @Tamas_Papp suggested, a simple example would help. I suspect that the algorithm is trying to solve an under-identified system of equations. In a least-squares fit, this is typically because there is insufficient independent variation between two (or more) of your columns.

Thank you for your help. In my analysis, maybe sometimes the vectors input into curve_fit(), was transformed into singular matrix. I do not fully understand how the least squares fitting was conducted.

If you look at the source of the LsqFit package, you will notice that it uses the Levenberg-Marquardt
algorithm, but for practical purposes it should not matter: the fact that your problem is (occasionally) singular should be investigated, because even when it is not caught as a singularity, it could just be ill-conditioned. Recall the folk theorem of statistical computing:

When you have computational problems, often there’s a problem with your model.

Thank you for your great help.