查看: 150|回复: 1|关注: 0

[未答复] 关于matlab第一类完全椭圆积分函数ellipke

[复制链接]

新手

5 麦片

财富积分


050


3

主题

6

帖子

0

最佳答案
发表于 2020-1-6 14:03:54 | 显示全部楼层 |阅读模式
我需要用到第一类完全椭圆积分:K1=@(theta)(1./(1-k.^2.*(sin(theta)).^2).^0.5);    ①
对于此积分,直接使用quad求解是不精确的,需要调用ellipke函数,
即,K1=ellipke(k)    ②
②中的变量k即①中的变参数k,然而matlab中ellipke函数是只允许k为实数,
我所计算的格林函数参数k为一个复数,包含虚数部分,
请问有什么办法能让matlab的ellipke函数能处理虚数呢?
以下是我计算格林函数的程序代码。
clear
eta=10^-6;
for m=1:1:801
E=(m-401)*0.01*0.27;
z=E+1i*eta;
zz=(z^2-3)/2;
g=8*((2*zz+3)^0.5-1)^(-3/2)*((2*zz+3)^0.5+3)^-0.5;
k=0.5*g*(2*zz+3)^0.25;
K1=@(theta)(1./(1-k.^2.*(sin(theta)).^2).^0.5);
K2=@(theta)(1./(1-(1-k.^2).*(sin(theta)).^2).^0.5);
a=imag(k);
if a<0
    Kbar=quad(K1,0,pi/2);
else if a>0
        Kbar=quad(K1,0,pi/2)+2*1i*quad(K2,0,pi/2);
    else
        Kbar=Inf
    end
end
G=z/(4*pi)*g*Kbar;
A(m)=real(G);
B(m)=-imag(G);
end
plot(-4:0.01:4,A,-4:0.01:4,B)



您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

快速回复 返回顶部 返回列表