Возникла проблема в GNU Octave с вычислением определенного интеграла
Задача стоит такая: в GNU Octave вычислить значение функции (Преобразование Френеля) и основная проблема с пониманием того, как в Октаве вычисляются интегралы. Прошу не предлагать C++, Python и другие ЯП и программы, о таких опциях я итак знаю, они мне не подходят.
Прикрепляю код:
clear all;
lambda = 0.0005;
T = 1;
f = 100;
z = 150;
k = 2*pi/lambda;
alpha = 1.5;
T = 1;
x = linspace (0, 2*pi, 200);
u = exp(-i*x.^2/2*f + i*alpha*x.^3);
for j = 1:200
x_u(j) = x(j)-u(j);
endfor;
integ1 = exp(-i*x.^2/2*f + i*alpha*x.^3 + i*k*(x_u).^2);
integ2 = quad(integ1, -T, T);
G = -i/(lambda*z)*exp(i*k*z)*integ1;
Соответственно ошибка в предпоследей строке у первого аргумента, Октав просит сделать его строкой или функцией. Я не очень понимаю, как надо правильно ввести функцию, чтобы он прекратил на меня ругаться.
Ответы (1 шт):
Не очень уверен, что у Вас получится посчитать определенный интеграл с комплексными числами через quad. Ошибка у Вас в том, что integ1 - это число, а не функция. Сделайте ее анонимной функцией
integ1 = @(x) exp(-i*x.^2/2*f + i*alpha*x.^3 + i*k*(x_u).^2);
Не понял только, что такое x_u в Вашем случае. Если это константа, ставьте как константу.