сумма::
Добавьте шаблоны для определенного и неопределенного суммирования
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
sum::addpattern(pat
,k
,res
, <[var, …], <[cond, …]>
>) sum::addpattern(pat
,k = a .. b
,res
, <[var, …], <[cond, …]>
>)
sum::addpattern(pat, k, res)
учит sum
использовать.
sum::addpattern(pat, k=a..b, res)
преподает sum
это.
Часть компьютерной алгебры способности к суммированию системы происходит от математического сопоставления с образцом. Сопоставитель MuPAD® может быть расширен во времени выполнения с sum::addpattern
.
Для определенного суммирования каждый связанный является или арифметическим выражением, которое может содержать переменные шаблона или идентификатор, который может использоваться в качестве переменной в терминах условия и результате.
Пользователи могут включать переменные шаблона и условия на них путем предоставления дополнительных аргументов. Эти условия, а также результат, защищены от преждевременной оценки, т.е. не необходимо записать hold( _not @ iszero )(a^2-b)
, простой not iszero(a^2-b)
достаточен.
Различие между not iszero(a^2-b)
и a^2-b <> 0
, когда дали как условие - то, что последний учитывает предположения на идентификаторах, с которыми сталкиваются, в то время как первое не делает. Cf. Пример 4.
Шаблоны, введенные sum::addpattern
, также используются в рекурсивных вызовах sum
и автоматически расширены, чтобы включать простые приложения суммирования заменой переменных. Cf. Пример 1.
Вызов sum::addpattern
изменяет выражения, возвращенные будущими вызовами sum
.
Не удивительно, MuPAD не знает, как сделать неопределенное суммирование с функциональным foo:
sum(foo(n), n)
Мы добавляем шаблон для этой функции:
sum::addpattern(foo(k), k, bar(k))
sum(foo(n), n)
Обратите внимание на то, что этот шаблон также используется косвенно:
sum(foo(k+3),k)
Определенные суммы могут быть добавлены так же:
sum::addpattern(foo(k), k=1..infinity, bar(k))
sum(foo(k), k=1..infinity)
Вышеупомянутый шаблон будет также совпадать с этой определенной суммой различным границам:
sum(foo(k), k=3..infinity)
Обратите внимание на то, что этот шаблон также используется косвенно:
sum(foo(k)+1/k^3, k=1..infinity)
Границы могут также быть переменными, происходящими в шаблоне или результате:
sum::addpattern(foo(k,a), k=0..a, bar(a), [a])
sum(foo(k,7), k=0..7)
Имя переменной суммирования, используемой в вызове sum::addpattern
, не ограничивает более поздние вызовы sum
:
sum::addpattern(x^(2*i+1)/(2*i+1), i=0..infinity, piecewise([abs(x) < 1, arccoth(x) + PI/2*sqrt(-1/x^2)*x]), [x])
sum(x^(2*n+1)/(2*n+1),n=0..infinity)
Условия проверяются с помощью is
и поэтому реагируют на предположения:
sum::addpattern(binomial(-1/2, k)*x^(2*k^2 + 1)/(2*k + 1), k = 0..infinity, arcsinh(x), [x], [abs(x) < 1])
sum(binomial(-1/2, k)*x^(2*k^2 + 1)/(2*k + 1), k = 0..infinity) assuming -1 < x < 1
sum(binomial(-1/2, k)*x^(2*k^2 + 1)/(2*k + 1), k = 0..infinity) assuming x > 1
Если MuPAD не может решить, удовлетворены ли условия, кусочный заданный объект возвращен:
sum(binomial(-1/2, k) * x^(2*k^2+1)/(2*k+1), k = 0..infinity)
Если или условия не удовлетворены или замена значениями в урожаи результата ошибка, шаблон проигнорирован. Нет никакой потребности включать условие принять меры против ошибки, MuPAD просто вычисляет сумму, как обычно:
sum::addpattern(c^k, k=0..n, (c^n-1)/(c-1), [c]); sum(1^k, k=0..n)
|
Шаблон, чтобы соответствовать: арифметическое выражение в |
|
Индекс суммирования: идентификатор. |
|
Контуры для определенного суммирования: арифметические выражения или идентификаторы. |
|
Шаблон для результата суммирования: арифметическое выражение |
|
“переменные шаблона”: заполнители в |
|
Условия на переменных шаблона |
Объект типа DOM_NULL