Gerade durch eine Punktwolke, fixiert in einem gegebenen Punkt

Gerade durch eine Punktwolke, fixiert in einem gegebenen Punkt

Funktion definieren für die Randomisierung

f[x_] := {1/2  x - 1, 1/2  x + 1};

Gegebener Punkt definieren

u[x_] = {x, 1/2  x};  k=u[10]

Randomisierung: Tabelle

tab = Table[{x, Random[Real, f[x]]}, {x, 1, 100}]

Gerade g durch den Punkt k

g[x_, a_,  b_] := a x  +  b;

solv = 
      Solve[g[k[[1]], a, b] == k[[2]], b] // Flatten

g[x_, a_] := 
        a x  +  b  /.  solv   // 
          Simplify;
g[x, a]

Die Gerade g soll Ausgleichsgerade sein: Summe der quadratischen Abweichungen berechnen

Sum[(tab[[k]][[2]] - 
            g[tab[[k]][[1]], a])^2, {k, 1, 
        Length[tab]}]

Ausgleichsgerade: Summe der quadratischen Abweichungen berechnen

D[Sum[(tab[[k]][[2]] - 
              g[tab[[k]][[1]], a])^2, {k, 1, Length[tab]}], 
      a]

D[Sum[(tab[[k]][[2]] - 
                g[tab[[k]][[1]], a])^2, {k, 1, Length[tab]}], 
        a] // Simplify

Ableitung der Summe der quadratischen Abweichungen ist 0, daraus a berechnen

solv2 = 
      Solve[Evaluate[
            Simplify[
                D[Sum[(tab[[k]][[2]] - 
                          g[tab[[k]][[1]], a])^2, {k, 1, 
                      Length[tab]}], a]] == 0], {a}] // 
        Flatten

Fertige Ausgleichsgerade

g[x_] := (g[x, a] /. solv2 ) // 
          Simplify;
g[x]

Plots

p1 = Plot[g[x], {x, 1, 100}];

p2 = ListPlot[tab];

p3 = Show[Graphics[{PointSize[0.03], Point[k]}]];

Show[p1, p2, p3];