MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn moreOpportunities for recent engineering grads.

Apply Today
Asked by Ann on 7 Apr 2011

Hello!

Please, how can I solve integral equation in Matlab

L = integral (f(b,t)) dt for third variable (parametric variable b)

Limits of integral are t0, t1.

*No products are associated with this question.*

Answer by Jarrod Rivituso on 7 Apr 2011

Accepted answer

OK, I'm gonna assume you want to do it numerically. Check out this (warning, it gets a little crazy with the function handles):

function solveIntegralForB

bfound = fsolve(@func2minimize,2)

function output = func2minimize(b) t0 = 0; t1 = 3; L = 50; output = (L - quad(@myFunc,t0,t1))^2;

function f = myFunc(t) f = exp(b*t); end

end

end

Essentially, what it does is use the quad function to perform an integration for some value of b. Additionally, it uses the fsolve function to then minimize the "func2minimize" function, which performs the integral for some value of b and checks it against my desired solution.

Here, I've assumed a simple function (exp(b*t)) as f, but you could see how it could be changed. Of course, this is an iterative solution, so there's no guarantee of it finding a solution for all functions f.

Hope this helps!

Answer by Matt Tearle on 8 Apr 2011

A variation on Jarrod's approach, using function handles (because everyone loves function handles):

myFunc = @(t,b) exp(t*b); % or whatever t0 = 0; t1 = 3; L = 50; f = @(b) quad(@(t) myFunc(t,b),t0,t1); bsolve = fzero(f,2);

Or `fsolve` instead of `fzero` if you have Optimization Toolbox.

Answer by Walter Roberson on 11 Apr 2011

If you have the symbolic toolbox,

syms x b solve(int(f(x,b),x,t0,t1)-L,b)

In theory if it can be solved symbolically it will do so, and if not then MuPad should switch to numeric integrations, I think.

## 1 Comment

Direct link to this comment:http://www.mathworks.com/matlabcentral/answers/5021#comment_10274

numerically or symbolically?