# ParametricFunctions

A unified interface for parametric function families.

## Introduction

This is a package for handling parametric function families of the form `f(x; θ)`

.

A particular `f(⋅,⋅)`

is a *function family*. It can be queried about its `domain`

, degrees of freedom `degf`

(the dimension of `θ ∈ ℝⁿ`

), evaluated at `x`

and `θ`

.

This package is mainly useful for solving functional problems using projection methods, ie given some mapping `F`

, solve for `F(f(x;θ)) = 0`

. The library should be transparent to automatic differentiation tools such as ForwardDiff.jl.

The goal of this package is facilitating the management of function families for a mostly "manual" approach to constructing approximations to functions, and then minimizing then some kind of residual. The function families are built from a set of basic building blocks using univariate families (such as Chebyshev polynomials, splines), domain and value transformations (function families need not be linear), combined into tensored multivariate families, or more sophisticated variations such as complete polynomials or sparse approximations.

There is also limited support for calculating `θ`

for a given `y = f(x; θ)`

, where `x`

are the collocation `points`

of the function family, but this is mainly useful for initial guesses for `θ`

.

## Plans

Currently I am refining the API for univariate functions, using simple function families. Multivariate constructs are coming later. This is work in progress, the API may change without notice.

## Related packages

If your problem is (mostly) linear, without embedded optimization problems in `F`

above, you are probably better off with ApproxFun.jl.