Simple question about symbolic limits

조회 수: 5 (최근 30일)
Tristan Potter
Tristan Potter 2020년 6월 9일
편집: Tristan Potter 2020년 6월 13일
Hello,
I am checking results derived by hand in a MATLAB (2019a) live script and have encountered the following problem (MWE below): When I try to take the limit of the expression as (symbolic) variable l approaches 0, restricting , MATLAB cannot find the limit I obtain by hand. However, when I choose arbitrary values for instead of using an assumption, I get the same limit I derived by hand (which is independent of c). I suspect there is an obvious explanation for this that I am overlooking.
MWE:
%Declare symbolic variables:
syms l real;
syms t real; assumeAlso(t>1);
syms a real; assumeAlso(0<a<1);
syms p real; assumeAlso(0<p<1);
syms e real; assumeAlso(e>0);
syms c real; assumeAlso(c>0);
syms w real; assumeAlso(0<w<1);
%Functions:
phi = e/(1+c)*l^(1+c);
z = t/l*(1-exp(-l/t));
n = p*(1+c)/(p*(1+c)+z*l/phi*w);
pn = t*p*(1-n)*exp(-l/t)/n*(1-exp(-1*(t*p*(1-n)*exp(-l/t)/(a*n))^(-1)));
%Limits:
limit(pn,l,0,'right')
MATLAB cannot reduce this limit. However, when I instead impose, e.g., , via
syms l real;
syms t real; assumeAlso(t>1);
syms a real; assumeAlso(0<a<1);
syms p real; assumeAlso(0<p<1);
syms e real; assumeAlso(e>0);
syms c real; assumeAlso(c>0);
syms w real; assumeAlso(0<w<1);
%Functions:
phi = e/(1+0.1)*l^(1+0.1);
z = t/l*(1-exp(-l/t));
n = p*(1+0.1)/(p*(1+0.1)+z*l/phi*w);
pn = t*p*(1-n)*exp(-l/t)/n*(1-exp(-1*(t*p*(1-n)*exp(-l/t)/(a*n))^(-1)));
%Limits:
limit(pn,l,0,'right')
I get the result I derived by hand. The same holds for seemingly all other positive values of c. Any idea what I'm overlooking?
Thanks in advance.

답변 (1개)

Ayush Gupta
Ayush Gupta 2020년 6월 12일
The limit specified is also dependent on c if c does not have small values. For small values of c, a simplified expression is yielded. Refer to the following link to know more about limit:
  댓글 수: 1
Tristan Potter
Tristan Potter 2020년 6월 13일
편집: Tristan Potter 2020년 6월 13일
Thanks for your response. However, I don't see that this resolves the issue for several reasons:
1) I don't see the dependence on c in a manual derivation of the limit via L'Hopital's rule (the limit I obtain manually corresponds to what MATLAB gives when I use a particular value of c, so I don't think I'm making a mistake in the manual derivation).
2) If I substitute the expression for n into the expression for above, I obtain:
pn = (t^2*(w-b)/e*exp(-l/t)*(1-exp(-l/t))/l^(c+1)*exp(-a/t*exp(-l*z)/exp(-l/t))*(1-exp(-a*(t^2*(w-b)/e*exp(-l/t)*(1-exp(-l/t))/l^(c+1))^(-1)));
When I evaluate this limit, seemingly any value of c gives the same limit that I get when I do the derivation manually. For example, I can choose and I get the same answer.
3) Finally, I tried writing where and applying L'Hopital's rule manually by taking the derivative of the numerator and denominator. I then used MATLAB to take the limit of the resulting ratio of the derivatives. When I simplify the ratio of derivatives and take the limit in MATLAB, I get the same result that I get manually. When I don't simplify, the problem remains:
n0 = 1-exp(-a*(t^2*(w-b)/e*exp(-l/t)*(1-exp(-l/t))/l^(c+1))^(-1));
d0 = 1/(t^2*(w-b)/e*exp(-l/t)*(1-exp(-l/t))/l^(c+1));
n1 = diff(n0,l);
d1 = diff(d0,l);
limit(n1/d1,l,0,'right')
limit(simplify(n1/d1),l,0,'right')
Am I missing something?

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Assumptions에 대해 자세히 알아보기

제품

Community Treasure Hunt

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

Start Hunting!

Translated by