2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Piecewise в Wolfram Mathematica
Сообщение25.11.2018, 02:33 
Помогите, пожалуйста: я не могу понять, как мне получить значение функции, заданной с помощью Piecewise, в точке $x$. У меня такой код:
Код:
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 функции значение в точки просто поставив квадратные скобки. Облазив несколько страниц гугла в интернете не стало ясно, можно так делать или нет. Но если нельзя, то как реализовать то, что я хочу? (получить и обработать значение кусочно заданной функции в точке)

 
 
 
 Re: Piecewise в Wolfram Mathematica
Сообщение25.11.2018, 09:38 
Аргументы функций при определении указываются в квадратных скобках: f1[x_]:=...

 
 
 
 Re: Piecewise в Wolfram Mathematica
Сообщение25.11.2018, 23:29 
Подозрительны конструкции Array[f, 45]; и Array[c, 4]; — вы пытаетесь определить переменную как массив? Это работает не так. Array возвращает массив (ну, список), который можно чему-то присвоить (или использовать как-то иначе), но в данном случае эти две строки никак у вас не используются и могут быть убраны.

 
 
 [ Сообщений: 3 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group