2
$\begingroup$

I'm having trouble trying to solve the following volterra (integral) equation with DSolveValue: $$f(x) = \frac{r}{n-1}\left(\frac{1}{\alpha} - 1\right)-\frac{r}{n-1}\frac{(1-p)}{p}e^{n\int\limits_{0}^{x}f(t)dt} $$ All parameters (r, n, $\alpha$) are positive and $p\in (0,1)$ I´m using the following command:

eqn = y[x] == (r/(n - 1))*(1/a - 1) - (r/(n - 1))*((1 - p)/p)*Exp[n*Integrate[y[t],{t,0,x}]]
sol = DSolveValue[eqn, y[x], x]

any help?

$\endgroup$
  • $\begingroup$ To my knowledge, DSolve doesn't do integro-differential equations. $\endgroup$ – march Sep 21 '17 at 20:07
  • $\begingroup$ But I´m using DSolveValue which, acording to wolfram documentation, does. wolfram.com/language/11/symbolic-and-numeric-calculus/… $\endgroup$ – Marcus Fermat Sep 21 '17 at 20:31
  • $\begingroup$ Ah, I see. This looks to be new in V11, and I'm stuck at V10.0.1 $\endgroup$ – march Sep 21 '17 at 20:50
  • $\begingroup$ This type of integro-differential equations DSolve can't solve. $\endgroup$ – Mariusz Iwaniuk Sep 21 '17 at 20:51
  • $\begingroup$ @MariuszIwaniuk not even DSolveValue? $\endgroup$ – Marcus Fermat Sep 21 '17 at 20:54
3
$\begingroup$

This is not a Volterra-type equation. Those are of the form $y(x)= a(x) + \int_{x_0}^x K(x,t)y(t)dt$. In your case, the integral is exponentiated. I'm not aware of a general technique for solving such equations. If there's a way it can be recast as a Volterra equation than DSolve would have a reasonable chance to solve it, but it is not at all obvious that this is possible...

$\endgroup$
2
$\begingroup$

Using this: Answer form user - Daniel Lichtblau we have:

$$f(x)=\frac{r \left(\frac{1}{\alpha }-1\right)}{\text{nn}-1}-\frac{r (1-p) \exp \left(n \int_0^x f(t) \, dt\right)}{(\text{nn}-1) p}$$

a = 0;(*Assuming constants*)
b = 1;
r = 5;
p = 1/3;
nn = 5;
α = 10;
term = 8;

kernel[x_] := r/(nn - 1)*(1/α - 1)
func[x_, 0] := kernel[x]
ifunc[0][x_] := kernel[x]

func[x_?NumericQ, n_Integer] := kernel[x] - r/(nn - 1)*(1 - p)/p*
Exp[nn*NIntegrate[ifunc[n - 1][y], {y, 0, x}, MinRecursion -> 2]]

ifunc[j_Integer /; j >= 1] := ifunc[j] = 
Module[{vals}, vals = Table[{x, func[x, j]}, {x, a, b, 0.002}];
Interpolation[vals]]

Plot[Evaluate[Table[ifunc[j][x], {j, 0, term}]], {x, a, b}, 
PlotStyle -> {Blue, Red, Green, Purple, Black}]
Plot[Evaluate[Table[ifunc[j][x], {j, 0, term}]][[-1]], {x, a, b}, 
PlotRange -> {Automatic, {-2, -1}}]

I did eighth iterations to this process.

enter image description here

A numeric check with random numbers:

g[x_, n_] := (-ifunc[n][x] + r/(nn - 1) (1/α - 1) - r/(nn - 1)*(1 - p)/p*
Exp[nn*NIntegrate[ifunc[n][y], {y, 0, x}, MinRecursion -> 2]]);
Table[g[RandomReal[{0, 1}, 10][[k]], term], {k, 1, 10}]

(* {-4.78826*10^-6, -7.19387*10^-7, -5.44634*10^-6, -1.1502*10^-7, 
-3.94742*10^-6, -3.83767*10^-6, -6.26247*10^-6, -1.42423*10^-6, 
-1.89644*10^-6, -3.32356*10^-7}*)
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.