# How to fit two datasets with common fit parameters?

I have two data sets which go:

datajapan = {{3.22, 0.0149}, {4.7457, 0.06081}, {6.053,
0.1276}, {7.143, 0.211}, {7.9418, 0.3112}, {8.523, 0.411}, {9.322,
0.515}, {9.975, 0.624}, {10.847, 0.736}, {11.50, 0.84}, {12.445,
0.937}, {13.825, 0.94}, {14.48, 0.837}, {14.99, 0.711}, {15.20,
0.587}, {15.57, 0.46}, {16.00, 0.336}, {16.44, 0.211}, {17.167,
0.0984}}
JP = ListPlot[datajapan]

datajapan2 = {{11.937, -0.031}, {10.629, -0.0853}, {9.467, -0.17},
{8.596, -0.26}, {7.869, -0.356}, {7.2154, -0.469}, {6.489, -0.594},
{5.835, -0.7197}, {5.036, -0.836}, {4.237, -0.94}, {3.365, -1.02},
{2.058, -0.96}, {1.404, -0.8448}, {0.968, -0.719}, {0.75, -0.595},
{0.46, -0.469}, {0.388, -0.302}, {0.315, -0.177}, {-0.121, -0.052}}
JP2 = ListPlot[datajapan2]


And two equations:

Butler =
ParametricNDSolve[{y'[
x] == (kf*(1 - 0.02*ka*Exp[y[x]])*Exp[0.5*(x - y[x])] -
kf*0.02*ka*Exp[y[x]]*Exp[0.5*(y[x] - x)])/(10^(-9)*ka*
Exp[y[x]]), y[-8] == 0}, y, {x, -8, 19}, {ka, kf}]
Butlerback =
ParametricNDSolve[{y'[
x] == (kf*(1 - 0.02*ka*Exp[y[x]])*Exp[0.5*(x - y[x])] -
kf*0.02*ka*Exp[y[x]]*Exp[0.5*(y[x] - x)])/(-10^(-9)*ka*
Exp[y[x]]), y[19] == 3.9 + Log[1/ka]},
y, {x, -8, 19}, {ka, kf}]


They have common parameters ka and kf. I need to fit this data with the next equations simultaneously:

(0.130)*ka*Exp[y[ka, kf][x]]*y[ka, kf]'[x]/.Butler
-(0.130)*ka*Exp[y[ka, kf][x]]*y[ka, kf]'[x]/.Butlerback


I know how to do it by my own hands. I mean, I do following things. Plot these two graphics and datasets together and watch whether they fit each other or not (using some initial parameters):

Show[{Plot[
Evaluate[
Table[-(0.130)*ka*Exp[y[ka, kf][x]]*y[ka, kf]'[x] /.
Butlerback, {ka, 0.0001, 0.0011, 0.0002}, {kf, 0.000000015,
0.0000000151, 0.0000000001}]], {x, -8, 19}],
Plot[Evaluate[
Table[(0.130)*ka*Exp[y[ka, kf][x]]*y[ka, kf]'[x] /.
Butler, {ka, 0.0001, 0.0011, 0.0002}, {kf, 0.000000015,
0.0000000151, 0.0000000001}]], {x, -8, 19}], JP2, JP},
PlotRange -> All]


this all looks like this:

Then I see that I need to increase ka and to decrease kf to it better.

Show[{Plot[
Evaluate[
Table[-(0.130)*ka*Exp[y[ka, kf][x]]*y[ka, kf]'[x] /.
Butlerback333, {ka, 0.0083, 0.0085, 0.0002}, {kf, 0.0000000017,
0.00000000171, 0.00000000001}]], {x, -8, 19}],
Plot[Evaluate[
Table[(0.130)*ka*Exp[y[ka, kf][x]]*y[ka, kf]'[x] /.
Butler333, {ka, 0.0083, 0.0085, 0.0002}, {kf, 0.0000000017,
0.00000000171, 0.00000000001}]], {x, -8, 19}], JP2, JP},
PlotRange -> All]


And I change parameters, watch curve again, and again and again till I somehow get a rather good match.

1. I'd like computer to do it for me, more accurately.

2. All these calculations are inappropriate because I use wrong initial conditions for Butler (y[-8] is not equal to zero). But this initial condition works somehow so I use it, but I would like computer to take last point of y[x]/.Butlerback and use this point as initial condition for Butler

I hope this time i made myself quite clear...)

• There are numerous threads on simultaneous fitting on MSE. A search should find several good hits. – Daniel Lichtblau May 3 '16 at 22:57
• How similar is your problem to this one? – bobthechemist May 3 '16 at 23:35
• ...or this one? – bobthechemist May 3 '16 at 23:35
• Yes, quite similar, but i need to integrate from for example 19 to -8 and then turn back and integrate from -8 to 19. And the initial conditions for backward integration should bet obtained from the end point of foreward integration. I don't how to do it so i just put down my own, created by me initial conditions of backward integration. So i would like to be able to fit cyclic curve, one part of it goes from 19 to -8, then turn back and goes from -8 to 19 with appropriate initial conditions. – D.Anishchenko May 4 '16 at 6:50
• @D.Anishchenko Would a fitted sum of the functions you want to fit be a satisfactory result you can use? Something similar to this answer. See the application of that approach to your question here. – Anton Antonov May 4 '16 at 14:00