To solve the given linear programming optimization problem, we first need to define the decision variables, the objective function, and the constraints based on the natural language description provided.

Let's denote:
- \(x_1\) as the number of solar calculators produced.
- \(x_2\) as the number of finance calculators produced.

The profit per solar calculator is $12, and per finance calculator is $9. Thus, the objective function to maximize profit (\(P\)) can be written as:
\[ P = 12x_1 + 9x_2 \]

Now, let's define the constraints based on the availability of materials:
1. **Silicon Constraint**: To make a solar calculator, 5 grams of silicon are needed, and for a finance calculator, 3 grams are needed. With only 150 grams of silicon available, we have:
\[ 5x_1 + 3x_2 \leq 150 \]

2. **Plastic Constraint**: For a solar calculator, 4 grams of plastic are required, and for a finance calculator, 5 grams are needed. Given that there are 150 grams of plastic available:
\[ 4x_1 + 5x_2 \leq 150 \]

3. **Steel Constraint**: To produce a solar calculator, 2 grams of steel are necessary, and for a finance calculator, 3 grams are required. With a limit of 70 grams of steel:
\[ 2x_1 + 3x_2 \leq 70 \]

Additionally, \(x_1\) and \(x_2\) must be non-negative since they represent the number of calculators produced.

To solve this linear programming problem using Gurobi in Python, we'll use the following code:

```python
from gurobipy import *

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

# Define variables
x1 = m.addVar(vtype=GRB.CONTINUOUS, name="solar_calculators", lb=0)
x2 = m.addVar(vtype=GRB.CONTINUOUS, name="finance_calculators", lb=0)

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

# Add constraints
m.addConstr(5*x1 + 3*x2 <= 150, "silicon_constraint")
m.addConstr(4*x1 + 5*x2 <= 150, "plastic_constraint")
m.addConstr(2*x1 + 3*x2 <= 70, "steel_constraint")

# Optimize model
m.optimize()

# Print solution
if m.status == GRB.OPTIMAL:
    print(f"Optimal solution: Produce {x1.x} solar calculators and {x2.x} finance calculators.")
    print(f"Maximum profit: ${12*x1.x + 9*x2.x}")
else:
    print("No optimal solution found")
```