我正在尝试使用Matlab计算此积分的值
此处其他参数已在程序的前面部分定义或计算如下
N = 2;
sigma = [0.01 0.1];
l = [15];
meu = 4*pi*10^(-7);
f = logspace ( 1, 6, 500);
w=2*pi.*f;
for j = 1 : length(f)
q2(j)= sqrt(sqrt(-1)*2*pi*f(j)*meu*sigma(2));
q1(j)= sqrt(sqrt(-1)*2*pi*f(j)*meu*sigma(1));
C2(j)= 1/(q2(j));
C1(j)= (q1(j)*C2(j) + tanh(q1(j)*l))/(q1(j)*(1+q1(j)*C2(j)*tanh(q1(j)*l)));
Z(j) = sqrt(-1)*2*pi*f(j)*C1(j);
Apprho(j) = meu*(1/(2*pi*f(j))*(abs(Z(j))^2));
Phi(j) = atan(imag(Z(j))/real(Z(j)));
end
%integration part
c1=w./(2*pi);
rho0=1;
fun = @(x) log(Apprho(x)/rho0)/(x.^2-w^2);
c2= integral(fun,0,Inf);
phin=pi/4-c1.*c2;
我收到这样的错误
任何人都可以帮忙告诉我哪里出错了。提前谢谢
答案 0 :(得分:1)
在单独的* .m函数文件中定义Apprho
,而不是将其存储在数组中:
function [ result ] = Apprho(x)
%
% Calculate f and Z based on input argument x
%
% ...
%
meu = 4*pi*10^(-7);
result = meu*(1/(2*pi*f)*(abs(Z)^2));
end
你如何计算f和Z取决于你。
MATLAB的integral
通过在许多不同的Apprho
值处重复调用函数(在本例中为x
)来工作。 x
调用的integral
值不一定与原始代码中使用的1: length(f)
值相对应,这就是您收到错误的原因。