24小时热门版块排行榜    

查看: 596  |  回复: 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

金虫 (著名写手)

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

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的回帖

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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿北京化工大学材料与化工(085600)296求调剂 +9 稻妻小编 2026-03-26 9/450 2026-03-26 16:16 by 不吃魚的貓
[考研] 281求调剂 +6 Koxui 2026-03-24 7/350 2026-03-26 15:37 by 无际的草原
[考研] 一志愿 南京邮电大学 288分 材料考研 求调剂 +3 jl0720 2026-03-26 3/150 2026-03-26 13:39 by zzll406
[考研] 材料与化工304求B区调剂 +3 邱gl 2026-03-26 5/250 2026-03-26 13:33 by 邱gl
[考研] 打过很多竞赛,085406控制工程300分,求调剂 +3 askeladz 2026-03-26 3/150 2026-03-26 09:08 by 给你你注意休息
[考研] 材料专硕 335 分求调剂 +4 拒绝冷暴力 2026-03-25 4/200 2026-03-25 18:45 by haxia
[考研] 求b区院校调剂 +4 周56 2026-03-24 5/250 2026-03-25 17:12 by yishunmin
[考研] 材料学硕333求调剂 +4 北道巷 2026-03-24 4/200 2026-03-25 14:16 by mapenggao
[考研] 359求调剂 +3 王了个楠 2026-03-25 3/150 2026-03-25 12:50 by Dyhoer
[考研] 材料学硕,求调剂 6+4 糖葫芦888ll 2026-03-22 9/450 2026-03-25 11:19 by greychen00
[考研] 289求调剂 +9 怀瑾握瑜l 2026-03-20 9/450 2026-03-25 11:02 by userper
[考研] 材料调剂 +6 匹克i 2026-03-23 6/300 2026-03-24 21:09 by greychen00
[有机交流] 有机合成求助 20+3 FENGSHUJEI 2026-03-23 5/250 2026-03-24 19:31 by 88817753
[考研] 求调剂 +6 研研,接电话 2026-03-24 7/350 2026-03-24 17:01 by barlinike
[考研] 298求调剂 +8 上岸6666@ 2026-03-20 8/400 2026-03-23 11:02 by laoshidan
[考研] 一志愿070300浙大化学358分,求调剂! +4 酥酥鱼.. 2026-03-21 4/200 2026-03-23 08:12 by Iveryant
[考研] 求调剂 +4 要好好无聊 2026-03-21 4/200 2026-03-21 18:57 by 学员8dgXkO
[考研] 求调剂 +3 .m.. 2026-03-21 4/200 2026-03-21 16:25 by barlinike
[考研] 中南大学化学学硕337求调剂 +3 niko- 2026-03-19 6/300 2026-03-20 21:58 by luoyongfeng
[考研] 求调剂 +3 eation27 2026-03-20 3/150 2026-03-20 19:32 by JourneyLucky
信息提示
请填处理意见