I have a question, for example from Oleksandr R. in How do I fit 3 records to a model of 4 differential equations?

Oleksandr R. made some fake data from a given model, and the values of kinetic coefficients k1, k2 and k3 were given as follows:

```
sol = ParametricNDSolveValue({a'(t) == -k1 a(t) b(t) + k2 x(t),
a(0) == 1, b'(t) == -k1 a(t) b(t) + k2 x(t) - k3 b(t) x(t),
b(0) == 1, x'(t) == k1 a(t) b(t) - k2 x(t) - k3 b(t) x(t),
x(0) == 0}, {a, b, x}, {t, 0, 10}, {k1, k2, k3});
abscissae = Range(0., 10., 0.1);
ordinates =
With({k1 = 0.85, k2 = 0.15, k3 = 0.50},
Through(sol(k1, k2, k3)(abscissae), List));
data = ordinates +
RandomVariate(NormalDistribution(0, 0.1^2), Dimensions(ordinates));
ListLinePlot(data, DataRange -> {0, 10}, PlotRange -> All,
AxesOrigin -> {0, 0}, PlotStyle -> {Blue, Orange, Green})
```

In the figure above, the curve of a is blue, orange is b, and green is x.

In the above article, Oleksandr R. has developed a way to adjust the three curves by adding an index of 1, 2 or 3 to the data set.

But what happens if you have multiple curves for the same substance, for example, if you perform several experiments with different initial concentrations? We can assume that the kinetic coefficients k1, k2, and k3 are constant and do not vary between experiments. This is a reasonable assumption, at least formally, especially when the concentrations are low. Is it then possible to adjust all data?

For example, let's create two sets of fake data from different initial conditions. Follow the above code:

```
sol1 = ParametricNDSolveValue({a'(t) == -k1 a(t) b(t) + k2 x(t),
a(0) == 1, b'(t) == -k1 a(t) b(t) + k2 x(t) - k3 b(t) x(t),
b(0) == 1, x'(t) == k1 a(t) b(t) - k2 x(t) - k3 b(t) x(t),
x(0) == 0}, {a, b, x}, {t, 0, 10}, {k1, k2, k3});
sol2 = ParametricNDSolveValue({a'(t) == -k1 a(t) b(t) + k2 x(t),
a(0) == 0.75, b'(t) == -k1 a(t) b(t) + k2 x(t) - k3 b(t) x(t),
b(0) == 0.4, x'(t) == k1 a(t) b(t) - k2 x(t) - k3 b(t) x(t),
x(0) == 0}, {a, b, x}, {t, 0, 10}, {k1, k2, k3});
abscissae = Range(0., 10., 0.1);
ordinates1 =
With({k1 = 0.85, k2 = 0.15, k3 = 0.50},
Through(sol1(k1, k2, k3)(abscissae), List));
ordinates2 =
With({k1 = 0.85, k2 = 0.15, k3 = 0.50},
Through(sol2(k1, k2, k3)(abscissae), List));
data1 = ordinates1 +
RandomVariate(NormalDistribution(0, 0.1^2), Dimensions(ordinates1));
data2 = ordinates2 +
RandomVariate(NormalDistribution(0, 0.1^2), Dimensions(ordinates2));
ListLinePlot(Join(data1, data2), DataRange -> {0, 10},
PlotRange -> All, AxesOrigin -> {0, 0},
PlotStyle -> {Blue, Orange, Green})
```

How do you adjust the six curves (three functions from two different experiments) simultaneously? How should Oleksandr's code be modified to achieve this? Thanks!!