Discover MakerZone

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

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Thread Subject:
couldn't find the reason of warning "Explicit integral could not be found"

Subject: couldn't find the reason of warning "Explicit integral could not be found"

From: Ozan

Date: 10 Mar, 2012 14:23:18

Message: 1 of 5

I am having problem with my following code:

syms epsilon eta zeta;
ne=1;
me=1;
E1=70*10^9;
E2=200*10^9;
K1=76*10^9;
K2=150*10^9;
G1=26*10^9;
G2=78*10^9;
Vs=(((zeta/2)+(1/2))^ne)*((eta/2)^me);
f1=(G1.*(9.*K1+8.*G1))/(6.*(K1+2*G1));
Gasil=G1+(Vs.*(G2-G1))./(1+(1-Vs).*((G2-G1)./(G1+f1)));
Kasil=K1+(Vs.*(K2-K1))./(1+(1-Vs).*((3.*(K2-K1))./(3.*K1+4.*G1)));
Easil=(9.*Kasil.*Gasil)./(3.*Kasil+Gasil);
K11=(int(int(Easil,eta,-1,1),zeta,-1,1))

It does not give me any answer. Could someone help me?

Thanks

Ozan

Subject: couldn't find the reason of warning "Explicit integral could not be found"

From: Roger Stafford

Date: 10 Mar, 2012 18:59:21

Message: 2 of 5

"Ozan" wrote in message <jjfo4l$1ri$1@newscl01ah.mathworks.com>...
> I am having problem with my following code:
>
> syms epsilon eta zeta;
> ne=1;
> me=1;
> E1=70*10^9;
> E2=200*10^9;
> K1=76*10^9;
> K2=150*10^9;
> G1=26*10^9;
> G2=78*10^9;
> Vs=(((zeta/2)+(1/2))^ne)*((eta/2)^me);
> f1=(G1.*(9.*K1+8.*G1))/(6.*(K1+2*G1));
> Gasil=G1+(Vs.*(G2-G1))./(1+(1-Vs).*((G2-G1)./(G1+f1)));
> Kasil=K1+(Vs.*(K2-K1))./(1+(1-Vs).*((3.*(K2-K1))./(3.*K1+4.*G1)));
> Easil=(9.*Kasil.*Gasil)./(3.*Kasil+Gasil);
> K11=(int(int(Easil,eta,-1,1),zeta,-1,1))
>
> It does not give me any answer. Could someone help me?
>
> Thanks
>
> Ozan
- - - - - - - - -
  Unless I am mistaken, the quantity 'Easil' can be expressed as the ratio of two quadratics in 'Vs'. I see no reason why the symbolic toolbox cannot find an explicit solution for the indefinite double integral of such an expression. Perhaps you are confusing 'int' with all the different constants you have defined, or perhaps writing

 Vs=(((zeta/2)+(1/2))^ne)*((eta/2)^me);

instead of the simpler

 Vs = (zeta+1)*eta/4

is leading it astray.

  I would suggest not using 'ne' and 'me' since they are both equal to 1, and consolidating the other known constants into whatever coefficients occur in the above-mentioned quadratic ratio. Then 'int' might succeed. You will find the 'simple' and 'simplify' commands of great assistance in that endeavor.

  Another possibility is that with the given limits of integration for your definite integrals, the integrand becomes non-integrable - that is, it gives an infinite or indeterminate value. Matlab might give up in such a case. I would suggest you make a study of the above quadratic denominator to see where zeros might occur for zeta and eta values between -1 and +1. If it is non-integrable, you are giving matlab an impossible task.

Roger Stafford

Subject: couldn't find the reason of warning "Explicit integral could not be found"

From: Ozan

Date: 11 Mar, 2012 10:46:12

Message: 3 of 5

