Solving Integral Equations
08-24-2019, 03:34 PM
Post: #1 Eddie W. Shore Senior Member Posts: 1,133 Joined: Dec 2013
Solving Integral Equations
The program INTEGRALSOLVE solve the following equation:
(Format: ∫( integrand dvar, lower, upper)

∫( f(t) dt, 0, x) = a

∫( f(t) dt, 0, x) - a = 0

It is assumed that x>0.

We can use the Second Theorem of Calculus which takes the derivative of the integral:

d/dx ∫( f(t) dt, a, x) = f(x)

We don't have to worry about lower limit a at all for the theorem to work.

∫( f(t) dt, 0, x) - a

Take the derivative with respect to x on both sides (d/dx):

= d/dx ∫( f(t) dt, 0, x) - a

= d/dx ∫( f(t) dt, 0, x) - d/dx a

Let F(t) be the anti-derivative of f(t):

= d/dx (F(x) - F(0)) - 0

= d/dx F(x) - d/dx F(0)

F(0) is a constant.

= f(x)

Newton's Method to find the roots of f(x) can be found by the iteration:

x_(n+1) = x_n - f(x_n) / f'(x_n)

Applying that to find the roots of ∫( f(t) dt, 0, x) - a:

x_(n+1) = x_n - (∫( f(t) dt, 0, x_n) - a) / f(x_n)

Program:
Code:
EXPORT INTEGRALSOLVE(f,a,x) BEGIN // f(X) as a string, area, guess // ∫(f(X) dX,0,x) = a // EWS 2019-07-26 // uses Function app LOCAL x1,x2,s,i,w; F0:=f; s:=0; x1:=x; WHILE s==0 DO i:=AREA(F0,0,x1)-a; w:=F0(x1); x2:=x1-i/w; IF ABS(x1-x2)<1ᴇ−12 THEN s:=1; ELSE x1:=x2; END; END; RETURN approx(x2); END;

Example 1:

∫( 2*t^3 dt, 0, x) = 16
Guess = 2
Root ≈ 2.3784

Example 2:

∫( sin^2 t dt, 0, x) = 1.4897
Guess = 1
Root ≈ 2.4999

Source:

Green, Larry. "The Second Fundamental Theorem of Calculus" Differential Calculus for Engineering and other Hard Sciences. Lake Tahoe Community College.
http://www.ltcconline.net/greenl/courses...ECFUND.HTM
Retrieved July 25, 2019

Blog entry: http://edspi31415.blogspot.com/2019/08/h...lving.html
08-24-2019, 09:07 PM (This post was last modified: 09-07-2019 08:00 PM by Albert Chan.)
Post: #2
 Albert Chan Senior Member Posts: 1,147 Joined: Jul 2018
RE: Solving Integral Equations
Hi, Eddie

My guess is the integral calculations will take the most time.
Instead of always do integral from 0 to x, why not re-use old integral calculations ?

∫(f(u), u=0 to x) = ∫(f(u), u=0 to t) + ∫(f(u), u=t to x)

(08-24-2019 03:34 PM)Eddie W. Shore Wrote:  ∫( sin^2 t dt, 0, x) = 1.4897
Guess = 1
Root ≈ 2.4999

This is my Mathematica code, only for proof of concept.

Quote:f[x_] := Sin[x]^2;
F[a_,b_] := Integrate[f[x], {x,a,b}];
a = 1.4897

newton[{x_,t_,Ft}] := Module[{Fx = Ft + F[t,x]}, {x - (Fx-a)/f[x], x, Fx}];
newton[x_] := newton[{x,0,0}]

> NestList[newton, 1.0, 5]

{1.0,
﻿ ﻿{2.71878, 1., 0.272676},
﻿ ﻿{2.38150, 2.71878, 1.54649},
﻿ ﻿{2.48529, 2.38150, 1.44043},
﻿ ﻿{2.49964, 2.48529, 1.48436},
﻿ ﻿{2.49991, 2.49964, 1.4896}}

Note: x=2.49991 already converged to 1.4897. The value 1.4896 were previous integral, 0 to 2.49964
 « Next Oldest | Next Newest »

User(s) browsing this thread: 1 Guest(s)