I’m trying to find all the possible roots of three functions below (`v1=f1(v1,v2,v3), v2=f2(v1,v2,v3) `

and` v3=f3(v1,v2,v3)`

) with respect to a change in parameter `l`

```
(Beta) = 7.5; d = 3.85; c = 15.4;
f1(v1_, v2_, v3_, l_) := (Beta)/(
1 + c/d Exp(-(((v1 - (v2 + v3)/2) l)/d))/(
1/(v1 - (v2 + v3)/2) (1 - Exp(-(((v1 - (v2 + v3)/2) l)/d))) +
1/(v2 - (v1 + v3)/2) (1 - Exp(-(((v2 - (v1 + v3)/2) l)/d))) +
1/(v3 - (v2 + v1)/2) (1 - Exp(-(((v3 - (v2 + v1)/2) l)/d)))));
f2(v1_, v2_, v3_, l_) := (Beta)/(
1 + c/d Exp(-(((v2 - (v1 + v3)/2) l)/d))/(
1/(v1 - (v2 + v3)/2) (1 - Exp(-(((v1 - (v2 + v3)/2) l)/d))) +
1/(v2 - (v1 + v3)/2) (1 - Exp(-(((v2 - (v1 + v3)/2) l)/d))) +
1/(v3 - (v2 + v1)/2) (1 - Exp(-(((v3 - (v2 + v1)/2) l)/d)))));
f3(v1_, v2_, v3_, l_) := (Beta)/(
1 + c/d Exp(-(((v3 - (v1 + v2)/2) l)/d))/(
1/(v1 - (v2 + v3)/2) (1 - Exp(-(((v1 - (v2 + v3)/2) l)/d))) +
1/(v2 - (v1 + v3)/2) (1 - Exp(-(((v2 - (v1 + v3)/2) l)/d))) +
1/(v3 - (v2 + v1)/2) (1 - Exp(-(((v3 - (v2 + v1)/2) l)/d)))));
```

I’m trying to use `FindRoot`

and eliminate duplicates, however I seem to miss many of the roots.

this is my attempt

```
lList = Table(l, {l, 1.4, 3.7, .001}); v11List =
Table({}, {i, 1, Length(lList)});
v21List = Table({}, {i, 1, Length(lList)}); v31List =
Table({}, {i, 1, Length(lList)}); v12List =
Table({}, {i, 1, Length(lList)});
v22List = Table({}, {i, 1, Length(lList)}); v32List =
Table({}, {i, 1, Length(lList)});
v13List = Table({}, {i, 1, Length(lList)});
v23List = Table({}, {i, 1, Length(lList)}); v33List =
Table({}, {i, 1, Length(lList)});
list = Table({l,
DeleteDuplicates(
Table(NumberForm(
Reverse(Sort(
N@Round(10000*{v1, v2, v3} /.
Quiet@FindRoot({v1 == f1(v1, v2, v3, (Beta), l),
v2 == f2(v1, v2, v3, (Beta), l),
v3 == f3(v1, v2, v3, (Beta), l)}, {v1, 20}, {v2,
v0}, {v3, 1}, AccuracyGoal -> Infinity,
PrecisionGoal -> 18))/10000)), 5), {v0, 1, 19,
1}))}, {l, 1.4, 3.7, .001});
For(i = 1, i < Length(list) + 1, i++, tmp1 = list((i))((2));
(*Print(tmp1)*)
If(Length(tmp1) == 1,
v11List((i)) = {lList((i)), tmp1((1))((1))((1))};
v21List((i)) = {lList((i)), tmp1((1))((1))((2))};
v31List((i)) = {lList((i)), tmp1((1))((1))((3))};
v12List((i)) = {lList((i)), tmp1((1))((1))((1))};
v22List((i)) = {lList((i)), tmp1((1))((1))((2))};
v32List((i)) = {lList((i)), tmp1((1))((1))((3))};);
If(Length(tmp1) > 1,
v11List((i)) = {lList((i)), tmp1((1))((1))((1))};
v21List((i)) = {lList((i)), tmp1((1))((1))((2))};
v31List((i)) = {lList((i)), tmp1((1))((1))((3))};
v12List((i)) = {lList((i)), tmp1((2))((1))((1))};
v22List((i)) = {lList((i)), tmp1((2))((1))((2))};
v32List((i)) = {lList((i)), tmp1((2))((1))((3))};);)
```

As you can see in the result below, many of the curves have missing parts (meaning that not all the roots are found)

```
ListLinePlot({v11List, v21List, v31List, v12List, v22List,
v32List}, ImageSize -> 250,
PlotRange -> {{1.4, 3.7}, {0, (Beta) + 1}},
PlotLegends -> {"v2", "v1", "v3"}, AxesLabel -> {"l", "v"},
LabelStyle -> {FontSize -> 12},
PlotStyle -> {Red, Blue, Green, Red, Blue, Green, Red, Blue, Green})
```

Can anyone please help and advice on how to properly find all the roots of `v1 v2 v3`

as a function of `l`

?