"Roger Stafford" wrote in message <jjg8a9$idf$1@newscl01ah.mathworks.com>...
> "Ozan" wrote in message <jjfo4l$1ri$1@newscl01ah.mathworks.com>...
> > I am having problem with my following code:
> >
> > syms epsilon eta zeta;
> > ne=1;
> > me=1;
> > E1=70*10^9;
> > E2=200*10^9;
> > K1=76*10^9;
> > K2=150*10^9;
> > G1=26*10^9;
> > G2=78*10^9;
> > Vs=(((zeta/2)+(1/2))^ne)*((eta/2)^me);
> > f1=(G1.*(9.*K1+8.*G1))/(6.*(K1+2*G1));
> > Gasil=G1+(Vs.*(G2-G1))./(1+(1-Vs).*((G2-G1)./(G1+f1)));
> > Kasil=K1+(Vs.*(K2-K1))./(1+(1-Vs).*((3.*(K2-K1))./(3.*K1+4.*G1)));
> > Easil=(9.*Kasil.*Gasil)./(3.*Kasil+Gasil);
> > K11=(int(int(Easil,eta,-1,1),zeta,-1,1))
> >
> > It does not give me any answer. Could someone help me?
> >
> > Thanks
> >
> > Ozan
> - - - - - - - - -
> Unless I am mistaken, the quantity 'Easil' can be expressed as the ratio of two quadratics in 'Vs'. I see no reason why the symbolic toolbox cannot find an explicit solution for the indefinite double integral of such an expression. Perhaps you are confusing 'int' with all the different constants you have defined, or perhaps writing
>
> Vs=(((zeta/2)+(1/2))^ne)*((eta/2)^me);
>
> instead of the simpler
>
> Vs = (zeta+1)*eta/4
>
> is leading it astray.
>
> I would suggest not using 'ne' and 'me' since they are both equal to 1, and consolidating the other known constants into whatever coefficients occur in the above-mentioned quadratic ratio. Then 'int' might succeed. You will find the 'simple' and 'simplify' commands of great assistance in that endeavor.
>
> Another possibility is that with the given limits of integration for your definite integrals, the integrand becomes non-integrable - that is, it gives an infinite or indeterminate value. Matlab might give up in such a case. I would suggest you make a study of the above quadratic denominator to see where zeros might occur for zeta and eta values between -1 and +1. If it is non-integrable, you are giving matlab an impossible task.
>
> Roger Stafford

Thank you for your interest Roger,

Actually the values 'ne' and 'me' are not constant. I need to find the results for different 'ne' and 'me' values changing between zero and infinite. Because of this I can not simplify it.

Additionally, I changed the integral limits to see if the limits are cause of non-integrablity, but I saw that it is not related with the limits.

Regards

Subject: couldn't find the reason of warning "Explicit integral could not be found"

From: Roger Stafford

Date: 11 Mar, 2012 14:23:11

Message: 4 of 5

"Ozan" wrote in message <jjhvpk$plp$1@newscl01ah.mathworks.com>...
> Actually the values 'ne' and 'me' are not constant. I need to find the results for different 'ne' and 'me' values changing between zero and infinite. Because of this I can not simplify it.
>
> Additionally, I changed the integral limits to see if the limits are cause of non-integrablity, but I saw that it is not related with the limits.
- - - - - - - - - -
  I looked over your problem a little more carefully. Even for 'ne' and 'me' equal to 1, the second, outer integration leads to what is known as a dilog function. You can read about this in the Wikipedia site:

 http://en.wikipedia.org/wiki/Polylogarithm

  A very simplified version of your problem can be expressed as:

 syms x y
 int(int(1/(2+x*y),y,-1,1),x,0,2)

The inner integral is easily found:

 int(1/(2+x*y),y,-1,1) = log((2+x)/(2-x))/x

This latter is a more difficult function and its integral can only be expressed in terms of the dilog function which is not regarded as one of the elementary functions and apparently caused your computer to give up on it and state that the "Explicit integral could not be found".

  With 'ne' and 'me' having values other than 1, you cannot hope to find symbolic solutions to your general problem using matlab and will have to resort to numerical integration. Fortunately Matlab has routines that will find double integrals numerically. One of them is 'dblquad' and another is 'quad2d'.

  You are right about the integrability of your function. With the constant values you specified, the quadratic denominator of your integrand does not have either of its two roots of 'Vs' within the range of the integration limits you specified and the integrand is therefore integrable within that domain. However, they are nearby so be careful about expanding those limits.

Roger Stafford

Subject: couldn't find the reason of warning "Explicit integral could not be found"

From: Roger Stafford

Date: 11 Mar, 2012 14:35:11

Message: 5 of 5

"Roger Stafford" wrote in message <jjicgf$27j$1@newscl01ah.mathworks.com>...
> .......
> int(int(1/(2+x*y),y,-1,1),x,0,2)
> .......
- - - - - - - -
  I should have used something like 1/(3+x*y) in my simplified example to ensure its integrability over the stated range of x and y.

Roger Stafford

Tags for this Thread

No tags are associated with this thread.

What are tags?

A tag is like a keyword or category label associated with each thread. Tags make it easier for you to find threads of interest.

Anyone can tag a thread. Tags are public and visible to everyone.

Contact us