Если вы собираетесь работать с символьной математикой, рекомендуется освоиться с допущения, особенно при работе с периодическими функциями и функциями с разрывами. Вы также можете использовать fmesh
(или ezmesh
в более старых версиях) для построения сетки символьных выражений:
syms m n x y
assume(in(m,'integer') & m>=1);
assume(in(n,'integer') & n>=1);
assume(x>-pi & x<pi);
assume(y>-pi & y<pi);
A = 4*(-1)^(m+n)*(sin(m*x)*sin(n*y))/(m*n);
g = symsum(symsum(A,n,1,Inf),m,1,Inf);
fmesh(g,5*[-pi pi -pi pi],'MeshDensity',1e2); % or ezmesh(g,5*[-pi pi -pi pi]);
Это создает такой сюжет:
Другой вариант — оценить g
численно, используя subs
и double
, а затем используйте mesh
для построения графика:
[X,Y] = meshgrid(linspace(-5*pi,5*pi,100));
g2 = real(double(subs(g,{x,y},{X,Y})));
mesh(g2);
или используйте matlabFunction
для создания числовой функции:
g2 = matlabFunction(g);
[X,Y] = meshgrid(linspace(-5*pi,5*pi,100));
mesh(real(g2(X,Y)));
В обоих этих последних случаях необходимо использовать real
для отсечения незначительных мнимых частей из-за численной неточности.
person
horchler
schedule
10.11.2016
g
? Просто не делайте этого, вы все равно не сможете рисовать символы. - person Adriaan   schedule 10.11.2016for
и выйдите в определенном порядкеn
иm
и посмотрите, насколько похож результат. - person Adriaan   schedule 10.11.2016for
, я устал и полностью запутался с этим кодом, извините - person asys   schedule 10.11.2016m
, так иn
и просуммируйте в конце оба измерения. - person Adriaan   schedule 10.11.2016