# How to invert an integral equation

There have been numerous times when I've needed to invert an integral equation, i.e. I have something like $$f(x) = g_1(x)\int_{0}^x g_2(x') dx'$$ for arbitrary functions $g_1$ and $g_2$, and I would like to find $x$ for a given $f$. The way I've gotten around this is just making some sort of table of f(x) and x with spacing up to some required precision. Is there a more efficient method of doing it (numerically or analytically)?

When I try to use `NSolve[ f(x) == a, x ]` mathematica complains `NIntegrate::nlim: x = x is not a valid limit of integration.`

-

## 2 Answers

My interpretation of the question is that you want to find $x$ for given $f$, $g_2$ and $g_1$. Then just define $F=f/g_1$ and differentiate with respect to $x$ on both sides:

$\frac{d}{dx}F(x)=g_2(x)$

Now solve this equation for $x$. There's no integration involved.

-

2
Just implemented this and it works well. Using a simple finite-difference routine to calculate the derivative of 'F' is computationally trivial compared to the iterative numerical integrations. – zhermes Apr 22 '12 at 4:59

````f[x_?NumericQ] := f[x] = g1[x] NIntegrate[g2[t], {t, 0, x}];
g1[x_] := Sin[x]; g2[x_] := Cos[x];
k = FindRoot[f[x] == Pi/9, {x, 1}]
Pi/9 - f[x] /. k[[1]]
(*
->
{x -> 0.632072}
-5.55112*10^-17
*)
````
{"extraction_info": {"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 12, "mathjax_display_tex": 1, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0}, "config": {"markdown_headings": true, "markdown_code": true, "boilerplate_config": {"ratio_threshold": 0.18, "absolute_threshold": 10, "end_threshold": 15, "enable": true}, "remove_buttons": true, "remove_image_figures": true, "remove_link_clusters": true, "table_config": {"min_rows": 2, "min_cols": 3, "format": "github"}, "remove_chinese": true, "remove_edit_buttons": true, "extract_latex": true}, "english_confidence": 0.894023060798645, "perplexity_flag": "middle"}