DMUG-Archiv 2010

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Sum[x[[i]]+a,{i,1,n}] => Sum[x[[i]],{i,1,n}]+a n

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



Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html