To solve the given optimization problem, we first need to translate the natural language description into a symbolic representation. This involves defining variables and formulating the objective function and constraints using these variables.

Let's define:
- $x_1$ as the amount invested in the younger sister's company.
- $x_2$ as the amount invested in the elder sister's company.

The objective is to maximize profit, which can be represented by the objective function: $0.05x_1 + 0.08x_2$.

The constraints based on the problem description are:
1. The total investment should not exceed $5000: $x_1 + x_2 \leq 5000$.
2. At least 40% of the investment should go to the younger sister's company: $x_1 \geq 0.4(x_1 + x_2)$.
3. At least $2000 should be invested in the elder sister's company: $x_2 \geq 2000$.
4. Non-negativity constraints: $x_1 \geq 0$, $x_2 \geq 0$.

Now, let's represent this problem symbolically and then translate it into Gurobi code:

```json
{
  'sym_variables': [('x1', 'amount invested in younger sister\'s company'), 
                    ('x2', 'amount invested in elder sister\'s company')],
  'objective_function': '0.05*x1 + 0.08*x2',
  'constraints': ['x1 + x2 <= 5000', 
                  'x1 >= 0.4*(x1 + x2)', 
                  'x2 >= 2000', 
                  'x1 >= 0', 
                  'x2 >= 0']
}
```

Here's how we can solve this problem using Gurobi in Python:

```python
from gurobipy import *

# Create a new model
m = Model("Investment_Problem")

# Define variables
x1 = m.addVar(lb=0, name="amount_in_younger_sister_company")
x2 = m.addVar(lb=0, name="amount_in_elder_sister_company")

# Set the objective function
m.setObjective(0.05*x1 + 0.08*x2, GRB.MAXIMIZE)

# Add constraints
m.addConstr(x1 + x2 <= 5000, "total_investment")
m.addConstr(x1 >= 0.4*(x1 + x2), "minimum_younger_sister_investment")
m.addConstr(x2 >= 2000, "minimum_elder_sister_investment")

# Optimize the model
m.optimize()

# Print results
if m.status == GRB.OPTIMAL:
    print(f"Optimal investment in younger sister's company: {x1.x}")
    print(f"Optimal investment in elder sister's company: {x2.x}")
    print(f"Maximum profit: {m.objVal}")
else:
    print("Model is not optimal")
```