Hi, I am trying to solve an integration where both limits are variable. The function itself being integrated is simple, it is just exp(-W^2). I can solve the inegration fine using this method without limits - the limits are the issue here. I think it could be because of the use of the symbolic functions to integrate? But I have tried other methods, and I cannot get it to work with these limits. I get the error:
error in sym/subsref (line 898)
R_tilde = builtin('subsref',L_tilde,Idx);
The upper limit is -phi, and the lower limit is beta-phi.
Another issue could be because the upper limit is the same as the variable being integrated. However I don't know how to get around that issue either?
I have just shown some of my code, hopefully this is enough to make sense of what I am trying to do. Any help would be greatly appreciated!
t=linspace(0,1000);
r=linspace(0,100);
D=2;
beta=r./sqrt(4*D.*t);
phi=U.*sqrt(t./D);
W=beta-phi;
% Performing integration
syms W
f=exp(-(W.^2));
a=-phi;
b=beta-phi;
int(f,W,a,b)

3 Kommentare

Bjorn Gustavsson
Bjorn Gustavsson am 19 Sep. 2020
Use the error-function, erf, and then you're done - if this is your full problem...
Sophie Malcolm
Sophie Malcolm am 20 Sep. 2020
Hi Bjorn,
Thank you so much for your response, I hadn't considered the use of the error function in MATLAB and will look into that now!
Thanks so much,
Sophie
Your solution is simply:
(pi^(1/2)*(erf(b) - erf(a)))/2.

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Ameer Hamza
Ameer Hamza am 19 Sep. 2020

0 Stimmen

You are getting an error because you are passing arrays (a and b) to int() as its limit. The limits must be scalar. For example, try this
t=linspace(0,1000);
r=linspace(0,100);
D=2;
U = 3;
beta=r./sqrt(4*D.*t);
phi=U.*sqrt(t./D);
W=beta-phi;
% Performing integration
syms W
f=exp(-(W.^2));
a=-phi;
b=beta-phi;
int(f,W,a(2),b(2))

2 Kommentare

Sophie Malcolm
Sophie Malcolm am 20 Sep. 2020
Hi Ameer,
Thank you so much for this, I didn't realise that! That is so helpful, thanks a lot.
Sophie
Ameer Hamza
Ameer Hamza am 20 Sep. 2020
I am glad to be of help!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Bjorn Gustavsson
Bjorn Gustavsson am 19 Sep. 2020

0 Stimmen

Matlab has both a numerical and a symbolic version of the error-function. That will be the answer to your problem. The numeric version is vectorized, so it can handle your inputs without problems.
HTH

1 Kommentar

Sophie Malcolm
Sophie Malcolm am 20 Sep. 2020
Hi,
Okay that makes a lot of sense! Thank you so much for explaining. I will look into that now.
Thanks for your help,
Sophie

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu MATLAB finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by