多元多项式重构问题请教
各位前辈好,最近在工作中遇到一个问题,想请教大家。
我想用高阶的多项式重构一个光滑变量,比如,f(x,y)≈a10*x+a01*y+a20*x*x+a02*y*y+a11*x*y..。
难点在于多项式系数如何确定。
目前我用是对f求偏导,然后用有限差分近似(在均匀网格上),从而确定polynomial的系数。
比如 ∂f/∂x =a10, ∂f/∂y=a01...,∂f/∂x ≈[f(i+1)-f(i-1)]/2.0/dx,
这个方法的缺点是计算高阶偏导数不好处理,比如我要算二阶混合导数fxy,需要先算出一阶导数fx,fy,然后再对fx,fy求偏导。
上述做法在用高阶有限差分或者计算高阶导数时,会引入很宽的模板。具体应用时,效果不是特别好。
当然,我也可以由f计算出各阶偏导数,相对上述方法更加compact。比如fxy=[f(i+1,j+1)-f(i+1,j-1)-f(i-1,j+1)+f(i-1,j-1)]/4.0/dx/dy.
不过,高阶混合导数有限差分格式推导的工作量实在太大,特别是三维。。。
想请教大家,有没有compact,并且比较简单的方法,比如least square?
谢谢! 返回小木虫查看更多
今日热帖
比如 ∂f/∂x =a10, ∂f/∂y=a01...,∂f/∂x ≈
你好,非常感谢你的回复。
(1) 这个表达式的确有问题,正切的写法是: a10=∂f/∂x|i,j, ∂f/∂x|i,j ≈[f(i+1)-f(i-1)]/2.0/dx.
(2) 您说的linear square method是指linear square fiting吗? 貌似linear square 最多只有二阶精度?
前辈,感谢您的回复,第一个方法我略去了一些条件,这边就不再详细叙述了;但我已经在重构算例中测出了相应的精度。
关于二阶精度是我搞错了linear的概念,我以为linear指的是linear polynomial。惭愧。。。
我这两天认真研究了下least square,对于polynomial,用least square确定系数的确是一个非常不错的方法。
感谢您的帮助
,
The (1) you wrote is not correct.
前辈,
这个重构的基本思想是对变量f在点(i,j)处进行泰勒展开,f(x,y)=f(i,j)+∂f/∂x(i,j)*(x-xi)+∂f/∂y(i,j)*(y-yi)+ ...
我把上述式子改写成 f=f(i,j)+a10*X+a01*Y+...
其中a10=∂f/∂x(i,j), X=x-xi
您写的公式里,后面几项在离散时都可以约去。
Where is f(i,j) in your first formulation? Do not mix Taylor expansion and fitting function. They are different.