24小时热门版块排行榜    

查看: 589  |  回复: 4

wocamuchong

铁虫 (小有名气)

[求助] 怎样加快这个代码的运行?

Hi,

我要在Mathematica里做Hankel transform(它就是像傅立叶变换,但是以Bessel函数为base),具体的转换公式可以参考wiki,http://en.wikipedia.org/wiki/Hankel_transform。但是我在Mathematica里直接用数值积分的办法来进行转换,好像很慢。

我上传我的代码。其中
a : 我要转换的离散数值,可以是任何函数。第一个index是坐标r,第二个index是具体数值。
然后我做interpolation得到他的插值的函数。
然后用NIntegrate来算Hankel transform。

像傅立叶转换一样,Hankel transform也有逆转换。倒数第二行就是逆转换的定义,然后最后一行给出的数值应该是落于{0.9986238244, 0.0002427139}, {1.0101920314, 0.0002393707}之间,这个是从a里读出来的数据。

但是这个运行的时间好像太长,我运行了20分钟,还没有结果。不知道大家有没有更好的办法,我Mathematica不是很熟。谢谢。
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : xiaomuchong.nb
  • 2014-10-13 20:40:46, 45.25 K

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

walk1997

金虫 (著名写手)

几个问题
1. 数学,这个变换的存在对这个函数是有要求的吧,
要求这个函数的绝对值|f(r)|*r在0到无穷间的积分区域收敛吧.
看你的函数,原始差不多只是定义在小量到20左右,并且在这附近都是常数,一方面你插值以后外推到无穷远处不太合理,另外一方面要是在大x都取成常数的话,也不符合做这个变换的条件。我觉得你这个时候不应该用到变换吧,而应该用类似的无穷级数展开,比如..
f[w]=\sum_{1} BesselJ[0,\sqrt{mu_m \rho}]
2. 另外,如果直接截断第一个积分到20,给出的结果感觉差不多
--------------
r1 = 1;
NIntegrate[
  ifun[r] *r* BesselJ[0, k*r]*BesselJ[0, k*r1]*k, {k, 0,
   Infinity}, {r, 0, 20}, PrecisionGoal -> 2,
  MaxRecursion -> 40] // AbsoluteTiming
------------
{1092.899510,0.000242286}
2楼2014-10-14 12:34:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

walk1997

金虫 (著名写手)

btw: 如果是真积分从0到无穷的话,对于Beesel这样的振荡函数,可能采用Method -> {"DoubleExponentialOscillatory"} 会给出更可靠的结果
有时候默认的结果虽然并不报错 但可能并不是真实的结果.
3楼2014-10-14 12:44:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wocamuchong

铁虫 (小有名气)

你说的对,我没注意Mathematica里的interpolation是怎么做的,我看了下,他就是让它变成常数在很大的r,若是非零常数就不收敛了,就像你指出的。我还以为Mathematica会给一个compact support,所以外面都是零。

谢谢了,我用discrete的定义式直接做了,好像可以inverse回来得到原来的input。
4楼2014-10-14 22:05:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

大家的诚

银虫 (小有名气)

你好,请问离散的方法如何实现?
5楼2015-12-10 09:09:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wocamuchong 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 350求调剂 +6 weudhdk 2026-03-19 6/300 2026-03-23 15:47 by tangyuan0840221
[考研] 0854 考研调剂 招生了!AI 方向 +3 pk3725069 2026-03-19 14/700 2026-03-23 14:44 by Jack_333
[考研] 0854电子信息求调剂 324 +3 Promise-jyl 2026-03-23 3/150 2026-03-23 13:43 by wangkm
[考研] 求老师收我 +3 zzh16938784 2026-03-23 3/150 2026-03-23 12:56 by ztnimte
[考研] 求调剂 +6 十三加油 2026-03-21 6/300 2026-03-22 17:00 by i_cooler
[考研] 一志愿中南化学(0703)总分337求调剂 +9 niko- 2026-03-19 10/500 2026-03-22 16:08 by ColorlessPI
[考研] 求调剂 +5 Zhangbod 2026-03-21 7/350 2026-03-22 13:13 by Zhangbod
[考研] 303求调剂 +5 安忆灵 2026-03-22 6/300 2026-03-22 12:46 by 素颜倾城1988
[考研] 初试 317 +7 半拉月丙 2026-03-20 7/350 2026-03-21 22:26 by peike
[考研] 336求调剂 +5 rmc8866 2026-03-21 5/250 2026-03-21 17:24 by 学员8dgXkO
[考研] 299求调剂 +5 shxchem 2026-03-20 7/350 2026-03-21 17:09 by ColorlessPI
[考研] 266求调剂 +3 哇呼哼呼哼 2026-03-20 3/150 2026-03-21 16:46 by barlinike
[考研] 一志愿武理材料305分求调剂 +6 想上岸的鲤鱼 2026-03-18 7/350 2026-03-21 01:03 by JourneyLucky
[考研] 一志愿武汉理工材料工程专硕调剂 +9 Doleres 2026-03-19 9/450 2026-03-20 22:36 by JourneyLucky
[考研] 材料与化工 322求调剂 +4 然11 2026-03-19 4/200 2026-03-20 22:12 by luoyongfeng
[考研] A区线材料学调剂 +5 周周无极 2026-03-20 5/250 2026-03-20 21:33 by laoshidan
[考研] 广西大学家禽遗传育种课题组2026年硕士招生(接收计算机专业调剂) +3 123阿标 2026-03-17 3/150 2026-03-20 15:58 by 飞行琦
[考研] 本科郑州大学物理学院,一志愿华科070200学硕,346求调剂 +4 我不是一根葱 2026-03-18 4/200 2026-03-19 09:11 by 浮云166
[考研] 收复试调剂生 +4 雨后秋荷 2026-03-18 4/200 2026-03-18 14:16 by elevennnne
[硕博家园] 湖北工业大学 生命科学与健康学院-课题组招收2026级食品/生物方向硕士 +3 1喜春8 2026-03-17 5/250 2026-03-17 17:18 by ber川cool子
信息提示
请填处理意见