Этот вопрос касается гуманного представления выхода Maxima.Maxima: Как вычислить конечную сумму?
Короче, как сделать
b*d4 + b*d3 + b*d2 + b*d1 + a*sin(c4 + alpha) + a*sin(c3 + alpha) + a*sin(c2 + alpha) + a*sin(c1 + alpha)
выглядеть
b*sum_{i=1}^{4} d_i + a*sum_{j=1}^{4}sin(c_i + \alpha)
где сумма _ {*}^{*} * это знак суммирования и выражение с индексами?
Или глубже, как правильно моделировать конечный набор предметов здесь?
Рассмотрим конечный набор сущностей $ x_i $ (пытающийся говорить здесь tex), которые пронумерованы от 1 до n, где n известно. Пусть функция $ F $ зависит от нескольких характеристик этих объектов $ c_ji = c_j (x_i), j = 1..k $ (k - также известно), так что $ F = F (c_11, ..., c_kn) $ ,
Теперь, когда я пытаюсь реализовать это в Maxima и делать с ним вещи, он будет давать суммы и продукты всех видов, где пронумерованные элементы представляются как $ c_1 * a + c_2 * a + c_3 * a + c_4 * a + d_1 * b + d_2 * b + d_3 * b + d_4 * b $, который вы напишете на бумаге как $ a * \ sum_ {i = 1}^{4} c_i + b * sum_ {i = 1}^{4} $ d_i.
Итак, как я могу заставить Maxima делать подобное сокращение выражения?
Чтобы быть более конкретным, здесь фактический пример кода: (выход Maxima отмечен как ">>>")
/* let's have 4 entities: */
n: 4 $
/* F is a sum of similar components corresponding to each entity F = F_1 + F_2 + F_3 + F_4 */
F_i: a*sin(alpha + c_i) + b*d_i;
>>> b*d_i + a*sin(c_i + alpha)
/* defining the characteristics */
c(i) := concat(c, i) $
d(i) := concat(d, i) $
/* now let's see what F looks like */
/* first, we should model the fact that we have 4 entities somehow: */
F_i(i) := subst(c(i), c_i, subst(d(i), d_i, F_i)) $
/* now we can evaluate F: */
F: sum(F_i(i), i, 1, 4);
>>> b*d4 + b*d3 + b*d2 + b*d1 + a*sin(c4 + alpha) + a*sin(c3 + alpha) + a*sin(c2 + alpha) + a*sin(c1 + alpha)
/* at this point it would be nice to do something like: */
/* pretty(F); */
/* and get an output of: */
/* $b*\sum_{i=1}^{4}d_i + a*\sum_{j=1}^4 sin(c_j + \alpha)$ */
/* not to mention having Maxima write things in the same order as I do */
Таким образом, чтобы подвести итог, есть три quetions здесь:
- Как я могу рассчитать сумму из выражения, подобного тому, что находится над этим сообщением?
- Как я могу позволить Maxima узнать, о чем я говорю здесь?
- Как заставить Maxima сохранить мой порядок вещей в выходе?
Заранее спасибо.
Благодарим за ответ. Кстати, как я могу вычислить сумму по фактическим спискам значений 'c_i' и' d_i'? – admech
И что более сложно, когда фактические значения известны только подмножеством всех индексированных переменных? Например, если у нас есть сумма '(a_i + b_i)^2' для' i' в '1..4', но мы знаем только, что' a [i] 'находятся в' [4, 5, 6, 7 ] ', в то время как' b [i] 'неизвестны, тогда ожидаемым результатом будет' 126 + sum (b_i^2) + 8 * b_1 + ... '. Не уверен, что это возможно и не требуется (возможно, в таких случаях мы, люди, должны вмешаться и сделать что-то), но любопытно, предлагает ли Maxima способ сделать это. – admech
Ну, 'a: [4, 5, 6, 7]; sum ((a [i] + b [i])^2, i, 1, 4), 'дает' (b [4] +7)^2 + (b [3] +6)^2 + (b [2] +5)^2 + (b [1] +4)^2. Из этого: 'expand (%);' дает 'b [4]^2 + 14 * b [4] + b [3]^2 + 12 * b [3] + b [2]^2 + 10 * b [2] + b [1]^2 + 8 * b [1] + 126'. Таким образом, нет проблем с имеющимися значениями, а b не имеет значений, хотя форма результата несколько беспорядочна. В общем, Maxima довольна выражениями, в которых некоторые переменные имеют значения, а некоторые нет. –