2014 dxdy logo

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

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




На страницу 1, 2, 3  След.
 
 Символьное вычисление суммы ряда в Матлаб
Сообщение29.04.2019, 15:23 
Здравствуйте,
Для точного (символьного) вычисления суммы ряда в Матлаб имеется замечательная функция: symsum.
Все бы хорошо, но мой аргумент не скаляр, а матрица.
Матлаб применяет полученное символьное выражение суммы ряда к каждому элементу матрицы-аргумента (по-отдельности). Естественно, результат отличается от применения символьного выражения к матрице-аргументу в целом (например, квадрат матрицы не равен матрице, каждый элемент которой возведен в квадрат).

Я попытался применить символьное выражение к матрице в целом с помощью фунции funm(A, 'name'), которая должна применять функцию 'name' к матричному аргументу в целом. Однако, символьное выражение суммы моего ряда содержит гипер-геометрическую функцию, с котрой funm почему-то "не дружит" (выдает ошибку).

Буду признателен за любую помошь (в том числе рассматриваю варианты реализации "вне" матлаба с последующей интеграцией результата в матлаб).

Спасибо.

 
 
 
 Re: Символьное вычисление суммы ряда в Матлаб
Сообщение30.04.2019, 08:53 
Попробуйте получить явную формулу для $A^n$ и просуммируйте каждый элемент матрицы отдельно.

 
 
 
 Re: Символьное вычисление суммы ряда в Матлаб
Сообщение30.04.2019, 11:10 
Padawan в сообщении #1390304 писал(а):
Попробуйте получить явную формулу для $A^n$ и просуммируйте каждый элемент матрицы отдельно.

Ряд имеет очень простой вид:
$$\sum\limits_{k=0}^{\infty}\frac{A^{m+nk}}{(m+nk)!}$
Однако получить для него явную формулу в общем виде (для любых натуральных $m $ и $n$) лично мне не удалось.
Может быть Вам это под силу?

 
 
 
 Re: Символьное вычисление суммы ряда в Матлаб
Сообщение30.04.2019, 21:53 
maximkarimov
Не очень понятно, в каком виде Вы хотите получить результат.
Вы хотите сумму ряда для конкретной матрицы? - это одно. (1)
Вы хотите абстрактный результат в виде функциональной зависимости от матрицы, типа $\exp A$ - это другое. (2)
И в последнем случае маловероятно, что для всех значений параметров удастся получить универсальную запись.

В случае (1) тоже все не единообразно, но полезно начать с суммирования соотв. числового ряда. Степенного. То есть с "матрицей" $1\times 1$.

 
 
 
 Re: Символьное вычисление суммы ряда в Матлаб
Сообщение30.04.2019, 22:08 
Сумма ряда выражается через функцию Миттаг-Леффлера от $A^n$, с которой Математика работает (не знаю, внедрена ли функция Миттаг-Леффлера в МАТЛАБ).

 
 
 
 Re: Символьное вычисление суммы ряда в Матлаб
Сообщение30.04.2019, 22:17 
Функция Миттаг-Леффлера - с точностью до множителя в аккурат этот ряд. Я так понимаю, у ТС вопрос в том или ином преобразовании/вычислении, а не навешивании на его ряд бирочки с названием.
Хотя - ТС виднее.

 
 
 
 Re: Символьное вычисление суммы ряда в Матлаб
Сообщение30.04.2019, 23:34 
Markiyan Hirnyk в сообщении #1390443 писал(а):
Сумма ряда выражается через функцию Миттаг-Леффлера от $A^n$, с которой Математика работает (не знаю, внедрена ли функция Миттаг-Леффлера в МАТЛАБ).


Эта функция не вполне соответствует моему ряду (отличается показатель степени аргумента). Но это мелочи. Нашел реализацию функции Миттаг-Леффлера в Матлаб. Проверил. Та же самая ерунда - для матричного аргумента вычисления производятся по-элементно. Вообщем пока по-прежнему приходится вычислять итерационным методом (со всеми вытекающими).

 
 
 
 Re: Символьное вычисление суммы ряда в Матлаб
Сообщение30.04.2019, 23:39 
maximkarimov
Может, приведете конкретный пример (попроще, пробный), на котором видно, что Вы считаете и что получается?

 
 
 
 Re: Символьное вычисление суммы ряда в Матлаб
Сообщение30.04.2019, 23:41 
Есть сильное подозрение, что в вольфрам-математике может быть та же самая проблема (для матричного аргумента - расчет только поэлементно).

-- 01.05.2019, 00:54 --

Otta в сообщении #1390489 писал(а):
maximkarimov
Может, приведете конкретный пример (попроще, пробный), на котором видно, что Вы считаете и что получается?


