Недавно я начал использовать Matlab и пытаюсь построить мнимую часть функции. Я вижу, что где-то делаю ошибку, потому что у меня есть график, показывающий, что мне нужно получить, а я получаю что-то другое. Вот ссылка на график, который мне нужно получить, который я получаю, и функцию, которую я рисую:
Я знаю, что эта функция имеет сингулярность на частоте около 270 Гц, и я не знаю, сможет ли «квадроцикл» решить интеграл в таком случае. Вы, ребята, наверное, знаете, но тета-функция внутри интеграла — это хевисайд, и я не знаю, может быть, это вызывает проблему? Что-то не так, что я здесь делаю? Вот код Matlab, который я написал:
clear all
clc
ff=1:10:1000;
K1=(2*3)*log(2*cosh(135/6))/pi;
theta1=ones(size(ff));
theta1(ff<270)=0;
I1=zeros(size(ff));
for n = 1:numel(ff)
f = ff(n);
I1(n)= K1/f + (f/pi)*quadgk(@(x)(sinh(x/3)/(cosh(135/3)+cosh(x/3))-theta1(n))./((f^2)-4*(x.^2)), 0, inf);
end
plot(ff,I1, 'b');
hold on
axis([0 1000 -0.3 1])
quadgk
, так как это, похоже, проблема. Я не могу помочь вам с этим, хотя. - person Fraukje   schedule 11.09.2013quad
(см. mathworks.nl/help/matlab /ref/quad.html): если функция сингулярна в точках внутри (a,b), запишите интеграл как сумму интегралов по подинтервалам с особыми точками в качестве конечных точек, вычислите их с помощьюquadgk
и добавьте результаты, достижения. Тем не менее, все еще кажется, что в вашей функции есть несколько особенностей...? - person Fraukje   schedule 11.09.2013theta
прерывистый, мы найдем этот шаг и в функцииI1
. - person fpe   schedule 11.09.2013