Hallo Peter,
Schade, das man Mma manchmal so einfache Sachen vorher erklären muss.
Gut, aber man kann dies tun
In[1]:= ClearAll[g]
Unprotect[Sum]
Sum /: Sum[\[Alpha]_ + \[Beta]_, l_List] :=
Sum[\[Alpha], l] + Sum[\[Beta], l]
Sum /: Sum[\[Alpha]_ \[Beta]_, l_List] := \[Alpha] Sum[\[Beta], l] /;
FreeQ[\[Alpha], First[l]]
Protect[Sum]
g[a_, b_, x_, y_] = \!\(
\*UnderoverscriptBox[\(\[Sum]\), \(i = 1\), \(n\)]\(Expand[
\*SuperscriptBox[\((
\*SubscriptBox[\(y\), \(i\)] - \((a\
\*SubscriptBox[\(x\), \(i\)] + b)\))\), \(2\)]]\)\)
In[11]:= la = D[g[a, b, x, y], a]
In[12]:= lb = D[g[a, b, x, y], b]
In[13]:= Solve[{la == 0, lb == 0}, {a, b}]
X und Distribute[] sind nicht mehr erforderlich.
Gruss
Udo.
P.S.: Die Variante mit X ist allenfalls zu bevorzugen, weil
selbstprogrammiertes pattern matching gegen die Rechenregeln verstossen
kann und allfällige Fehler in derart modifizierten Standardfunktionen auch
an anderer Stelle Fehler erzeugen können, mit anderen Worten, die
Modifikation ist nicht mehr lokal (wie bei der Verwendung von X), sondern
global in der gesamten Mma-Sitzung.
wenn es elegant nicht mehr geht dann eben auf die harte Tour:
Es geht ohne explizite Ersetzungsregeln. Ein Operator X übernimmt das
Ausklammern und Solve[] löst das lineare Gleichungssystem:
In[80]:= ClearAll[g, X]
X /: X[\[Alpha]_ \[Beta]_, l_List] := \[Alpha] X[\[Beta], l] /;
FreeQ[\[Alpha], First[l]]
g[a_, b_, x_, y_] = \!\(
\*UnderoverscriptBox[\(\[Sum]\), \(i = 1\), \(n\)]\(Expand[
\*SuperscriptBox[\((
\*SubscriptBox[\(y\), \(i\)] - \((a\
\*SubscriptBox[\(x\), \(i\)] + b)\))\), \(2\)]]\)\)
In[81]:= la = Distribute[D[g[a, b, x, y], a]]
In[82]:= lb = Distribute[D[g[a, b, x, y], b]]
In[83]:= Solve[{(la /. Sum -> X) == 0, (lb /. Sum -> X) == 0}, {a, b}]
/.
X -> Sum