MarcJ said:
This runs on an embedded platform where memory is tight.
That's not good for the solution above, because the pseudeinverse is an m×m matrix. But I have another solution with an n×n matrix:
With [itex]F_k : = F\left( {x_k } \right)[/itex] and [itex]f_k : = \left( {f_0 \left( {x_k } \right),f_1 \left( {x_k } \right), \ldots ,f_m \left( {x_k } \right)} \right)^T[/itex] the minimization problem
[itex]\sum\limits_k {\left( {f_k^T a - F_k } \right)^2 } \Rightarrow Min.[/itex]
results in
[itex]a = \left( {\sum\limits_k {f_k f_k^T } } \right)^{ - 1} \sum\limits_k {f_k F_k }[/itex]
With three parameters this means
[itex]\sum\limits_k {f_k F_k } = \left( {\begin{array}{*{20}c} {\sum\limits_k {f_{1,k} \cdot F_k } } \\ {\sum\limits_k {f_{2,k} \cdot F_k } } \\ {\sum\limits_k {f_{3,k} \cdot F_k } } \\ \end{array}} \right)[/itex]
and
[itex]\sum\limits_k {f_k f_k^T } = \left( {\begin{array}{*{20}c}<br />
{\sum\limits_k {f_{1,k} f_{1,k} } } & {\sum\limits_k {f_{1,k} f_{2,k} } } & {\sum\limits_k {f_{1,k} f_{3,k} } } \\<br />
{\sum\limits_k {f_{1,k} f_{2,k} } } & {\sum\limits_k {f_{2,k} f_{2,k} } } & {\sum\limits_k {f_{2,k} f_{3,k} } } \\<br />
{\sum\limits_k {f_{1,k} f_{3,k} } } & {\sum\limits_k {f_{2,k} f_{3,k} } } & {\sum\limits_k {f_{3,k} f_{3,k} } } \\<br />
\end{array}} \right): = \left( {\begin{array}{*{20}c}<br />
{S_{11} } & {S_{12} } & {S_{13} } \\<br />
{S_{12} } & {S_{22} } & {S_{23} } \\<br />
{S_{13} } & {S_{23} } & {S_{33} } \\<br />
\end{array}} \right)[/itex]
and the inverse is
[itex]\left( {\begin{array}{*{20}c}<br />
{S_{11} } & {S_{12} } & {S_{13} } \\<br />
{S_{12} } & {S_{22} } & {S_{23} } \\<br />
{S_{13} } & {S_{23} } & {S_{33} } \\<br />
\end{array}} \right)^{ - 1} = \frac{1}{K} \cdot \left( {\begin{array}{*{20}c}<br />
{S_{22} S_{33} - S_{23} S_{23} } & {S_{13} S_{23} - S_{12} S_{33} } & {S_{12} S_{23} - S_{13} S_{22} } \\<br />
{S_{13} S_{23} - S_{12} S_{33} } & {S_{11} S_{33} - S_{13} S_{13} } & {S_{12} S_{13} - S_{11} S_{23} } \\<br />
{S_{12} S_{23} - S_{13} S_{22} } & {S_{12} S_{13} - S_{11} S_{23} } & {S_{11} S_{22} - S_{12} S_{12} } \\<br />
\end{array}} \right)[/itex]
with
[itex]K = S_{11} \left( {S_{22} S_{33} - S_{23} S_{23} } \right) + S_{12} \left( {S_{13} S_{23} - S_{12} S_{33} } \right) + S_{13} \left( {S_{12} S_{23} - S_{13} S_{22} } \right)[/itex]
The implementation in C shouldn't be very difficult.