Multi variables in lsqfit

Do you mean function Com_Langmuir(x, p) ?

The syntax for the model is foo(x, params). See the documentation: GitHub - JuliaNLSolvers/LsqFit.jl: Simple curve fitting in Julia

julia> import CSV, DataFrames, LsqFit

julia> data = """
       CA,CC,qA_293k,qA_303K,qA_313K,qC_293K,qC_303K,qC_313K
       3.46,0.34,7.27,7.00,5.50,0.54,0.51,0.48
       5.19,0.51,9.67,9.36,7.80,0.77,0.69,0.64
       6.93,0.68,12.70,11.44,9.99,1.02,0.94,0.89
       8.66,0.85,15.09,13.96,12.44,1.22,1.12,1.03
       10.39,1.02,16.88,15.67,14.81,1.42,1.25,1.22
       12.12,1.19,20.01,19.36,17.46,1.61,1.51,1.42
       """
"CA,CC,qA_293k,qA_303K,qA_313K,qC_293K,qC_303K,qC_313K\n3.46,0.34,7.27,7.00,5.50,0.54,0.51,0.48\n5.19,0.51,9.67,9.36,7.80,0.77,0.69,0.64\n6.93,0.68,12.70,11.44,9.99,1.02,0.94,0.89\n8.66,0.85,15.09,13.96,12.44,1.22,1.12,1.03\n10.39,1.02,16.88,15.67,14.81,1.42,1.25,1.22\n12.12,1.19,20.01,19.36,17.46,1.61,1.51,1.42\n"

julia> df = CSV.read(IOBuffer(data), DataFrames.DataFrame)
6×8 DataFrame
 Row │ CA       CC       qA_293k  qA_303K  qA_313K  qC_293K  qC_303K  qC_313K 
     │ Float64  Float64  Float64  Float64  Float64  Float64  Float64  Float64 
─────┼────────────────────────────────────────────────────────────────────────
   1 │    3.46     0.34     7.27     7.0      5.5      0.54     0.51     0.48
   2 │    5.19     0.51     9.67     9.36     7.8      0.77     0.69     0.64
   3 │    6.93     0.68    12.7     11.44     9.99     1.02     0.94     0.89
   4 │    8.66     0.85    15.09    13.96    12.44     1.22     1.12     1.03
   5 │   10.39     1.02    16.88    15.67    14.81     1.42     1.25     1.22
   6 │   12.12     1.19    20.01    19.36    17.46     1.61     1.51     1.42

julia> function Com_Langmuir(x, p)
           Ha, bA, bC, Hc = p
           CA = @view x[:, 1]
           CC = @view x[:, 2]
           qA = @. Ha * CA / (1 + bA*CA + bC*CC)
           qC = @. Hc * CC / (1 + bA*CA + bC*CC)
           return vcat(qA, qC)
       end
Com_Langmuir (generic function with 1 method)

julia> xdata = [df.CA df.CC]
6×2 Matrix{Float64}:
  3.46  0.34
  5.19  0.51
  6.93  0.68
  8.66  0.85
 10.39  1.02
 12.12  1.19

julia> ydata = vcat(df.qA_303K, df.qC_303K)
12-element Vector{Float64}:
  7.0
  9.36
 11.44
 13.96
 15.67
 19.36
  0.51
  0.69
  0.94
  1.12
  1.25
  1.51

julia> p0 = [1.983, 0.0067, 0.1951, 1.61]
4-element Vector{Float64}:
 1.983
 0.0067
 0.1951
 1.61

julia> ret = LsqFit.curve_fit(Com_Langmuir, xdata, ydata, p0)
LsqFit.LsqFitResult{Vector{Float64}, Vector{Float64}, Matrix{Float64}, Vector{Float64}, Vector{LsqFit.LMState{LsqFit.LevenbergMarquardt}}}([1.9591016841592197, 13.58216904773464, -138.11627273117097, 1.571176537116358], [-0.44929059679496763, 0.30369611921302386, -0.1765545568040796, -0.08488979377925254, 0.7435466251881575, -0.4782080120029555, 0.006248923887321234, 0.0715774743231512, -0.0536302114136612, -0.027791676070707094, 0.04227536237120133, -0.023189712036286503], [3.3437311886808767 -21.903812996616832 -2.1523978086444178 0.0; 4.932717988715785 -47.668295531028825 -4.68416776783525 0.0; … ; 0.0 -10.826815246805841 -1.0628827270494086 0.8224889640699448; 0.0 -14.329863758728356 -1.4069750692351175 0.9463037748263273], true, Iter     Function value   Gradient norm 
------   --------------   --------------
, Float64[])

julia> ret.param
4-element Vector{Float64}:
    1.9591016841592197
   13.58216904773464
 -138.11627273117097
    1.571176537116358
1 Like