|
|
|
|
|
|
m*******s 发帖数: 3142 | 1 我现在遇到一个数值计算问题,大概如下
一个形如x-A(x)矩阵的逆矩阵,左乘右乘一个不同的常数矩阵,得到一个矩阵B,所有
这都是数值计算
得到的。
当然矩阵B也可以视为以x为自变量的算符。
然后我需要求这个矩阵B(x)的Fourier变换,
\int_{-\infty}^ {\infty}dx \boldsymbol{B} \left (x\right )e^{-ixt}
对每个t,都要重复做相同的数值积分程序,比较耗时。
我想问的是,有没有可能用一种形如
f_1(x)B_1+f_2(x)B_2+f_3(x)B_3+\cdots
的式子来拟合这个矩阵B(x),
其中f_1,f_2,f_3.....都是x的常见函数,B_1,B_2,B_3....是常数矩阵。
使得可以使用复变函数的residue theorem来方便地求得Fourier变换?
难就难在如何确定这些f_1,f_2,f_3,B_1,B_2,B_3....
似乎常规的least square方法派不上用场。
我感觉可以用B(x)的trace来找f_1,f_2,f_3.....但是这样也定不了B_1,B_2,B_3..
有没有更好的度量?
不知道做数值计算的朋友有没有什么好办法可以解决这个问题。谢谢! | g****t 发帖数: 31659 | 2 B(x)每个元素都展开成chebyshev 多项式,
然后 Chebyshev多项式的Fourier变换应该有表可以查?
我现在遇到一个数值计算问题,大概如下
一个形如x-A(x)矩阵的逆矩阵,左乘右乘一个不同的常数矩阵,得到一个矩阵B,所有
这都是数值计算
得到的。
当然矩阵B也可以视为以x为自变量的算符。
然后我需要求这个矩阵B(x)的Fourier变换,
\int_{-\infty}^ {\infty}dx \boldsymbol{B} \left (x\right )e^{-ixt}
对每个t,都要重复做相同的数值积分程序,比较耗时。
我想问的是,有没有可能用一种形如
f_1(x)B_1+f_2(x)B_2+f_3(x)B_3+\cdots
的式子来拟合这个矩阵B(x),
其中f_1,f_2,f_3.....都是x的常见函数,B_1,B_2,B_3....是常数矩阵。
使得可以使用复变函数的residue theorem来方便地求得Fourier变换?
难就难在如何确定这些f_1,f_2,f_3,B_1,B_2,B_3....
似乎常规的least square方法派不上用场。
我感觉可以用B(x)的trace来找f_1,f_2,f_3.....但是这样也定不了B_1,B_2,B_3..
有没有更好的度量?
不知道做数值计算的朋友有没有什么好办法可以解决这个问题。谢谢!
【在 m*******s 的大作中提到】 : 我现在遇到一个数值计算问题,大概如下 : 一个形如x-A(x)矩阵的逆矩阵,左乘右乘一个不同的常数矩阵,得到一个矩阵B,所有 : 这都是数值计算 : 得到的。 : 当然矩阵B也可以视为以x为自变量的算符。 : 然后我需要求这个矩阵B(x)的Fourier变换, : \int_{-\infty}^ {\infty}dx \boldsymbol{B} \left (x\right )e^{-ixt} : 对每个t,都要重复做相同的数值积分程序,比较耗时。 : 我想问的是,有没有可能用一种形如 : f_1(x)B_1+f_2(x)B_2+f_3(x)B_3+\cdots
| m*******s 发帖数: 3142 | 3 我不是特别熟悉你提到的方法。不过似乎Chebyshev多项式的Fourier变换需要在前面乘
上自变量的幂
指数项。这个幂指数强烈影响结果,选择的任意性比较大。
【在 g****t 的大作中提到】 : B(x)每个元素都展开成chebyshev 多项式, : 然后 Chebyshev多项式的Fourier变换应该有表可以查? : : 我现在遇到一个数值计算问题,大概如下 : 一个形如x-A(x)矩阵的逆矩阵,左乘右乘一个不同的常数矩阵,得到一个矩阵B,所有 : 这都是数值计算 : 得到的。 : 当然矩阵B也可以视为以x为自变量的算符。 : 然后我需要求这个矩阵B(x)的Fourier变换, : \int_{-\infty}^ {\infty}dx \boldsymbol{B} \left (x\right )e^{-ixt}
| g****t 发帖数: 31659 | 4 x^n的fourier变换是已知的.那么Chebyshev多项式的fourier变换也是闭式的.
设Chebyshev多项式为p1,p2,p3...
其Fourier变换为P1,P2,P3.
例如b(x)=a*p1(x)+b*p2(x)+c*p3(x)+...
那么其Fourier变换就是a*P1+b*P2+...
Chebyshev多项式的好处是,很多函数的Chebyshev展开系数是指数下降的.
往往不用算太多项.
【在 m*******s 的大作中提到】 : 我不是特别熟悉你提到的方法。不过似乎Chebyshev多项式的Fourier变换需要在前面乘 : 上自变量的幂 : 指数项。这个幂指数强烈影响结果,选择的任意性比较大。
| m*******s 发帖数: 3142 | 5 x^n的fourier变换好像不存在,因为x^n不是绝对可积的,如果n是自然数。
所以必须引入收敛的幂指数项。
我承认Chebyshev多项式展开是很有效的数值方法,可是我的这个问题似乎用不上。 | g****t 发帖数: 31659 | 6 你前面说的那个把B(x)展开成
B(x)=a*f1(x)+b*f2(x)+c*f3(x)+...
然后可以用留数定理方便的求Fourier的想法其实是很有道理的.
但好像需要有物理条件.
例如你知道B(x)是某线形微分方程x'=Ax的解.
那么B(x)就是exp(-a*x)的线性组合.B(x)的拉氏变换就是b/(a+s)之类东西的
线形组合.
换句话说,B(x)由几种运动mode组合而成,这种展开才合理.
假如物理上你有理由认为B(x)就是b/(a+s),c/(s^2+d*s+e)
之类的东西组合而成,那么你可以找B(x)对应的线性模型,就是求A,
这个倒是有现成的系统的方法.
除此之外,好像没有别的特殊情况可以这么做.
?? 1的Fourier变换是Dirac函数,x是Dirac函数的导数乘个系数,
这样做不行吗?
【在 m*******s 的大作中提到】 : x^n的fourier变换好像不存在,因为x^n不是绝对可积的,如果n是自然数。 : 所以必须引入收敛的幂指数项。 : 我承认Chebyshev多项式展开是很有效的数值方法,可是我的这个问题似乎用不上。
| m*******s 发帖数: 3142 | 7 Dirac函数对数值结果没有意义,况且Dirac函数的导数本身需要在同别的函数积分的意
义下定义,反而增加运算量。
不如不进行Chebyshev多项式展开,换成其他比如Hermite多项式,Laguerre多项式等可
以进行fourier变换的多项式,是否可行?有没有成熟的算法?
上面那个求Fourier变换的想法来自一篇paper,里面说B(\omega)的Fourier变换应该是
一系列在时间域衰减的指数函数的和。而且B(\omega)的trace对\omega作图,通常是有
峰有谷的不规则曲线,所以paper上说f_1,f_2,f_3.....都是x的Lorentzian function
。我根本不知道该怎么实现这种拟合,通常的least square方法似乎用不上。所以我才
来这儿问。
不过你的想法也不错,不进行这种整体性的分解,而是element-wise看问题,约化到通
常的函数的Fourier变换。FFT算法似乎是理想的算法,不过就是我比较担心在\omega域
对B(\omega)采样可能有问题,因为B(\omega)的trace反映出B(\omega)强烈的不光滑性
,甚至可以说不连续,通常的Gauss quadrature能保证数值积分准确吗?有没有什么改进的积分
方法可以配合被积函数的奇异性? | g****t 发帖数: 31659 | 8 我想到一个办法.你看行不行.
x*exp(-x^2*a)的Fourier变换不需要广义函数就可以搞定.
那么如果把a取的很小,例如a=0.00001,这就近似于x的Fourier变换.
这个过程中,Dirac函数被1/a^2类似的东西近似了.
在你的问题中,可以把B(x)展开成正交多项式,然后求B(x)*exp(-x^2*0.00000001)
的Fourier变换. 计算中出现的x^n*exp(-a*x^2)之类的东西可以查表搞定.
(
如果不乘exp(-x^2*a),无论按什么多项式展开,总有Dirac函数出现.
hermite,Laguerre的第一项都是1,第二项都是a+bx形式的,这样,如果用Dirac函数,
最后很可能因为数值误差出现消不掉的Dirac函数---虽然原理上来讲到最后这些
剩下的Dirac函数的系数应该非常小.
)
B(x)如果是指数函数的线性组合,那有现成的方法做.
function
【在 m*******s 的大作中提到】 : Dirac函数对数值结果没有意义,况且Dirac函数的导数本身需要在同别的函数积分的意 : 义下定义,反而增加运算量。 : 不如不进行Chebyshev多项式展开,换成其他比如Hermite多项式,Laguerre多项式等可 : 以进行fourier变换的多项式,是否可行?有没有成熟的算法? : 上面那个求Fourier变换的想法来自一篇paper,里面说B(\omega)的Fourier变换应该是 : 一系列在时间域衰减的指数函数的和。而且B(\omega)的trace对\omega作图,通常是有 : 峰有谷的不规则曲线,所以paper上说f_1,f_2,f_3.....都是x的Lorentzian function : 。我根本不知道该怎么实现这种拟合,通常的least square方法似乎用不上。所以我才 : 来这儿问。 : 不过你的想法也不错,不进行这种整体性的分解,而是element-wise看问题,约化到通
|
|
|
|
|
|
|