Пожалуйста:
$$\sum\limits_{k=0}^{\infty}\frac{A^{2+3k}}{(2+3k)!}$

Если ввести это выражение хоть в вольфрам-альфа, хоть в матлабе - можно получить соответствующие формулы. Но когда вы подставите аргумент - расчет будет корректно выполнен только если А - скаляр. А если аргумент матрица (а у меня именно так), то на выходе получаем ерунду (по-элементный расчет). Можете проверить сами - подставьте, например, прямоугольную матрицу. Очевидно, что расчет вообще не должен выполняться (в степень прямоугольную матрицу не возвести), ан нет! Матлаб выдает результат - аккуратную прямоугольную матрицу. Если углубиться и проверить что за цифирьки в матрице-результате, то сразу все становится ясно - расчет выполнен для каждого элемента матрицы по отдельности.
Понятна ли теперь проблема?

 
 
 
 Re: Символьное вычисление суммы ряда в Матлаб
Сообщение01.05.2019, 00:45 
Ну не знаю. Ввела. Орет, что матрица не квадратная. Я ее понимаю )

Можно на соответствующий фрагмент кода глянуть?

 
 
 
 Re: Символьное вычисление суммы ряда в Матлаб
Сообщение01.05.2019, 01:04 
Otta в сообщении #1390510 писал(а):
Ну не знаю. Ввела. Орет, что матрица не квадратная. Я ее понимаю )

Можно на соответствующий фрагмент кода глянуть?


Подозреваю, что "орет" когда Вы для одного значения k просите посчитать по этой формуле, а не получить формулу для суммы ряда и подставить в нее аргумент.

Вы в какой среде работаете? В Матлабе код всего три строчки, но не понимаю как их сюда вставить, чтобы синтаксис сохранить. Подскажите как это сделать?

 
 
 
 Re: Символьное вычисление суммы ряда в Матлаб
Сообщение01.05.2019, 01:07 
maximkarimov в сообщении #1390514 писал(а):
Подскажите как это сделать?

Подсветка синтаксиса > Matlab над окном ответа.
Или тег code.

 
 
 
 Re: Символьное вычисление суммы ряда в Матлаб
Сообщение01.05.2019, 01:12 
Otta в сообщении #1390516 писал(а):
maximkarimov в сообщении #1390514 писал(а):
Подскажите как это сделать?

Подсветка синтаксиса > Matlab над окном ответа.
Или тег code.

Используется синтаксис Matlab M
syms A k
S=symsum(A^(m+k*n)/factorial(m+k*n),k,0,inf);
f=matlabFunction(S);
f(X)
 


Для получения формулы суммы конкретного ряда прежде (выше) надо указать аргументы: m и n, а для выполнения расчета надо указать аргумент X.

 
 
 
 Re: Символьное вычисление суммы ряда в Матлаб
Сообщение01.05.2019, 06:42 
Вот пример а Математике:
Код:
m = MatrixFunction[#^2*MittagLefflerE[2, #] &, {{3, 1}, {0, Pi}}^3]

$\left(
\begin{array}{cc}
 729 \cosh \left(3 \sqrt{3}\right) & \frac{\pi ^6 \cosh \left(\pi ^{3/2}\right)}{\pi ^3-27}-\frac{729 \cosh \left(3 \sqrt{3}\right)}{\pi ^3-27} \\
 0 & \pi ^6 \cosh \left(\pi ^{3/2}\right) \\
\end{array}
\right)$
Код:
Map[N, m]

$\left(
\begin{array}{cc}
 65822. & 15006.4 \\
 0. & 125942. \\
\end{array}
\right)$
Цитата из справки
Цитата:
A matrix function transforms a matrix to another matrix. For convergent power series, MatrixFunction[f,m] effectively evaluates the power series for the function f with ordinary powers replaced by matrix powers

 
 
 
 Re: Символьное вычисление суммы ряда в Матлаб
Сообщение01.05.2019, 07:09 
Аватара пользователя
maximkarimov в сообщении #1390187 писал(а):
Однако, символьное выражение суммы моего ряда содержит гипер-геометрическую функцию, с котрой funm почему-то "не дружит" (выдает ошибку).


Вроде для гипергеометрической функции есть пакет

http://www-math.mit.edu/~plamen/software/mhgref.html

И там статья с описанием алгоритма прилагается. То ли это, что нужно, я не разбирался.

-- Вт, 30 апр 2019 21:11:41 --

А, может быть это и не то:

https://en.wikipedia.org/wiki/Hypergeom ... x_argument

-- Вт, 30 апр 2019 21:13:35 --

А вот это больше похоже на то что нужно:

https://www.mathworks.com/matlabcentral ... -arguments

 
 
 [ Сообщений: 33 ]  На страницу 1, 2, 3  След.


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