Matlab: интеграция с дескриптором функции, размерность матрицы
Я использую дескрипторы функций для интеграции с несколькими переменными (примечание: я создал одну и ту же программу, используя символическую интеграцию, но это занимает очень много времени). Тем не менее, я продолжаю получать ошибку в измерениях матрицы в последней строке моего, когда я подключаю R(1), и я действительно не могу понять, что не так. Любые советы будут с благодарностью!
FUN_1 = @(y_1,y_2,x_1,x_2)sum(heaviside(y_1-1)).*dirac(1,y_2-1).*(-1/2*log((x_1-y_1).^2+(x_2-y_2).^2))+sum(dirac(y_1-1).*dirac(y_2-1));
Q_1 = @(x_1,x_2)integral2(@(y_1,y_2)FUN_1(y_1,y_2,x_1,x_2),1,2,1,2);
FUN_2 = @(y_1,y_2,x_1,x_2)sum(heaviside(y_1-1).*dirac(1,y_2-1))+sum(dirac(y_1-1).*dirac(y_2-1))*(-1/2*log((x_1-y_1).^2+(x_2-y_2).^2));
Q_2 = @(x_1,x_2)integral2(@(y_1,y_2)FUN_1(y_1,y_2,x_1,x_2),1,2,1,2);
S = @(x_1,x_2)Q_1(x_1,x_2)+Q_2(x_1,x_2);
R = @(x_2)integral(@(x_1)S(x_1,x_2),1,2);
b = R(1);
disp(b)
ОБНОВЛЕНИЕ: (вот ошибка, которую я получаю)
Matrix dimensions must agree.
Error in
boundary_general2>@(y_1,y_2,x_1,x_2)sum(heaviside(y_1-1)).*dirac(1,y_2-1).*(-1/2*log((x_1-y_1).^2+(x_2-y_2).^2))+sum(dirac(y_1-1).*dirac(y_2-1))
Error in boundary_general2>@(y_1,y_2)FUN_1(y_1,y_2,x_1,x_2)
Error in integral2Calc>integral2t/tensor (line 228)
Z = FUN(X,Y); NFE = NFE + 1;
Error in integral2Calc>integral2t (line 55)
[Qsub,esub] = tensor(thetaL,thetaR,phiB,phiT);
Error in integral2Calc (line 9)
[q,errbnd] = integral2t(fun,xmin,xmax,ymin,ymax,optionstruct);
Error in integral2 (line 106)
Q = integral2Calc(fun,xmin,xmax,yminfun,ymaxfun,opstruct);
Error in boundary_general2>@(x_1,x_2)integral2(@(y_1,y_2)FUN_1(y_1,y_2,x_1,x_2),1,2,1,2)
Error in boundary_general2>@(x_1,x_2)Q_1(x_1,x_2)+Q_2(x_1,x_2)
Error in boundary_general2>@(x_1)S(x_1,x_2)
Error in integralCalc/iterateScalarValued (line 314)
fx = FUN(t);
Error in integralCalc/vadapt (line 132)
[q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
Error in integralCalc (line 75)
[q,errbnd] = vadapt(@AtoBInvTransform,interval);
Error in integral (line 88)
Q = integralCalc(fun,a,b,opstruct);
Error in boundary_general2>@(x_2)integral(@(x_1)S(x_1,x_2),1,2)
Error in boundary_general2 (line 11)
b = R(1);
1 ответ
Не могли бы вы добавить точную ошибку, которую вы получаете? Запустив ваш код, я не получаю никакой ошибки, связанной с размером матрицы. Я получаю эту ошибку:
Ошибка при использовании Integral2Calc> Integral2T / тензор (строка 241)
Размер выходного сигнала Integrand не соответствует размеру входного файла.
Я предполагаю, что ошибка исходит от использования. * И./ операций для скалярных умножений. Если вы планируете использовать функцию R со скалярным входом, а не вектором, я предлагаю вам отредактировать функции.