Just putting this in standard syntax:

```
sage: f = 10*(1-exp(-.23*x))^2
sage: g = 20*(1-exp(-.23*(x-14)))^2-10
sage: g
20*(e^(-0.230000000000000*x + 3.22000000000000) - 1)^2 - 10
sage: f
10*(e^(-0.230000000000000*x) - 1)^2
sage: solve(f==g,x)
[]
```

Sage gives solutions in list form by default. Python (which Sage is largely based upon) lists are in square brackets. This one has no items, so it is the empty list.

```
sage: solve(f==g,x,to_poly_solve=True) # invokes another type of solver, but one which doesn't always return exact answers
[]
```

But there is another issue, which is that `solve`

(which is from Maxima's solve) seeks *exact* solutions, in general. If it can't solve it exactly, it may indeed return no answers, even if there are some.

Now, a little playing with `find_root`

discovers something interesting.

```
sage: f.subs(x=1000)
10.0000000000000
sage: g.subs(x=1000)
10.0000000000000
```

Well, maybe Maxima's solve capabilities should have found that... but apparently it didn't. However, you may find `find_root`

is what you are actually interested in.

```
sage: find_root(f-g,0,20)
11.070582936901683
```