Zadatak glasi:Kako odrediti tocku x*iz[a,b] ukojoj se postize minimum f-je f:->R u mathematici pomocu "metode parabole".Konkretno za f-ju
f(x)=5|x+1|-|3x+2|+|5x-2|.
Ja sam to ovako napravila al ne radi pa ako mozete pomozite:
Parabola[f_, a1_, b1_, c1_, eps_] :=
Module[{c, b, a, x1, x2, x3, p2, x, pogreska, xT, xt, greska,
lista, sortiranalista, pozicija},
c = c1; b = b1; a = a1;
p2[x_, x1_, x2_, x3_ ] := InterpolatingPolynomial[{{x, f[x1]},
{x2, f[x2]}, {x3, f[x3]}}, x];
tjeme[x1_, x2_, x3_] := -(x2^2 f[x1] - x3^2 f[x1] - x1^2f[x2] +
x3^f[x2] +x1^2 f[x3])/
(2 (-x2 f[x1] + x3f[x1] + x1f[x2] -
x3 f[x2] - x1 f[x3] + x2 f[x3_]);
pogreska[xt_, x1_, x2_, x3_] := Abs[f[xt] - p2[xt, x1, x2, x3]]
xT = tjeme[a, b, c ] // N;
greska = pogreska[xT, a, b, c];
Print["Iteracija a c b xT f[xT] greska"];
sl[1] = Plot[{f[x], p2[x, a, b, c]},
{x, a - 0.5 (b - a), b + 0.5 (b - a)},
PlotStyle -> {Hue[0.1], {Thickness[0.015], Hue[0.6]}},
DisplayFunction -> Identity];
i = 1;
While[Abs[f[xT] - p2[xT, a, b, c]] > eps,
lista = {a, b, c, xT};
If[f[c] > f[xT], xT, c];
sortiranalista = Sort[lista];
pozicija = Flatten[Position[sortiranalista, c]][[1]];
b = sortiranalista[[pozicija + 1]];
a = sortiranalista[[pozicija - 1]];
xT = tjeme[a, b, c] // N;
greska = pogreska[xT, a, b, c];
Print[i, " ", a, " ", c, "
", b, " ", xT, " ", f[xT], " ", greska];
sl[i + 1] = Plot[{f[x], p2[x, a, b, c]},
{x, a - 0.5 (b - a), b + 0.5 (b - a)},
PlotStyle -> {Hue[0.1], {Thickness[0.015], Hue[0.6]}},
DisplayFunction -> Identity];
i++]);
]
f[x_] := 5 Abs[x + 1] - Abs[3 x + 2] + Abs[5 x - 2];
a = -2; c = 0; b = 2;
eps = 10^(-3);
Parabola[f, a, b, c, eps];
Zadatak glasi:Kako odrediti tocku x*iz[a,b] ukojoj se postize minimum f-je f:→R u mathematici pomocu "metode parabole".Konkretno za f-ju
f(x)=5|x+1|-|3x+2|+|5x-2|.
Ja sam to ovako napravila al ne radi pa ako mozete pomozite:
Parabola[f_, a1_, b1_, c1_, eps_] :=
Module[{c, b, a, x1, x2, x3, p2, x, pogreska, xT, xt, greska,
lista, sortiranalista, pozicija},
c = c1; b = b1; a = a1;
p2[x_, x1_, x2_, x3_ ] := InterpolatingPolynomial[{{x, f[x1]},
{x2, f[x2]}, {x3, f[x3]}}, x];
tjeme[x1_, x2_, x3_] := -(x2^2 f[x1] - x3^2 f[x1] - x1^2f[x2] +
x3^f[x2] +x1^2 f[x3])/
(2 (-x2 f[x1] + x3f[x1] + x1f[x2] -
x3 f[x2] - x1 f[x3] + x2 f[x3_]);
pogreska[xt_, x1_, x2_, x3_] := Abs[f[xt] - p2[xt, x1, x2, x3]]
xT = tjeme[a, b, c ] // N;
greska = pogreska[xT, a, b, c];
Print["Iteracija a c b xT f[xT] greska"];
sl[1] = Plot[{f[x], p2[x, a, b, c]},
{x, a - 0.5 (b - a), b + 0.5 (b - a)},
PlotStyle → {Hue[0.1], {Thickness[0.015], Hue[0.6]}},
DisplayFunction → Identity];
i = 1;
While[Abs[f[xT] - p2[xT, a, b, c]] > eps,
lista = {a, b, c, xT};
If[f[c] > f[xT], xT, c];
sortiranalista = Sort[lista];
pozicija = Flatten[Position[sortiranalista, c]][[1]];
b = sortiranalista[[pozicija + 1]];
a = sortiranalista[[pozicija - 1]];
xT = tjeme[a, b, c] // N;
greska = pogreska[xT, a, b, c];
Print[i, " ", a, " ", c, "
", b, " ", xT, " ", f[xT], " ", greska];
sl[i + 1] = Plot[{f[x], p2[x, a, b, c]},
{x, a - 0.5 (b - a), b + 0.5 (b - a)},
PlotStyle → {Hue[0.1], {Thickness[0.015], Hue[0.6]}},
DisplayFunction → Identity];
i++]);
]
f[x_] := 5 Abs[x + 1] - Abs[3 x + 2] + Abs[5 x - 2];
a = -2; c = 0; b = 2;
eps = 10^(-3);
Parabola[f, a, b, c, eps];
|