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 Robert & Peter,

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

Gruss
Udo.



g[a_, b_, x_, y_] = \!\(
\*UnderoverscriptBox[\(\[Sum]\), \(i = 1\), \(n\)]\(Expand@
\*SuperscriptBox[\((y[i] - \((a\ x[i] + b)\))\), \(2\)]\)\)
la = Distribute@\!\(
\*SubscriptBox[\(\[PartialD]\), \(a\)]\(g[a, b, x, y]\)\)
lb = Distribute@\!\(
\*SubscriptBox[\(\[PartialD]\), \(b\)]\(g[a, b, x, y]\)\)
{la == 0, lb == 0} /. {\!\(
\*UnderoverscriptBox[\(\[Sum]\), \(i = 1\), \(n\)]\(2\ b\ x[i]\)\) ->
    2 b \!\(
\*UnderoverscriptBox[\(\[Sum]\), \(i = 1\), \(n\)]\ \(x[i]\)\), \!\(
\*UnderoverscriptBox[\(\[Sum]\), \(i = 1\), \(n\)]\(2\ a\
\*SuperscriptBox[\(x[i]\), \(2\)]\)\) -> 2 a \!\(
\*UnderoverscriptBox[\(\[Sum]\), \(i = 1\), \(n\)]\
\*SuperscriptBox[\(x[i]\), \(2\)]\), \!\(
\*UnderoverscriptBox[\(\[Sum]\), \(i = 1\), \(n\)]\(2\ a\ x[i]\)\) ->
    2 a \!\(
\*UnderoverscriptBox[\(\[Sum]\), \(i = 1\), \(n\)]\ \(x[i]\)\)} //
 Solve[#, {a, b}] &





Waren wir uns nicht schon einmal einig, dass bei deinem Problem []
anstelle [[]] zu verwenden ist  ;)

LG Robert



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

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