Помогите, пожалуйста: я не могу понять, как мне получить значение функции, заданной с помощью Piecewise, в точке
. У меня такой код:
Код:
Array[f, 45];
f[20] = 431;
f[21] = 439;
f[22] = 429;
f[23] = 422;
f[24] = 530;
f[25] = 505;
f[26] = 459;
f[27] = 499;
f[28] = 526;
f[29] = 563;
f[30] = 587;
f[31] = 595;
f[32] = 647;
f[33] = 669;
f[34] = 746;
f[35] = 760;
f[36] = 778;
f[37] = 828;
f[38] = 846;
f[39] = 836;
f[40] = 916;
f[41] = 956;
f[42] = 1014;
f[43] = 1076;
f[44] = 1134;
f[45] = 1024;
f1 = Piecewise[{{1 - (x - 20)*1/8, 20 <= x <= 28}, {0, x >= 28}}, 0];
f2 = Piecewise[{{1/11*(x - 28), 28 <= x <= 39}, {1 - (x - 39)*1/6,
39 <= x <= 45}}, 0];
f3 = Piecewise[{{1/8*(x - 20), 20 <= x <= 28}, {1 - (x - 28)*1/11,
28 <= x <= 39}}, 0];
f4 = Piecewise[{{1/6*(x - 39), 39 <= x <= 45}, {0, x >= 45}}, 0];
Array[c, 4];
r[x_] := c[0]*f1[x] + c[1]*f2[x] + c[2]*f3[x] + c[3]*f4[x];
F = Sum[(r[i] - f[i])^2, {i, 20, 45, 1}];
Minimize[F, {c[0], c[1], c[2], c[3]}]
Таким образом я стараюсь найти наилучшее приближение методом наименьших квадратов к функции, построенной из базиса данных кусочно заданных функций, найти числа из массива
Код:
с
, соответствующие координатам наилучшего решения в этом базисе. Программа, код которой я привожу, у меня на компьютере запускаться не хочет, ошибка, которую я получила при последнем запуске:
Код:
"ReplaceAll::reps : "\[NoBreak]\!\({20}\)\[NoBreak] is neither a list of replacement \rules nor a valid dispatch table, and so cannot be used for \replacing. "
Я подозреваю виновной в краше строчку:
Код:
r[x_] := c[0]*f1[x] + c[1]*f2[x] + c[2]*f3[x] + c[3]*f4[x];
Здесь я отыскиваю у Piexewise функции значение в точки просто поставив квадратные скобки. Облазив несколько страниц гугла в интернете не стало ясно, можно так делать или нет. Но если нельзя, то как реализовать то, что я хочу? (получить и обработать значение кусочно заданной функции в точке)