Ошибка «Размеры матрицы должны совпадать» при вычислении интеграла - PullRequest
0 голосов
/ 31 мая 2018

У меня проблема с обнаружением ошибки в следующем уравнении в MATLAB:

a=@(z,q)(z.^2 + q.^2);
a1=@(q) integral(@(z) a(z,q),1,10);

Сначала я хочу сделать конечный интеграл из a только в z в числовых пределах, скажем, 1 и 10, а затем я хочу построить a1 относительно q.Когда я выполняю вышеупомянутое с помощью следующей команды:

plot(linspace(0,3e8), a1(linspace(0,3e8)))

Я получил следующую ошибку:

Matrix dimensions must agree.

Error in untitled>@(z,q)(z.^2+q.^2)

Error in untitled>@(z)a(z,q)

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 untitled>@(q)integral(@(z)a(z,q),1,10)

Вот скриншот .

Может кто-нибудь указать на ошибку.Примечание: я хотел бы иметь z и q в качестве вектора

1 Ответ

0 голосов
/ 31 мая 2018

Функция MATLAB integral по умолчанию вычисляет один интеграл, а не массив интегралов.Опция 'ArrayValued' позволит вам интегрировать функцию, которая возвращает несколько значений, например, a:

a = @(z,q)(z.^2 + q.^2);
x = linspace(0,3e8);
y = integral(@(z)a(z,q),1,10,'ArrayValued',true);
plot(x,y)
...