MatLab中的数值积分使用积分命令

时间:2015-04-24 22:28:03

标签: matlab math

我正在尝试使用Matlab计算此积分的值 enter image description here

此处其他参数已在程序的前面部分定义或计算如下

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;

我收到这样的错误 enter image description here

任何人都可以帮忙告诉我哪里出错了。提前谢谢

1 个答案:

答案 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)值相对应,这就是您收到错误的原因。