function [e]=mlf(alf,bet,c,fi)
%
% MLF -- Mittag-Leffler function.
% MLF (alpha,beta,Z,P) is the Mittag-Leffler function E_{alpha,beta}(Z)
% evaluated with accuracy 10^(-P) for each element of Z.
% alpha and beta are scalars, P is integer, Z can be a vector or
% a two-dimensional array. The output is of the same size as Z.
% (C) 2001-2012 Igor Podlubny, Martin Kacenak
% Last update: 2012-09-07
[cRows, cCols] = size(c);
c=m2v(c);
if nargin<4 , fi=6; end
if nargin<3 || alf<=0 || fi<=0
else
[r,s]=size(c); [r1,s1]=size(alf); [r2,s2]=size(bet);
mx=max([r,s]); mx1=max([r1,s1]); mx2=max([r2,s2]);
if (r>1 && s>1) || (r1>1 && s1>1) || (r2>1 && s2>1) || (mx1>1 && mx2>1)
sprintf('wrong number of input parameters')
else
if mx1>mx2 , mxx=mx1; e=zeros(mx,mx1);
else mxx=mx2; e=zeros(mx,mx2);end;
for i1= 1:mx
for i2=1:mxx
if r>s , z=c(i1,1); else z=c(1,i1); end
if mx1>mx2 , if r1>s1 , alfa=alf(i2,1); else alfa=alf(1,i2);end, beta=bet;
else if r2>s2 ,beta=bet(i2,1); else beta=bet(1,i2); end, alfa=alf; end
if beta<0 , rc=(-2*log(10^(-fi)*pi/(6*(abs(beta)+2)*(2*abs(beta))^(abs(beta)))))^alfa;
else rc=(-2*log(10^(-fi)*pi/6))^alfa; end
r0=max([1,2*abs(z),rc]);
if (alfa==1 && beta==1)
e(i1,i2)=exp(z);
else
if (alfa<1 && abs(z)<=1) || ( (1<=alfa && alfa <2) && abs(z)<=floor(20/(2.1-alfa)^(5.5-2*alfa))) || (alfa>=2 && abs(z)<=50)
oldsum=0;
k=0;
while (alfa*k+beta)<=0
k=k+1;
end
newsum=z^k/gamma(alfa*k+beta);
while newsum~=oldsum
oldsum=newsum;
k=k+1;
term=z^k/gamma(alfa*k+beta);
newsum=newsum+term;
k=k+1;
term=z^k/gamma(alfa*k+beta);
newsum=newsum+term;
end
e(i1,i2)=newsum;
else
if (alfa<=1 && abs(z)<=fix(5*alfa+10))
if ((abs(angle(z))>pi*alfa) && (abs(abs(angle(z))-(pi*alfa))>10^(-fi)))
if beta<=1
e(i1,i2)=rombint('K',0,r0,fi,alfa,beta,z);
else
eps=1;
e(i1,i2)=rombint('K',eps,r0,fi,alfa,beta,z)+ ...
rombint('P',-pi*alfa,pi*alfa,fi,alfa,beta,z,eps);
end
elseif (abs(angle(z))<pi*alfa && abs(abs(angle(z))-(pi*alfa))>10^(-fi))
if beta<=1
e(i1,i2)=rombint('K',0,r0,fi,alfa,beta,z)+ ...
(z^((1-beta)/alfa))*(exp(z^(1/alfa))/alfa);
else
eps=abs(z)/2;
e(i1,i2)=rombint('K',eps,r0,fi,alfa,beta,z)+ ...
rombint('P',-pi*alfa,pi*alfa,fi,alfa,beta,z,eps)+ ...
(z^((1-beta)/alfa))*(exp(z^(1/alfa))/alfa);
end
else
eps=abs(z)+0.5;
e(i1,i2)=rombint('K',eps,r0,fi,alfa,beta,z)+ ...
rombint('P',-pi*alfa,pi*alfa,fi,alfa,beta,z,eps);
end
else
if alfa<=1
if (abs(angle(z))<(pi*alfa/2+min(pi,pi*alfa))/2)
% alfa
newsum=(z^((1-beta)/alfa))*exp(z^(1/alfa))/alfa;
for k=1:floor(fi/log10(abs(z)))
newsum=newsum-((z^(-k))/gamma(beta-alfa*k));
% k
end
e(i1,i2)=newsum;
else
newsum=0;
for k=1:floor(fi/log10(abs(z)))
newsum=newsum-((z^-k)/gamma(beta-alfa*k));
end
e(i1,i2)=newsum;
end
else
if alfa>=2
m=floor(alfa/2);
sum=0;
for h=0:m
zn=(z^(1/(m+1)))*exp((2*pi*1i*h)/(m+1));
sum=sum+mlf(alfa/(m+1),beta,zn,fi);
end
e(i1,i2)=(1/(m+1))*sum;
else
e(i1,i2)=(mlf(alfa/2,beta,z^(1/2),fi)+mlf(alfa/2,beta,-z^(1/2),fi))/2;
end
end
end
end
end
end
end
end
end
if isreal(c)
e = real(e);
end
e = v2m(e,cRows,cCols);
没有合适的资源?快使用搜索试试~ 我知道了~
mittag_leffler函数_Mittag_Leffler_
共7个文件
m:7个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 68 浏览量
2021-10-03
11:57:18
上传
评论
收藏 5KB ZIP 举报
温馨提示
计算高精度的mittag_leffler函数值
资源推荐
资源详情
资源评论
收起资源包目录
mittag_leffler函数.zip (7个子文件)
mittag_leffler函数
right.m 214B
mlf.m 5KB
m2v.m 37B
rombint.m 628B
K.m 163B
P.m 207B
v2m.m 148B
共 7 条
- 1
资源评论
- 大耳贼4202022-07-11这个资源值得下载,资源内容详细全面,与描述一致,受益匪浅。
何欣颜
- 粉丝: 69
- 资源: 4732
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- #P0015. 全排列 超级简单
- pta题库答案c语言之排序4统计工龄.zip
- pta题库答案c语言之树结构7堆中的路径.zip
- pta题库答案c语言之树结构3TreeTraversalsAgain.zip
- pta题库答案c语言之树结构2ListLeaves.zip
- pta题库答案c语言之树结构1树的同构.zip
- 基于C++实现民航飞行与地图简易管理系统可执行程序+说明+详细注释.zip
- pta题库答案c语言之复杂度1最大子列和问题.zip
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功