Piecewise в Wolfram Mathematica : Околонаучный софт fixfix
2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Piecewise в Wolfram Mathematica
Сообщение25.11.2018, 02:33 


28/11/17
1
Помогите, пожалуйста: я не могу понять, как мне получить значение функции, заданной с помощью 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 
Заслуженный участник


25/02/11
1797
Аргументы функций при определении указываются в квадратных скобках: f1[x_]:=...

 Профиль  
                  
 
 Re: Piecewise в Wolfram Mathematica
Сообщение25.11.2018, 23:29 
Заслуженный участник


27/04/09
28128
Подозрительны конструкции Array[f, 45]; и Array[c, 4]; — вы пытаетесь определить переменную как массив? Это работает не так. Array возвращает массив (ну, список), который можно чему-то присвоить (или использовать как-то иначе), но в данном случае эти две строки никак у вас не используются и могут быть убраны.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group