Левое:
(Оффтоп)
Итак, правильный код для проверки итеррационным методом такой:
Только, извините, это беспощадный код. Каждый раз возводить матрицу в степень и считать факториал?
Меня в детстве за это даже по рукам не били, было незачем: просто компы отказывались работать за нормальное время, и это был вопрос выживания: будет работать программа или не будет.
Хорошо еще, матрица два на два.
Код (для проверки) должен выглядеть как-то так (остаточные навыки: последний раз хоть три строчки программировала я четверть века назад, а Матлаб вообще первый раз нынче ночью вижу, нет у меня пакетов):
Код:
A0=A^2/2; D = A0;
for k=1:100
A0 = A0*A^3/((3*k)*(3*k+1)*(3*k+2));
D = D+A0;
end;
Это вовсе не в порядке нравоучения, а в порядке экономии времени и ресурсов. Меня когда-то учили обращать на это внимание, вот, делюсь.
Вопрос - какое символьное выражение позволило Вам его получить?
Да в общем-то тот же, что и у Вас. Я его продублировала и проверила за компанию еще и с помощью
funm. Если все верно, результаты совпадают и совпадают с тем, что выше. Кстати, с неквадратной матрицей код не работает. Ругается, что неквадратная. Могу скопировать:
Цитата:
Error using symengine
Not a square matrix.
Дальше пишете в syms, что действительно нужно.
Дальше:
Код:
S= symsum(x^(m+k*n)/factorial(m+k*n),k,0,inf);
B = funm(A,S);
B1 = symsum(A^(m+k*n)/factorial(m+k*n),k,0,inf);
B и B1 численно выдают один результат - тот, что выше.
Символьная запись может различаться.
Код:
B =
[ (33^(1/2)*(33^(1/2)/2 - 5/2)^2*(33^(1/2)/6 + 1/2)*hypergeom([], [4/3, 5/3], -(33^(1/2)/2 - 5/2)^3/27))/22 + (33^(1/2)*(33^(1/2)/2 + 5/2)^2*(33^(1/2)/6 - 1/2)*hypergeom([], [4/3, 5/3], (33^(1/2)/2 + 5/2)^3/27))/22,
(33^(1/2)*(33^(1/2)/2 + 5/2)^2*(33^(1/2)/6 - 1/2)*(33^(1/2) + 3)*hypergeom([], [4/3, 5/3], (33^(1/2)/2 + 5/2)^3/27))/132 - (33^(1/2)*(33^(1/2)/2 - 5/2)^2*(33^(1/2)/6 + 1/2)*(33^(1/2) - 3)*hypergeom([], [4/3, 5/3], -(33^(1/2)/2 - 5/2)^3/27))/132]
[(33^(1/2)*(33^(1/2)/2 + 5/2)^2*hypergeom([], [4/3, 5/3], (33^(1/2)/2 + 5/2)^3/27))/22 - (33^(1/2)*(33^(1/2)/2 - 5/2)^2*hypergeom([], [4/3, 5/3], -(33^(1/2)/2 - 5/2)^3/27))/22,
(33^(1/2)*(33^(1/2)/2 - 5/2)^2*(33^(1/2) - 3)*hypergeom([], [4/3, 5/3], -(33^(1/2)/2 - 5/2)^3/27))/132 + (33^(1/2)*(33^(1/2)/2 + 5/2)^2*(33^(1/2) + 3)*hypergeom([], [4/3, 5/3], (33^(1/2)/2 + 5/2)^3/27))/132]
Код:
B1 =
[ ((33^(1/2)/2 - 5/2)^2*hypergeom([], [4/3, 5/3], -(33^(1/2)/2 - 5/2)^3/27))/4 + ((33^(1/2)/2 + 5/2)^2*hypergeom([], [4/3, 5/3], (33^(1/2)/2 + 5/2)^3/27))/4 + (33^(1/2)*(33^(1/2)/2 - 5/2)^2*hypergeom([], [4/3, 5/3], -(33^(1/2)/2 - 5/2)^3/27))/44 - (33^(1/2)*(33^(1/2)/2 + 5/2)^2*hypergeom([], [4/3, 5/3], (33^(1/2)/2 + 5/2)^3/27))/44,
(33^(1/2)*(33^(1/2)/2 + 5/2)^2*hypergeom([], [4/3, 5/3], (33^(1/2)/2 + 5/2)^3/27))/33 - (33^(1/2)*(33^(1/2)/2 - 5/2)^2*hypergeom([], [4/3, 5/3], -(33^(1/2)/2 - 5/2)^3/27))/33]
[ (33^(1/2)*(33^(1/2)/2 + 5/2)^2*hypergeom([], [4/3, 5/3], (33^(1/2)/2 + 5/2)^3/27))/22 - (33^(1/2)*(33^(1/2)/2 - 5/2)^2*hypergeom([], [4/3, 5/3], -(33^(1/2)/2 - 5/2)^3/27))/22,
((33^(1/2)/2 - 5/2)^2*hypergeom([], [4/3, 5/3], -(33^(1/2)/2 - 5/2)^3/27))/4 + ((33^(1/2)/2 + 5/2)^2*hypergeom([], [4/3, 5/3], (33^(1/2)/2 + 5/2)^3/27))/4 - (33^(1/2)*(33^(1/2)/2 - 5/2)^2*hypergeom([], [4/3, 5/3], -(33^(1/2)/2 - 5/2)^3/27))/44 + (33^(1/2)*(33^(1/2)/2 + 5/2)^2*hypergeom([], [4/3, 5/3], (33^(1/2)/2 + 5/2)^3/27))/44]
-- 01.05.2019, 16:53 --Но
для Математики очень хороший показатель: все будет сводиться к экспоненте и синусу. Должно, по крайней мере.
Matlab до этого не додумывается.