# How to decompose a result of a multiplication?

I've got a multiplicative-with-noise model $F(x,y)=S(x)*R(y)*D(x,y)+N$, where $S(x)$ and $R(y)$ are unknown functions, $D(x,y)$ is a distance function, that is, a function that depends only on $|x-y|$ and decreases quickly when distance increases. $N$ is an uncorrelated "small random noise" function. All of the functions except noise are positive.

I have $F(x,y)$ sampled for almost any not-very-distant pair of discrete $(x,y)$, that is, for $(x,y): |x-y| \leq D_{max}$.

I'd like to decompose $F(x,y)$ to obtain the "form" of $S(x), R(y), D(x,y)$. How can I do it? My only idea is to calculate averages $S_{est}(x_i)=average(F(x,y), x=x_i)$, $R_{est}(y_j)=average(F(x,y),y=y_j)$ etc, assume $N=0$, then produce an estimated $F_{est}=S_{est}(x)*R_{est}(y)*D_{est}(x,y)$. I dont know what to do next.

-

The standard way would be to minimize an error function, perhaps least-min-squares $$\mathbb{E} [F(x,y) - S(x)R(y)D(|x-y|)]^2,$$ where $S,R,D$ are all variables. You can also add a regularization term reflecting your belief that $D(d)$ is small for large $d$, e.g. something like $\sum c_d D(d)^2$ for some chosen weights $c_d \rightarrow \infty$.
Should I first transform the task into logarithm domain, assuming the noise is zero? That is, considering $N=0$ and taking the logarithm of the both hands of the equality, gives $log(F(x,y))=log(S(x))+log(R(y))+log(D(|x-y|)$, and renaming $log(F)=f$ etc gives $f(x,y)=s(x)+r(y)+d(|x-y|)$. –  mbaitoff Nov 23 '10 at 4:45
I've got approximately 10-20 thousands of $x$ and $y$ points, and $F(x,y)$ is sampled approximately at 10-20 millions of $(x,y)$ pairs. So, the task is to find a 10-20 thousand-element vectors $S(x)$, $R(y)$. I'm not happy to dive into zillion-term matrices. Is it safe to use the averages approach instead? –  mbaitoff Nov 23 '10 at 7:44