Python quad2和MATLAB integral2返回不同的结果-问答-阿里云开发者社区-阿里云

开发者社区> kun坤> 正文

Python quad2和MATLAB integral2返回不同的结果

2019-12-28 13:51:53 431 0

我一直在用Python重写一些MATLAB代码,在尝试用Python执行二重积分时遇到了一些问题。 下面的MATLAB代码为Prad返回一个值2.5133

               ant.Frequency = 3e8;
               N = 5;
               lambda = 3e8/ant.Frequency;
               d = 0.5*lambda;
               k = 2*pi/lambda;

               theta = linspace(0,180,180)*pi/180;
               phi = linspace(0,360,180) * pi/180;

               theta0 = 0*pi/180;
               phi0 = 0*pi/180;

               PsiX = (k.*d.*sin(theta).*cos(phi) - k*d*sin(theta0)*cos(phi0));
               PsiY = (k.*d.*sin(theta).*sin(phi) - k*d*sin(theta0)*sin(phi0));
               AF = ((sin(N.*PsiX./2)./(N.*sin(PsiX./2)))).*((sin(N.*PsiY./2)./(N.*sin(PsiY./2))));

               Pfun = @(x,y) ((1/N.*(sin(N.*(k.*d.*sin(x).*cos(y) - k.*d.*sin(theta0).*cos(phi0))./2)...
                   ./sin((k.*d.*sin(x).*cos(y) - k.*d.*sin(theta0).*cos(phi0))./2))).^2).*sin(x);

               Prad = integral2(Pfun,0,pi,0,2*pi);

我尝试在Python中创建相同的行为,结果Prad值为3.209E-16

    theta = np.linspace(0,180,180)*np.pi/180
    phi = np.linspace(0,360,180)*np.pi/180
    theta0 = np.array([0])
    phi0 = np.array([0])

    wavelength = 3E8/3E8
    k = 2 * np.pi/wavelength
    d = 0.5 * wavelength
    N = 5

    PsiX = (k*d*np.sin(theta)*np.cos(phi) - k*d*np.sin(theta0)*np.cos(phi0))
    PsiY = (k*d*np.sin(theta)*np.sin(phi) - k*d*np.sin(theta0)*np.sin(phi0))

    AF = ((np.sin(N*PsiX/2)/(N*np.sin(PsiX/2)))) * ((np.sin(N*PsiY/2)/(N*np.sin(PsiY/2))))

    Pfun = lambda x,y: ((1/N*(np.sin(N*(k*d*np.sin(x)*np.cos(y) - k*d*np.sin(theta0)*np.cos(phi0))/2)/np.sin((k*d*np.sin(x)*np.cos(y) - k*d*np.sin(theta0)*np.cos(phi0))/2)))**2)*np.sin(x)
    Prad = dblquad(Pfun,0,np.pi,lambda x: 0, lambda x: 2*np.pi)

即使使用MATLAB dblquad函数也可以得到期望的结果。我在Python代码中有语法错误吗?还是我误解了某些功能? 问题来源StackOverflow 地址:/questions/59381403/python-quad2-and-matlab-integral2-returning-different-results

取消 提交回答
全部回答(0)
相关问答

3

回答

专有云升级aliyun-python-sdk-core后报错。而location-readonly.aliyuncs.com域名可以通过curl访问。

萌萌怪兽 2018-10-15 20:46:31 51485浏览量 回答数 3

6

回答

osscmd,一条命令上传和下载的python工具

wood23 2012-06-30 12:08:18 39860浏览量 回答数 6

5

回答

设置跨域资源共享CORS并使用JS表单PostObject直接上传到OSS

wood23 2015-02-12 08:11:09 40598浏览量 回答数 5

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 146751浏览量 回答数 22

41

回答

OSS FTP工具发布啦

oss-dev 2015-12-23 16:58:56 65996浏览量 回答数 41

42

回答

【精品问答集锦】Python热门问题

小六码奴 2019-05-30 15:27:34 135470浏览量 回答数 42

249

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 302568浏览量 回答数 249

24

回答

【精品问答】python技术1000问(1)

问问小秘 2019-11-15 13:25:00 471283浏览量 回答数 24

30

回答

基础语言百问-Python

薯条酱 2017-05-17 18:01:13 64730浏览量 回答数 30

21

回答

OSS新手视频教程!

聚小编 2013-01-14 18:09:51 57978浏览量 回答数 21
+关注
0
文章
13401
问答
推荐问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载