title: Why does scipy.optimize.least_squares exist when scipy.optimize.minimize could potentially be used for the same things?
body: <p>I am trying to understand why the <code>scipy.optimize.least_squares</code> exists in <code>scipy</code>. This function can be used to perform model-fitting. However, one could use <code>scipy.optimize.minimize</code> to do the same thing. The only difference is that <code>scipy.optimize.least_squares</code> does the calculation of the chi-squared internally, while if one wants to use <code>scipy.optimize.minimize</code>, he/she will have to calculate the chi-squared manually inside the function the user want to minimize. Also, <code>scipy.optimize.least_squares</code> can not be considered a wrapper around <code>scipy.optimize.minimize</code> because the three methods it supports (<code>trf</code>, <code>dogbox</code>, <code>lm</code>), are not supported at all by <code>scipy.optimize.minimize</code>.</p>
  
  <p>So my questions are:</p>
  
  <ul>
  <li>Why <code>scipy.optimize.least_squares</code> exists when the same result can be achieved with <code>scipy.optimize.minimize</code>?</li>
  <li>Why <code>scipy.optimize.minimize</code> does not support the <code>trf</code>, <code>dogbox</code>, and <code>lm</code> methods?</li>
  </ul>
  
  <p>Thank you.</p>