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:
Double Integral Singularities quad2d

Subject: Double Integral Singularities quad2d

From: S

Date: 24 Oct, 2011 08:52:11

Message: 1 of 23

Hi,

I have a problem in solving the double integral below in matlab.

As I increase f and g to larger values then matlab complains of singularity and unsuccessful integration.

3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y) ./ 4 - 2*cos(y).*(cos(y) + cos(x)) dxdy

Over limits -pi to pi for x and -pi to pi for y.

I have been using:
quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)

Can anyone please help? How can I overcome this problem as I would like to integrate this function for various 'f' and 'g' up to ~2000.

Thanks!

Subject: Double Integral Singularities quad2d

From: Torsten

Date: 24 Oct, 2011 09:15:35

Message: 2 of 23

On 24 Okt., 10:52, "S " <simaher2...@yahoo.co.uk> wrote:
> Hi,
>
> I have a problem in solving the double integral below in matlab.
>
> As I increase f and g to larger values then matlab complains of singularity and unsuccessful integration.
>
> 3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 - 2*cos(y).*(cos(y) + cos(x)) dxdy
>
> Over limits -pi to pi for x and -pi to pi for y.
>
> I have been using:
> quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)
>
> Can anyone please help? How can I overcome this problem as I would like to integrate this function for various 'f' and 'g' up to ~2000.
>
> Thanks!

Since the period of your function becomes smaller and smaller with
increasing values for f and g,
you should integrate it analytically with the help of MATLAB's int.

Best wishes
Torsten.

Subject: Double Integral Singularities quad2d

From: S

Date: 24 Oct, 2011 09:24:13

Message: 3 of 23

Torsten <Torsten.Hennig@umsicht.fraunhofer.de> wrote in message <41a15ffe-e999-41b9-8261-bd74f589cb23@l12g2000vby.googlegroups.com>...
> On 24 Okt., 10:52, "S " <simaher2...@yahoo.co.uk> wrote:
> > Hi,
> >
> > I have a problem in solving the double integral below in matlab.
> >
> > As I increase f and g to larger values then matlab complains of singularity and unsuccessful integration.
> >
> > 3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 - 2*cos(y).*(cos(y) + cos(x)) dxdy
> >
> > Over limits -pi to pi for x and -pi to pi for y.
> >
> > I have been using:
> > quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)
> >
> > Can anyone please help? How can I overcome this problem as I would like to integrate this function for various 'f' and 'g' up to ~2000.
> >
> > Thanks!
>
> Since the period of your function becomes smaller and smaller with
> increasing values for f and g,
> you should integrate it analytically with the help of MATLAB's int.
>
> Best wishes
> Torsten.

Hi Torsten,

Thanks for your reply.

I take your point but I would like to integrate this numerically. Ideally, I would like to compute the integral for various f and g.

Any ideas how I can do this?

Subject: Double Integral Singularities quad2d

From: Torsten

Date: 24 Oct, 2011 09:40:39

Message: 4 of 23

On 24 Okt., 11:24, "S " <simaher2...@yahoo.co.uk> wrote:
> Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <41a15ffe-e999-41b9-8261-bd74f589c...@l12g2000vby.googlegroups.com>...
> > On 24 Okt., 10:52, "S " <simaher2...@yahoo.co.uk> wrote:
> > > Hi,
>
> > > I have a problem in solving the double integral below in matlab.
>
> > > As I increase f and g to larger values then matlab complains of singularity and unsuccessful integration.
>
> > > 3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 - 2*cos(y).*(cos(y) + cos(x)) dxdy
>
> > > Over limits -pi to pi for x and -pi to pi for y.
>
> > > I have been using:
> > > quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)
>
> > > Can anyone please help? How can I overcome this problem as I would like to integrate this function for various 'f' and 'g' up to ~2000.
>
> > > Thanks!
>
> > Since the period of your function becomes smaller and smaller with
> > increasing values for f and g,
> > you should integrate it analytically with the help of MATLAB's int.
>
> > Best wishes
> > Torsten.
>
> Hi Torsten,
>
> Thanks for your reply.
>
> I take your point but I would like to integrate this numerically. Ideally, I would like to compute the integral for various f and g.
>
> Any ideas how I can do this?- Zitierten Text ausblenden -
>
> - Zitierten Text anzeigen -

Can you prescribe an initial x- and y-grid for MATLAB's quad2d ?
If so, choose the increment in x and y very small to ensure that your
highly oscillating function
is sufficiently resolved.
To get an impression of your function, you should plot it for high
values of f and g.
Do you see now why quad2d has difficulties to integrate it
numerically ?

I repeat: Integrate your function _analytically_ using MATLAB's 'int'.

Best wishes
Torsten.

Subject: Double Integral Singularities quad2d

From: S

Date: 24 Oct, 2011 09:51:29

Message: 5 of 23

Torsten <Torsten.Hennig@umsicht.fraunhofer.de> wrote in message <db464627-33b0-456e-907c-47f521590d6c@f36g2000vbm.googlegroups.com>...
> On 24 Okt., 11:24, "S " <simaher2...@yahoo.co.uk> wrote:
> > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <41a15ffe-e999-41b9-8261-bd74f589c...@l12g2000vby.googlegroups.com>...
> > > On 24 Okt., 10:52, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > Hi,
> >
> > > > I have a problem in solving the double integral below in matlab.
> >
> > > > As I increase f and g to larger values then matlab complains of singularity and unsuccessful integration.
> >
> > > > 3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 - 2*cos(y).*(cos(y) + cos(x)) dxdy
> >
> > > > Over limits -pi to pi for x and -pi to pi for y.
> >
> > > > I have been using:
> > > > quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)
> >
> > > > Can anyone please help? How can I overcome this problem as I would like to integrate this function for various 'f' and 'g' up to ~2000.
> >
> > > > Thanks!
> >
> > > Since the period of your function becomes smaller and smaller with
> > > increasing values for f and g,
> > > you should integrate it analytically with the help of MATLAB's int.
> >
> > > Best wishes
> > > Torsten.
> >
> > Hi Torsten,
> >
> > Thanks for your reply.
> >
> > I take your point but I would like to integrate this numerically. Ideally, I would like to compute the integral for various f and g.
> >
> > Any ideas how I can do this?- Zitierten Text ausblenden -
> >
> > - Zitierten Text anzeigen -
>
> Can you prescribe an initial x- and y-grid for MATLAB's quad2d ?
> If so, choose the increment in x and y very small to ensure that your
> highly oscillating function
> is sufficiently resolved.
> To get an impression of your function, you should plot it for high
> values of f and g.
> Do you see now why quad2d has difficulties to integrate it
> numerically ?
>
> I repeat: Integrate your function _analytically_ using MATLAB's 'int'.
>
> Best wishes
> Torsten.
>
Thanks for your reply and so fast.

However, I do not have the symbolic toolbox installed :-(

Surely there must be another way?

Subject: Double Integral Singularities quad2d

From: Torsten

Date: 24 Oct, 2011 10:30:18

Message: 6 of 23

On 24 Okt., 11:51, "S " <simaher2...@yahoo.co.uk> wrote:
> Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <db464627-33b0-456e-907c-47f521590...@f36g2000vbm.googlegroups.com>...
> > On 24 Okt., 11:24, "S " <simaher2...@yahoo.co.uk> wrote:
> > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <41a15ffe-e999-41b9-8261-bd74f589c...@l12g2000vby.googlegroups.com>...
> > > > On 24 Okt., 10:52, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > Hi,
>
> > > > > I have a problem in solving the double integral below in matlab.
>
> > > > > As I increase f and g to larger values then matlab complains of singularity and unsuccessful integration.
>
> > > > > 3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 - 2*cos(y).*(cos(y) + cos(x)) dxdy
>
> > > > > Over limits -pi to pi for x and -pi to pi for y.
>
> > > > > I have been using:
> > > > > quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)
>
> > > > > Can anyone please help? How can I overcome this problem as I would like to integrate this function for various 'f' and 'g' up to ~2000.
>
> > > > > Thanks!
>
> > > > Since the period of your function becomes smaller and smaller with
> > > > increasing values for f and g,
> > > > you should integrate it analytically with the help of MATLAB's int.
>
> > > > Best wishes
> > > > Torsten.
>
> > > Hi Torsten,
>
> > > Thanks for your reply.
>
> > > I take your point but I would like to integrate this numerically. Ideally, I would like to compute the integral for various f and g.
>
> > > Any ideas how I can do this?- Zitierten Text ausblenden -
>
> > > - Zitierten Text anzeigen -
>
> > Can you prescribe an initial x- and y-grid for MATLAB's quad2d ?
> > If so, choose the increment in x and y very small to ensure that your
> > highly oscillating function
> > is sufficiently resolved.
> > To get an impression of your function, you should plot it for high
> > values of f and g.
> > Do you see now why quad2d has difficulties to integrate it
> > numerically ?
>
> > I repeat: Integrate your function _analytically_ using MATLAB's 'int'.
>
> > Best wishes
> > Torsten.
>
> Thanks for your reply and so fast.
>
> However, I do not have the symbolic toolbox installed :-(
>
> Surely there must be another way?- Zitierten Text ausblenden -
>
> - Zitierten Text anzeigen -

Using
http://integrals.wolfram.com
,I get
8*Pi^2 + sin(Pi*f)*sin(Pi*g)*(1/(g*(f-1)) + 8*g/(f*(1-g^2)))
for your integral.
But you should double-check the result.

Best wishes
Torsten.

Subject: Double Integral Singularities quad2d

From: S

Date: 24 Oct, 2011 15:18:26

Message: 7 of 23

Torsten <Torsten.Hennig@umsicht.fraunhofer.de> wrote in message <36eea4f4-4887-4557-8c14-744e0c5bb4d4@q13g2000vbd.googlegroups.com>...
> On 24 Okt., 11:51, "S " <simaher2...@yahoo.co.uk> wrote:
> > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <db464627-33b0-456e-907c-47f521590...@f36g2000vbm.googlegroups.com>...
> > > On 24 Okt., 11:24, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <41a15ffe-e999-41b9-8261-bd74f589c...@l12g2000vby.googlegroups.com>...
> > > > > On 24 Okt., 10:52, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > Hi,
> >
> > > > > > I have a problem in solving the double integral below in matlab.
> >
> > > > > > As I increase f and g to larger values then matlab complains of singularity and unsuccessful integration.
> >
> > > > > > 3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 - 2*cos(y).*(cos(y) + cos(x)) dxdy
> >
> > > > > > Over limits -pi to pi for x and -pi to pi for y.
> >
> > > > > > I have been using:
> > > > > > quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)
> >
> > > > > > Can anyone please help? How can I overcome this problem as I would like to integrate this function for various 'f' and 'g' up to ~2000.
> >
> > > > > > Thanks!
> >
> > > > > Since the period of your function becomes smaller and smaller with
> > > > > increasing values for f and g,
> > > > > you should integrate it analytically with the help of MATLAB's int.
> >
> > > > > Best wishes
> > > > > Torsten.
> >
> > > > Hi Torsten,
> >
> > > > Thanks for your reply.
> >
> > > > I take your point but I would like to integrate this numerically. Ideally, I would like to compute the integral for various f and g.
> >
> > > > Any ideas how I can do this?- Zitierten Text ausblenden -
> >
> > > > - Zitierten Text anzeigen -
> >
> > > Can you prescribe an initial x- and y-grid for MATLAB's quad2d ?
> > > If so, choose the increment in x and y very small to ensure that your
> > > highly oscillating function
> > > is sufficiently resolved.
> > > To get an impression of your function, you should plot it for high
> > > values of f and g.
> > > Do you see now why quad2d has difficulties to integrate it
> > > numerically ?
> >
> > > I repeat: Integrate your function _analytically_ using MATLAB's 'int'.
> >
> > > Best wishes
> > > Torsten.
> >
> > Thanks for your reply and so fast.
> >
> > However, I do not have the symbolic toolbox installed :-(
> >
> > Surely there must be another way?- Zitierten Text ausblenden -
> >
> > - Zitierten Text anzeigen -
>
> Using
> http://integrals.wolfram.com
> ,I get
> 8*Pi^2 + sin(Pi*f)*sin(Pi*g)*(1/(g*(f-1)) + 8*g/(f*(1-g^2)))
> for your integral.
> But you should double-check the result.
>
> Best wishes
> Torsten.

Thanks for reply.

@ Torsten. Very good website btw. However, the website is unable to integrate the function.

Subject: Double Integral Singularities quad2d

From: Roger Stafford

Date: 24 Oct, 2011 15:40:47

Message: 8 of 23

"S" wrote in message <j838vr$9nu$1@newscl01ah.mathworks.com>...
> Hi,
>
> I have a problem in solving the double integral below in matlab.
>
> As I increase f and g to larger values then matlab complains of singularity and unsuccessful integration.
>
> 3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y) ./ 4 - 2*cos(y).*(cos(y) + cos(x)) dxdy
>
> Over limits -pi to pi for x and -pi to pi for y.
>
> I have been using:
> quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)
>
> Can anyone please help? How can I overcome this problem as I would like to integrate this function for various 'f' and 'g' up to ~2000.
>
> Thanks!
- - - - - - - - - - - -
  Torsten is right. There is no point in subjecting matlab to a torturous numerical integration procedure for high values of f and g when a simple formula exists which can be obtained with pen and paper using elementary calculus. For example, the product 2*cos(y)*cos(f*x+g*y) can be manipulated this way:

 2*cos(y)*cos(f*x+g*y) = 2*cos(y)*(cos(f*x)*cos(g*y)-sin(f*x)*sin(g*y)) =
 cos(f*x)*2*cos(y)*cos(g*y) - sin(f*x)*2*cos(y)*sin(g*y) =
 cos(f*x)*(cos((g+1)*y)+cos((g-1)*y)) ...
      - sin(f*x)*(sin((g+1)*y)+sin((g-1)*y)) =
 cos(f*x)*cos((g+1)*y) + cos(f*x)*cos((g-1)*y) ...
      - sin(f*x)*sin((g+1)*y) - sin(f*x)*sin((g-1)*y)

In each of these last four terms the double integral can be obtained as the separate product of single integrals with respect to x and y respectively, and can therefore be easily evaluated.

Roger Stafford

Subject: Double Integral Singularities quad2d

From: S

Date: 24 Oct, 2011 16:10:33

Message: 9 of 23

"Roger Stafford" wrote in message <j840tv$s2i$1@newscl01ah.mathworks.com>...
> "S" wrote in message <j838vr$9nu$1@newscl01ah.mathworks.com>...
> > Hi,
> >
> > I have a problem in solving the double integral below in matlab.
> >
> > As I increase f and g to larger values then matlab complains of singularity and unsuccessful integration.
> >
> > 3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y) ./ 4 - 2*cos(y).*(cos(y) + cos(x)) dxdy
> >
> > Over limits -pi to pi for x and -pi to pi for y.
> >
> > I have been using:
> > quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)
> >
> > Can anyone please help? How can I overcome this problem as I would like to integrate this function for various 'f' and 'g' up to ~2000.
> >
> > Thanks!
> - - - - - - - - - - - -
> Torsten is right. There is no point in subjecting matlab to a torturous numerical integration procedure for high values of f and g when a simple formula exists which can be obtained with pen and paper using elementary calculus. For example, the product 2*cos(y)*cos(f*x+g*y) can be manipulated this way:
>
> 2*cos(y)*cos(f*x+g*y) = 2*cos(y)*(cos(f*x)*cos(g*y)-sin(f*x)*sin(g*y)) =
> cos(f*x)*2*cos(y)*cos(g*y) - sin(f*x)*2*cos(y)*sin(g*y) =
> cos(f*x)*(cos((g+1)*y)+cos((g-1)*y)) ...
> - sin(f*x)*(sin((g+1)*y)+sin((g-1)*y)) =
> cos(f*x)*cos((g+1)*y) + cos(f*x)*cos((g-1)*y) ...
> - sin(f*x)*sin((g+1)*y) - sin(f*x)*sin((g-1)*y)
>
> In each of these last four terms the double integral can be obtained as the separate product of single integrals with respect to x and y respectively, and can therefore be easily evaluated.
>
> Roger Stafford

Thanks for your reply Roger.

Sorry, I dont follow you. Please forgive me for being a abit slow but I'm not sure what you are getting at.

Subject: Double Integral Singularities quad2d

From: Roger Stafford

Date: 24 Oct, 2011 17:07:23

Message: 10 of 23

"S" wrote in message <j842lp$4qi$1@newscl01ah.mathworks.com>...
> Sorry, I dont follow you. Please forgive me for being a abit slow but I'm not sure what you are getting at.
- - - - - - - -
  I'm not sure what puzzles you when you say "what you are getting at".

  If it is the double integration analysis, consider for example the single term cos(f*x)*cos((g+1)*y) which I obtained. This expression has "separable" factors and its double integral from -pi to +pi for both x and y is therefore simply the product of the single integrals of cos(f*x) with x ranging from -pi to +pi and of cos((g+1)*y) with y ranging from -pi to +pi, which would be easily evaluated as:

 (sin(pi*f)-sin(-pi*f))/f * (sin(pi*(g+1)-sin(-pi*(g+1))/(g+1) =
 2*sin(pi*f)/f * 2*sin(pi*(g+1))/(g+1)

Thus its double integral has an analytic expression with no numerical integration required. The same reasoning applies for all the other terms that can be derived in your integrand.

  If your uncertainty is due to not seeing why the numerical double integration would be "torturous", Torsten's suggestion that you should try plotting your function for high values of f and g should show you very dramatically why that would be a most difficult procedure. On an ordinary 'plot3' plot it would appear as a complete blur. It's no wonder that 'quad2d' refused to cooperate.

Roger Stafford

Subject: Double Integral Singularities quad2d

From: Torsten

Date: 25 Oct, 2011 06:55:06

Message: 11 of 23

On 24 Okt., 17:18, "S " <simaher2...@yahoo.co.uk> wrote:
> Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <36eea4f4-4887-4557-8c14-744e0c5bb...@q13g2000vbd.googlegroups.com>...
> > On 24 Okt., 11:51, "S " <simaher2...@yahoo.co.uk> wrote:
> > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <db464627-33b0-456e-907c-47f521590...@f36g2000vbm.googlegroups.com>...
> > > > On 24 Okt., 11:24, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <41a15ffe-e999-41b9-8261-bd74f589c...@l12g2000vby.googlegroups.com>...
> > > > > > On 24 Okt., 10:52, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > Hi,
>
> > > > > > > I have a problem in solving the double integral below in matlab.
>
> > > > > > > As I increase f and g to larger values then matlab complains of singularity and unsuccessful integration.
>
> > > > > > > 3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 - 2*cos(y).*(cos(y) + cos(x)) dxdy
>
> > > > > > > Over limits -pi to pi for x and -pi to pi for y.
>
> > > > > > > I have been using:
> > > > > > > quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)
>
> > > > > > > Can anyone please help? How can I overcome this problem as I would like to integrate this function for various 'f' and 'g' up to ~2000.
>
> > > > > > > Thanks!
>
> > > > > > Since the period of your function becomes smaller and smaller with
> > > > > > increasing values for f and g,
> > > > > > you should integrate it analytically with the help of MATLAB's int.
>
> > > > > > Best wishes
> > > > > > Torsten.
>
> > > > > Hi Torsten,
>
> > > > > Thanks for your reply.
>
> > > > > I take your point but I would like to integrate this numerically. Ideally, I would like to compute the integral for various f and g.
>
> > > > > Any ideas how I can do this?- Zitierten Text ausblenden -
>
> > > > > - Zitierten Text anzeigen -
>
> > > > Can you prescribe an initial x- and y-grid for MATLAB's quad2d ?
> > > > If so, choose the increment in x and y very small to ensure that your
> > > > highly oscillating function
> > > > is sufficiently resolved.
> > > > To get an impression of your function, you should plot it for high
> > > > values of f and g.
> > > > Do you see now why quad2d has difficulties to integrate it
> > > > numerically ?
>
> > > > I repeat: Integrate your function _analytically_ using MATLAB's 'int'.
>
> > > > Best wishes
> > > > Torsten.
>
> > > Thanks for your reply and so fast.
>
> > > However, I do not have the symbolic toolbox installed :-(
>
> > > Surely there must be another way?- Zitierten Text ausblenden -
>
> > > - Zitierten Text anzeigen -
>
> > Using
> >http://integrals.wolfram.com
> > ,I get
> > 8*Pi^2 + sin(Pi*f)*sin(Pi*g)*(1/(g*(f-1)) + 8*g/(f*(1-g^2)))
> > for your integral.
> > But you should double-check the result.
>
> > Best wishes
> > Torsten.
>
> Thanks for reply.
>
> @ Torsten. Very good website btw. However, the website is unable to integrate the function.- Zitierten Text ausblenden -
>
> - Zitierten Text anzeigen -

Use the website as follows:
First integrate your function with respect to x by treating y as
constant:
int(3) = 3*x
int(- 2*cos(y)*cos(f*x+g*y))=-2*cos(y)*1/f*sin(f*x+g*y)
int(- cos((f-1)*x + g*y) ./ 4 ) = -1/(f-1)*sin((f-1)*x + g*y)/4
int(- 2*cos(y).*(cos(y))=-2*x*cos^2(y)
int(- 2*cos(y).*cos(x)) = -2*cos(y)*sin(x)
Thus
int(3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y) ./ 4 -
2*cos(y).*(cos(y) + cos(x)) dx) =
3*x-2*cos(y)*1/f*sin(f*x+g*y)-1/(f-1)*sin((f-1)*x + g*y)/
4-2*x*cos^2(y)-2*cos(y)*sin(x)
Evaluate in the limits between -pi and pi:
3*pi-2*cos(y)*1/f*sin(f*pi+g*y)-1/(f-1)*sin((f-1)*pi + g*y)/
4-2*pi*cos^2(y) -
( 3*(-pi)-2*cos(y)*1/f*sin(-f*pi+g*y)-1/(f-1)*sin(-(f-1)*pi + g*y)/
4-2*(-pi)*cos^2(y)) =
6*pi-2*cos(y)*1/f*(sin(f*pi+g*y)-sin(-f*pi+g*y))-0.25/
(f-1)*(sin((f-1)*pi + g*y)-sin(-(f-1)*pi + g*y))-4*pi*cos^2(y)
Now use the
http://integrals.wolfram.com
to integrate this expression term by term.
(Of course you have to substitute the y in the expressions by an x
because the wolfram-integrator assumes
the functions to integrate to depend on the variable x).
Subsequently evaluate in the limits between -pi and pi.

The cases in which f=0 and |g|=1 may be treated seperately.

Best wishes
Torsten.

Subject: Double Integral Singularities quad2d

From: S

Date: 25 Oct, 2011 09:06:28

Message: 12 of 23

Torsten <Torsten.Hennig@umsicht.fraunhofer.de> wrote in message <272cde32-3068-4756-baba-6252dcd80cbd@c1g2000vbw.googlegroups.com>...
> On 24 Okt., 17:18, "S " <simaher2...@yahoo.co.uk> wrote:
> > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <36eea4f4-4887-4557-8c14-744e0c5bb...@q13g2000vbd.googlegroups.com>...
> > > On 24 Okt., 11:51, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <db464627-33b0-456e-907c-47f521590...@f36g2000vbm.googlegroups.com>...
> > > > > On 24 Okt., 11:24, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <41a15ffe-e999-41b9-8261-bd74f589c...@l12g2000vby.googlegroups.com>...
> > > > > > > On 24 Okt., 10:52, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > Hi,
> >
> > > > > > > > I have a problem in solving the double integral below in matlab.
> >
> > > > > > > > As I increase f and g to larger values then matlab complains of singularity and unsuccessful integration.
> >
> > > > > > > > 3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 - 2*cos(y).*(cos(y) + cos(x)) dxdy
> >
> > > > > > > > Over limits -pi to pi for x and -pi to pi for y.
> >
> > > > > > > > I have been using:
> > > > > > > > quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)
> >
> > > > > > > > Can anyone please help? How can I overcome this problem as I would like to integrate this function for various 'f' and 'g' up to ~2000.
> >
> > > > > > > > Thanks!
> >
> > > > > > > Since the period of your function becomes smaller and smaller with
> > > > > > > increasing values for f and g,
> > > > > > > you should integrate it analytically with the help of MATLAB's int.
> >
> > > > > > > Best wishes
> > > > > > > Torsten.
> >
> > > > > > Hi Torsten,
> >
> > > > > > Thanks for your reply.
> >
> > > > > > I take your point but I would like to integrate this numerically. Ideally, I would like to compute the integral for various f and g.
> >
> > > > > > Any ideas how I can do this?- Zitierten Text ausblenden -
> >
> > > > > > - Zitierten Text anzeigen -
> >
> > > > > Can you prescribe an initial x- and y-grid for MATLAB's quad2d ?
> > > > > If so, choose the increment in x and y very small to ensure that your
> > > > > highly oscillating function
> > > > > is sufficiently resolved.
> > > > > To get an impression of your function, you should plot it for high
> > > > > values of f and g.
> > > > > Do you see now why quad2d has difficulties to integrate it
> > > > > numerically ?
> >
> > > > > I repeat: Integrate your function _analytically_ using MATLAB's 'int'.
> >
> > > > > Best wishes
> > > > > Torsten.
> >
> > > > Thanks for your reply and so fast.
> >
> > > > However, I do not have the symbolic toolbox installed :-(
> >
> > > > Surely there must be another way?- Zitierten Text ausblenden -
> >
> > > > - Zitierten Text anzeigen -
> >
> > > Using
> > >http://integrals.wolfram.com
> > > ,I get
> > > 8*Pi^2 + sin(Pi*f)*sin(Pi*g)*(1/(g*(f-1)) + 8*g/(f*(1-g^2)))
> > > for your integral.
> > > But you should double-check the result.
> >
> > > Best wishes
> > > Torsten.
> >
> > Thanks for reply.
> >
> > @ Torsten. Very good website btw. However, the website is unable to integrate the function.- Zitierten Text ausblenden -
> >
> > - Zitierten Text anzeigen -
>
> Use the website as follows:
> First integrate your function with respect to x by treating y as
> constant:
> int(3) = 3*x
> int(- 2*cos(y)*cos(f*x+g*y))=-2*cos(y)*1/f*sin(f*x+g*y)
> int(- cos((f-1)*x + g*y) ./ 4 ) = -1/(f-1)*sin((f-1)*x + g*y)/4
> int(- 2*cos(y).*(cos(y))=-2*x*cos^2(y)
> int(- 2*cos(y).*cos(x)) = -2*cos(y)*sin(x)
> Thus
> int(3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y) ./ 4 -
> 2*cos(y).*(cos(y) + cos(x)) dx) =
> 3*x-2*cos(y)*1/f*sin(f*x+g*y)-1/(f-1)*sin((f-1)*x + g*y)/
> 4-2*x*cos^2(y)-2*cos(y)*sin(x)
> Evaluate in the limits between -pi and pi:
> 3*pi-2*cos(y)*1/f*sin(f*pi+g*y)-1/(f-1)*sin((f-1)*pi + g*y)/
> 4-2*pi*cos^2(y) -
> ( 3*(-pi)-2*cos(y)*1/f*sin(-f*pi+g*y)-1/(f-1)*sin(-(f-1)*pi + g*y)/
> 4-2*(-pi)*cos^2(y)) =
> 6*pi-2*cos(y)*1/f*(sin(f*pi+g*y)-sin(-f*pi+g*y))-0.25/
> (f-1)*(sin((f-1)*pi + g*y)-sin(-(f-1)*pi + g*y))-4*pi*cos^2(y)
> Now use the
> http://integrals.wolfram.com
> to integrate this expression term by term.
> (Of course you have to substitute the y in the expressions by an x
> because the wolfram-integrator assumes
> the functions to integrate to depend on the variable x).
> Subsequently evaluate in the limits between -pi and pi.
>
> The cases in which f=0 and |g|=1 may be treated seperately.
>
> Best wishes
> Torsten.

Im really sorry. I see where some of my misgivings have coome from.

In my initial post I forgot to include the brackets around the denominator. The function is:
(3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y))  ./  (4 - 2*cos(y).*(cos(y) + cos(x))) dxdy

Really sorry about that.

Subject: Double Integral Singularities quad2d

From: Torsten

Date: 25 Oct, 2011 10:51:47

Message: 13 of 23

On 25 Okt., 11:06, "S " <simaher2...@yahoo.co.uk> wrote:
> Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <272cde32-3068-4756-baba-6252dcd80...@c1g2000vbw.googlegroups.com>...
> > On 24 Okt., 17:18, "S " <simaher2...@yahoo.co.uk> wrote:
> > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <36eea4f4-4887-4557-8c14-744e0c5bb...@q13g2000vbd.googlegroups.com>...
> > > > On 24 Okt., 11:51, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <db464627-33b0-456e-907c-47f521590...@f36g2000vbm.googlegroups.com>...
> > > > > > On 24 Okt., 11:24, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <41a15ffe-e999-41b9-8261-bd74f589c...@l12g2000vby.googlegroups.com>...
> > > > > > > > On 24 Okt., 10:52, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > Hi,
>
> > > > > > > > > I have a problem in solving the double integral below in matlab.
>
> > > > > > > > > As I increase f and g to larger values then matlab complains of singularity and unsuccessful integration.
>
> > > > > > > > > 3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 - 2*cos(y).*(cos(y) + cos(x)) dxdy
>
> > > > > > > > > Over limits -pi to pi for x and -pi to pi for y.
>
> > > > > > > > > I have been using:
> > > > > > > > > quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)
>
> > > > > > > > > Can anyone please help? How can I overcome this problem as I would like to integrate this function for various 'f' and 'g' up to ~2000.
>
> > > > > > > > > Thanks!
>
> > > > > > > > Since the period of your function becomes smaller and smaller with
> > > > > > > > increasing values for f and g,
> > > > > > > > you should integrate it analytically with the help of MATLAB's int.
>
> > > > > > > > Best wishes
> > > > > > > > Torsten.
>
> > > > > > > Hi Torsten,
>
> > > > > > > Thanks for your reply.
>
> > > > > > > I take your point but I would like to integrate this numerically. Ideally, I would like to compute the integral for various f and g.
>
> > > > > > > Any ideas how I can do this?- Zitierten Text ausblenden -
>
> > > > > > > - Zitierten Text anzeigen -
>
> > > > > > Can you prescribe an initial x- and y-grid for MATLAB's quad2d ?
> > > > > > If so, choose the increment in x and y very small to ensure that your
> > > > > > highly oscillating function
> > > > > > is sufficiently resolved.
> > > > > > To get an impression of your function, you should plot it for high
> > > > > > values of f and g.
> > > > > > Do you see now why quad2d has difficulties to integrate it
> > > > > > numerically ?
>
> > > > > > I repeat: Integrate your function _analytically_ using MATLAB's 'int'.
>
> > > > > > Best wishes
> > > > > > Torsten.
>
> > > > > Thanks for your reply and so fast.
>
> > > > > However, I do not have the symbolic toolbox installed :-(
>
> > > > > Surely there must be another way?- Zitierten Text ausblenden -
>
> > > > > - Zitierten Text anzeigen -
>
> > > > Using
> > > >http://integrals.wolfram.com
> > > > ,I get
> > > > 8*Pi^2 + sin(Pi*f)*sin(Pi*g)*(1/(g*(f-1)) + 8*g/(f*(1-g^2)))
> > > > for your integral.
> > > > But you should double-check the result.
>
> > > > Best wishes
> > > > Torsten.
>
> > > Thanks for reply.
>
> > > @ Torsten. Very good website btw. However, the website is unable to integrate the function.- Zitierten Text ausblenden -
>
> > > - Zitierten Text anzeigen -
>
> > Use the website as follows:
> > First integrate your function with respect to x by treating y as
> > constant:
> > int(3) = 3*x
> > int(- 2*cos(y)*cos(f*x+g*y))=-2*cos(y)*1/f*sin(f*x+g*y)
> > int(- cos((f-1)*x + g*y)  ./  4 ) = -1/(f-1)*sin((f-1)*x + g*y)/4
> > int(- 2*cos(y).*(cos(y))=-2*x*cos^2(y)
> > int(- 2*cos(y).*cos(x)) = -2*cos(y)*sin(x)
> > Thus
> > int(3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 -
> > 2*cos(y).*(cos(y) + cos(x)) dx) =
> > 3*x-2*cos(y)*1/f*sin(f*x+g*y)-1/(f-1)*sin((f-1)*x + g*y)/
> > 4-2*x*cos^2(y)-2*cos(y)*sin(x)
> > Evaluate in the limits between -pi and pi:
> > 3*pi-2*cos(y)*1/f*sin(f*pi+g*y)-1/(f-1)*sin((f-1)*pi + g*y)/
> > 4-2*pi*cos^2(y) -
> > ( 3*(-pi)-2*cos(y)*1/f*sin(-f*pi+g*y)-1/(f-1)*sin(-(f-1)*pi + g*y)/
> > 4-2*(-pi)*cos^2(y)) =
> > 6*pi-2*cos(y)*1/f*(sin(f*pi+g*y)-sin(-f*pi+g*y))-0.25/
> > (f-1)*(sin((f-1)*pi + g*y)-sin(-(f-1)*pi + g*y))-4*pi*cos^2(y)
> > Now use the
> >http://integrals.wolfram.com
> > to integrate this expression term by term.
> > (Of course you have to substitute the y in the expressions by an x
> > because the wolfram-integrator assumes
> > the functions to integrate to depend on the variable x).
> > Subsequently evaluate in the limits between -pi and pi.
>
> > The cases in which f=0 and |g|=1 may be treated seperately.
>
> > Best wishes
> > Torsten.
>
> Im really sorry. I see where some of my misgivings have coome from.
>
> In my initial post I forgot to include the brackets around the denominator. The function is:
> (3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y))  ./  (4 - 2*cos(y).*(cos(y) + cos(x))) dxdy
>
> Really sorry about that.- Zitierten Text ausblenden -
>
> - Zitierten Text anzeigen -

Then - as a further difficulty - you will have problems with the
points where your
denominator gets zero, e.g. (0,0) or (pi,pi) (where (pi,pi) is more
critical than
(0,0) because the numerator usually is different from 0 there).
This might explain the error message of quad2d (if you entered the
function
correctly in the MATLAB-file).

Best wishes
Torsten.

Subject: Double Integral Singularities quad2d

From: S

Date: 25 Oct, 2011 12:13:30

Message: 14 of 23

Torsten <Torsten.Hennig@umsicht.fraunhofer.de> wrote in message <d15f286c-7e52-4d35-8bad-9d77923e72a0@p16g2000yqj.googlegroups.com>...
> On 25 Okt., 11:06, "S " <simaher2...@yahoo.co.uk> wrote:
> > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <272cde32-3068-4756-baba-6252dcd80...@c1g2000vbw.googlegroups.com>...
> > > On 24 Okt., 17:18, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <36eea4f4-4887-4557-8c14-744e0c5bb...@q13g2000vbd.googlegroups.com>...
> > > > > On 24 Okt., 11:51, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <db464627-33b0-456e-907c-47f521590...@f36g2000vbm.googlegroups.com>...
> > > > > > > On 24 Okt., 11:24, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <41a15ffe-e999-41b9-8261-bd74f589c...@l12g2000vby.googlegroups.com>...
> > > > > > > > > On 24 Okt., 10:52, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > Hi,
> >
> > > > > > > > > > I have a problem in solving the double integral below in matlab.
> >
> > > > > > > > > > As I increase f and g to larger values then matlab complains of singularity and unsuccessful integration.
> >
> > > > > > > > > > 3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 - 2*cos(y).*(cos(y) + cos(x)) dxdy
> >
> > > > > > > > > > Over limits -pi to pi for x and -pi to pi for y.
> >
> > > > > > > > > > I have been using:
> > > > > > > > > > quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)
> >
> > > > > > > > > > Can anyone please help? How can I overcome this problem as I would like to integrate this function for various 'f' and 'g' up to ~2000.
> >
> > > > > > > > > > Thanks!
> >
> > > > > > > > > Since the period of your function becomes smaller and smaller with
> > > > > > > > > increasing values for f and g,
> > > > > > > > > you should integrate it analytically with the help of MATLAB's int.
> >
> > > > > > > > > Best wishes
> > > > > > > > > Torsten.
> >
> > > > > > > > Hi Torsten,
> >
> > > > > > > > Thanks for your reply.
> >
> > > > > > > > I take your point but I would like to integrate this numerically. Ideally, I would like to compute the integral for various f and g.
> >
> > > > > > > > Any ideas how I can do this?- Zitierten Text ausblenden -
> >
> > > > > > > > - Zitierten Text anzeigen -
> >
> > > > > > > Can you prescribe an initial x- and y-grid for MATLAB's quad2d ?
> > > > > > > If so, choose the increment in x and y very small to ensure that your
> > > > > > > highly oscillating function
> > > > > > > is sufficiently resolved.
> > > > > > > To get an impression of your function, you should plot it for high
> > > > > > > values of f and g.
> > > > > > > Do you see now why quad2d has difficulties to integrate it
> > > > > > > numerically ?
> >
> > > > > > > I repeat: Integrate your function _analytically_ using MATLAB's 'int'.
> >
> > > > > > > Best wishes
> > > > > > > Torsten.
> >
> > > > > > Thanks for your reply and so fast.
> >
> > > > > > However, I do not have the symbolic toolbox installed :-(
> >
> > > > > > Surely there must be another way?- Zitierten Text ausblenden -
> >
> > > > > > - Zitierten Text anzeigen -
> >
> > > > > Using
> > > > >http://integrals.wolfram.com
> > > > > ,I get
> > > > > 8*Pi^2 + sin(Pi*f)*sin(Pi*g)*(1/(g*(f-1)) + 8*g/(f*(1-g^2)))
> > > > > for your integral.
> > > > > But you should double-check the result.
> >
> > > > > Best wishes
> > > > > Torsten.
> >
> > > > Thanks for reply.
> >
> > > > @ Torsten. Very good website btw. However, the website is unable to integrate the function.- Zitierten Text ausblenden -
> >
> > > > - Zitierten Text anzeigen -
> >
> > > Use the website as follows:
> > > First integrate your function with respect to x by treating y as
> > > constant:
> > > int(3) = 3*x
> > > int(- 2*cos(y)*cos(f*x+g*y))=-2*cos(y)*1/f*sin(f*x+g*y)
> > > int(- cos((f-1)*x + g*y)  ./  4 ) = -1/(f-1)*sin((f-1)*x + g*y)/4
> > > int(- 2*cos(y).*(cos(y))=-2*x*cos^2(y)
> > > int(- 2*cos(y).*cos(x)) = -2*cos(y)*sin(x)
> > > Thus
> > > int(3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 -
> > > 2*cos(y).*(cos(y) + cos(x)) dx) =
> > > 3*x-2*cos(y)*1/f*sin(f*x+g*y)-1/(f-1)*sin((f-1)*x + g*y)/
> > > 4-2*x*cos^2(y)-2*cos(y)*sin(x)
> > > Evaluate in the limits between -pi and pi:
> > > 3*pi-2*cos(y)*1/f*sin(f*pi+g*y)-1/(f-1)*sin((f-1)*pi + g*y)/
> > > 4-2*pi*cos^2(y) -
> > > ( 3*(-pi)-2*cos(y)*1/f*sin(-f*pi+g*y)-1/(f-1)*sin(-(f-1)*pi + g*y)/
> > > 4-2*(-pi)*cos^2(y)) =
> > > 6*pi-2*cos(y)*1/f*(sin(f*pi+g*y)-sin(-f*pi+g*y))-0.25/
> > > (f-1)*(sin((f-1)*pi + g*y)-sin(-(f-1)*pi + g*y))-4*pi*cos^2(y)
> > > Now use the
> > >http://integrals.wolfram.com
> > > to integrate this expression term by term.
> > > (Of course you have to substitute the y in the expressions by an x
> > > because the wolfram-integrator assumes
> > > the functions to integrate to depend on the variable x).
> > > Subsequently evaluate in the limits between -pi and pi.
> >
> > > The cases in which f=0 and |g|=1 may be treated seperately.
> >
> > > Best wishes
> > > Torsten.
> >
> > Im really sorry. I see where some of my misgivings have coome from.
> >
> > In my initial post I forgot to include the brackets around the denominator. The function is:
> > (3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y))  ./  (4 - 2*cos(y).*(cos(y) + cos(x))) dxdy
> >
> > Really sorry about that.- Zitierten Text ausblenden -
> >
> > - Zitierten Text anzeigen -
>
> Then - as a further difficulty - you will have problems with the
> points where your
> denominator gets zero, e.g. (0,0) or (pi,pi) (where (pi,pi) is more
> critical than
> (0,0) because the numerator usually is different from 0 there).
> This might explain the error message of quad2d (if you entered the
> function
> correctly in the MATLAB-file).
>
> Best wishes
> Torsten.

Hi thanks for reply.

Yes, this is the problem. Any ideas how I might somehow be able to manoeuvre this???

cheers

Subject: Double Integral Singularities quad2d

From: Torsten

Date: 26 Oct, 2011 06:29:48

Message: 15 of 23

On 25 Okt., 14:13, "S " <simaher2...@yahoo.co.uk> wrote:
> Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <d15f286c-7e52-4d35-8bad-9d77923e7...@p16g2000yqj.googlegroups.com>...
> > On 25 Okt., 11:06, "S " <simaher2...@yahoo.co.uk> wrote:
> > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <272cde32-3068-4756-baba-6252dcd80...@c1g2000vbw.googlegroups.com>...
> > > > On 24 Okt., 17:18, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <36eea4f4-4887-4557-8c14-744e0c5bb...@q13g2000vbd.googlegroups.com>...
> > > > > > On 24 Okt., 11:51, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <db464627-33b0-456e-907c-47f521590...@f36g2000vbm.googlegroups.com>...
> > > > > > > > On 24 Okt., 11:24, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <41a15ffe-e999-41b9-8261-bd74f589c...@l12g2000vby.googlegroups.com>...
> > > > > > > > > > On 24 Okt., 10:52, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > Hi,
>
> > > > > > > > > > > I have a problem in solving the double integral below in matlab.
>
> > > > > > > > > > > As I increase f and g to larger values then matlab complains of singularity and unsuccessful integration.
>
> > > > > > > > > > > 3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 - 2*cos(y).*(cos(y) + cos(x)) dxdy
>
> > > > > > > > > > > Over limits -pi to pi for x and -pi to pi for y.
>
> > > > > > > > > > > I have been using:
> > > > > > > > > > > quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)
>
> > > > > > > > > > > Can anyone please help? How can I overcome this problem as I would like to integrate this function for various 'f' and 'g' up to ~2000.
>
> > > > > > > > > > > Thanks!
>
> > > > > > > > > > Since the period of your function becomes smaller and smaller with
> > > > > > > > > > increasing values for f and g,
> > > > > > > > > > you should integrate it analytically with the help of MATLAB's int.
>
> > > > > > > > > > Best wishes
> > > > > > > > > > Torsten.
>
> > > > > > > > > Hi Torsten,
>
> > > > > > > > > Thanks for your reply.
>
> > > > > > > > > I take your point but I would like to integrate this numerically. Ideally, I would like to compute the integral for various f and g.
>
> > > > > > > > > Any ideas how I can do this?- Zitierten Text ausblenden -
>
> > > > > > > > > - Zitierten Text anzeigen -
>
> > > > > > > > Can you prescribe an initial x- and y-grid for MATLAB's quad2d ?
> > > > > > > > If so, choose the increment in x and y very small to ensure that your
> > > > > > > > highly oscillating function
> > > > > > > > is sufficiently resolved.
> > > > > > > > To get an impression of your function, you should plot it for high
> > > > > > > > values of f and g.
> > > > > > > > Do you see now why quad2d has difficulties to integrate it
> > > > > > > > numerically ?
>
> > > > > > > > I repeat: Integrate your function _analytically_ using MATLAB's 'int'.
>
> > > > > > > > Best wishes
> > > > > > > > Torsten.
>
> > > > > > > Thanks for your reply and so fast.
>
> > > > > > > However, I do not have the symbolic toolbox installed :-(
>
> > > > > > > Surely there must be another way?- Zitierten Text ausblenden -
>
> > > > > > > - Zitierten Text anzeigen -
>
> > > > > > Using
> > > > > >http://integrals.wolfram.com
> > > > > > ,I get
> > > > > > 8*Pi^2 + sin(Pi*f)*sin(Pi*g)*(1/(g*(f-1)) + 8*g/(f*(1-g^2)))
> > > > > > for your integral.
> > > > > > But you should double-check the result.
>
> > > > > > Best wishes
> > > > > > Torsten.
>
> > > > > Thanks for reply.
>
> > > > > @ Torsten. Very good website btw. However, the website is unable to integrate the function.- Zitierten Text ausblenden -
>
> > > > > - Zitierten Text anzeigen -
>
> > > > Use the website as follows:
> > > > First integrate your function with respect to x by treating y as
> > > > constant:
> > > > int(3) = 3*x
> > > > int(- 2*cos(y)*cos(f*x+g*y))=-2*cos(y)*1/f*sin(f*x+g*y)
> > > > int(- cos((f-1)*x + g*y)  ./  4 ) = -1/(f-1)*sin((f-1)*x + g*y)/4
> > > > int(- 2*cos(y).*(cos(y))=-2*x*cos^2(y)
> > > > int(- 2*cos(y).*cos(x)) = -2*cos(y)*sin(x)
> > > > Thus
> > > > int(3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 -
> > > > 2*cos(y).*(cos(y) + cos(x)) dx) =
> > > > 3*x-2*cos(y)*1/f*sin(f*x+g*y)-1/(f-1)*sin((f-1)*x + g*y)/
> > > > 4-2*x*cos^2(y)-2*cos(y)*sin(x)
> > > > Evaluate in the limits between -pi and pi:
> > > > 3*pi-2*cos(y)*1/f*sin(f*pi+g*y)-1/(f-1)*sin((f-1)*pi + g*y)/
> > > > 4-2*pi*cos^2(y) -
> > > > ( 3*(-pi)-2*cos(y)*1/f*sin(-f*pi+g*y)-1/(f-1)*sin(-(f-1)*pi + g*y)/
> > > > 4-2*(-pi)*cos^2(y)) =
> > > > 6*pi-2*cos(y)*1/f*(sin(f*pi+g*y)-sin(-f*pi+g*y))-0.25/
> > > > (f-1)*(sin((f-1)*pi + g*y)-sin(-(f-1)*pi + g*y))-4*pi*cos^2(y)
> > > > Now use the
> > > >http://integrals.wolfram.com
> > > > to integrate this expression term by term.
> > > > (Of course you have to substitute the y in the expressions by an x
> > > > because the wolfram-integrator assumes
> > > > the functions to integrate to depend on the variable x).
> > > > Subsequently evaluate in the limits between -pi and pi.
>
> > > > The cases in which f=0 and |g|=1 may be treated seperately.
>
> > > > Best wishes
> > > > Torsten.
>
> > > Im really sorry. I see where some of my misgivings have coome from.
>
> > > In my initial post I forgot to include the brackets around the denominator. The function is:
> > > (3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y))  ./  (4 - 2*cos(y).*(cos(y) + cos(x))) dxdy
>
> > > Really sorry about that.- Zitierten Text ausblenden -
>
> > > - Zitierten Text anzeigen -
>
> > Then - as a further difficulty - you will have problems with the
> > points where your
> > denominator gets zero, e.g. (0,0) or (pi,pi) (where (pi,pi) is more
> > critical than
> > (0,0) because the numerator usually is different from 0 there).
> > This might explain the error message of quad2d (if you entered the
> > function
> > correctly in the MATLAB-file).
>
> > Best wishes
> > Torsten.
>
> Hi thanks for reply.
>
> Yes, this is the problem. Any ideas how I might somehow be able to manoeuvre this???
>
> cheers- Zitierten Text ausblenden -
>
> - Zitierten Text anzeigen -

Thinking about your function, I'm pretty sure that it is not
integrable over
[-pi;pi]x[-pi;pi] (at least for all values of f and g such that the
numerator -
evaluated at (+-pi/+-pi) - is different from 0).
The reason is that in the neighbourhood of (+-pi/+-pi), the
denominator
behaves like (3*x^2+y^2) near (0,0), and the function 1/(3*x^2+y^2) is
not
integrable over a domain including (0,0).

Best wishes
Torsten.

Subject: Double Integral Singularities quad2d

From: S

Date: 26 Oct, 2011 07:11:14

Message: 16 of 23

Torsten <Torsten.Hennig@umsicht.fraunhofer.de> wrote in message <05f56d39-0191-45b8-9fd8-286f5a444363@r28g2000yqj.googlegroups.com>...
> On 25 Okt., 14:13, "S " <simaher2...@yahoo.co.uk> wrote:
> > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <d15f286c-7e52-4d35-8bad-9d77923e7...@p16g2000yqj.googlegroups.com>...
> > > On 25 Okt., 11:06, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <272cde32-3068-4756-baba-6252dcd80...@c1g2000vbw.googlegroups.com>...
> > > > > On 24 Okt., 17:18, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <36eea4f4-4887-4557-8c14-744e0c5bb...@q13g2000vbd.googlegroups.com>...
> > > > > > > On 24 Okt., 11:51, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <db464627-33b0-456e-907c-47f521590...@f36g2000vbm.googlegroups.com>...
> > > > > > > > > On 24 Okt., 11:24, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <41a15ffe-e999-41b9-8261-bd74f589c...@l12g2000vby.googlegroups.com>...
> > > > > > > > > > > On 24 Okt., 10:52, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > > Hi,
> >
> > > > > > > > > > > > I have a problem in solving the double integral below in matlab.
> >
> > > > > > > > > > > > As I increase f and g to larger values then matlab complains of singularity and unsuccessful integration.
> >
> > > > > > > > > > > > 3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 - 2*cos(y).*(cos(y) + cos(x)) dxdy
> >
> > > > > > > > > > > > Over limits -pi to pi for x and -pi to pi for y.
> >
> > > > > > > > > > > > I have been using:
> > > > > > > > > > > > quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)
> >
> > > > > > > > > > > > Can anyone please help? How can I overcome this problem as I would like to integrate this function for various 'f' and 'g' up to ~2000.
> >
> > > > > > > > > > > > Thanks!
> >
> > > > > > > > > > > Since the period of your function becomes smaller and smaller with
> > > > > > > > > > > increasing values for f and g,
> > > > > > > > > > > you should integrate it analytically with the help of MATLAB's int.
> >
> > > > > > > > > > > Best wishes
> > > > > > > > > > > Torsten.
> >
> > > > > > > > > > Hi Torsten,
> >
> > > > > > > > > > Thanks for your reply.
> >
> > > > > > > > > > I take your point but I would like to integrate this numerically. Ideally, I would like to compute the integral for various f and g.
> >
> > > > > > > > > > Any ideas how I can do this?- Zitierten Text ausblenden -
> >
> > > > > > > > > > - Zitierten Text anzeigen -
> >
> > > > > > > > > Can you prescribe an initial x- and y-grid for MATLAB's quad2d ?
> > > > > > > > > If so, choose the increment in x and y very small to ensure that your
> > > > > > > > > highly oscillating function
> > > > > > > > > is sufficiently resolved.
> > > > > > > > > To get an impression of your function, you should plot it for high
> > > > > > > > > values of f and g.
> > > > > > > > > Do you see now why quad2d has difficulties to integrate it
> > > > > > > > > numerically ?
> >
> > > > > > > > > I repeat: Integrate your function _analytically_ using MATLAB's 'int'.
> >
> > > > > > > > > Best wishes
> > > > > > > > > Torsten.
> >
> > > > > > > > Thanks for your reply and so fast.
> >
> > > > > > > > However, I do not have the symbolic toolbox installed :-(
> >
> > > > > > > > Surely there must be another way?- Zitierten Text ausblenden -
> >
> > > > > > > > - Zitierten Text anzeigen -
> >
> > > > > > > Using
> > > > > > >http://integrals.wolfram.com
> > > > > > > ,I get
> > > > > > > 8*Pi^2 + sin(Pi*f)*sin(Pi*g)*(1/(g*(f-1)) + 8*g/(f*(1-g^2)))
> > > > > > > for your integral.
> > > > > > > But you should double-check the result.
> >
> > > > > > > Best wishes
> > > > > > > Torsten.
> >
> > > > > > Thanks for reply.
> >
> > > > > > @ Torsten. Very good website btw. However, the website is unable to integrate the function.- Zitierten Text ausblenden -
> >
> > > > > > - Zitierten Text anzeigen -
> >
> > > > > Use the website as follows:
> > > > > First integrate your function with respect to x by treating y as
> > > > > constant:
> > > > > int(3) = 3*x
> > > > > int(- 2*cos(y)*cos(f*x+g*y))=-2*cos(y)*1/f*sin(f*x+g*y)
> > > > > int(- cos((f-1)*x + g*y)  ./  4 ) = -1/(f-1)*sin((f-1)*x + g*y)/4
> > > > > int(- 2*cos(y).*(cos(y))=-2*x*cos^2(y)
> > > > > int(- 2*cos(y).*cos(x)) = -2*cos(y)*sin(x)
> > > > > Thus
> > > > > int(3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 -
> > > > > 2*cos(y).*(cos(y) + cos(x)) dx) =
> > > > > 3*x-2*cos(y)*1/f*sin(f*x+g*y)-1/(f-1)*sin((f-1)*x + g*y)/
> > > > > 4-2*x*cos^2(y)-2*cos(y)*sin(x)
> > > > > Evaluate in the limits between -pi and pi:
> > > > > 3*pi-2*cos(y)*1/f*sin(f*pi+g*y)-1/(f-1)*sin((f-1)*pi + g*y)/
> > > > > 4-2*pi*cos^2(y) -
> > > > > ( 3*(-pi)-2*cos(y)*1/f*sin(-f*pi+g*y)-1/(f-1)*sin(-(f-1)*pi + g*y)/
> > > > > 4-2*(-pi)*cos^2(y)) =
> > > > > 6*pi-2*cos(y)*1/f*(sin(f*pi+g*y)-sin(-f*pi+g*y))-0.25/
> > > > > (f-1)*(sin((f-1)*pi + g*y)-sin(-(f-1)*pi + g*y))-4*pi*cos^2(y)
> > > > > Now use the
> > > > >http://integrals.wolfram.com
> > > > > to integrate this expression term by term.
> > > > > (Of course you have to substitute the y in the expressions by an x
> > > > > because the wolfram-integrator assumes
> > > > > the functions to integrate to depend on the variable x).
> > > > > Subsequently evaluate in the limits between -pi and pi.
> >
> > > > > The cases in which f=0 and |g|=1 may be treated seperately.
> >
> > > > > Best wishes
> > > > > Torsten.
> >
> > > > Im really sorry. I see where some of my misgivings have coome from.
> >
> > > > In my initial post I forgot to include the brackets around the denominator. The function is:
> > > > (3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y))  ./  (4 - 2*cos(y).*(cos(y) + cos(x))) dxdy
> >
> > > > Really sorry about that.- Zitierten Text ausblenden -
> >
> > > > - Zitierten Text anzeigen -
> >
> > > Then - as a further difficulty - you will have problems with the
> > > points where your
> > > denominator gets zero, e.g. (0,0) or (pi,pi) (where (pi,pi) is more
> > > critical than
> > > (0,0) because the numerator usually is different from 0 there).
> > > This might explain the error message of quad2d (if you entered the
> > > function
> > > correctly in the MATLAB-file).
> >
> > > Best wishes
> > > Torsten.
> >
> > Hi thanks for reply.
> >
> > Yes, this is the problem. Any ideas how I might somehow be able to manoeuvre this???
> >
> > cheers- Zitierten Text ausblenden -
> >
> > - Zitierten Text anzeigen -
>
> Thinking about your function, I'm pretty sure that it is not
> integrable over
> [-pi;pi]x[-pi;pi] (at least for all values of f and g such that the
> numerator -
> evaluated at (+-pi/+-pi) - is different from 0).
> The reason is that in the neighbourhood of (+-pi/+-pi), the
> denominator
> behaves like (3*x^2+y^2) near (0,0), and the function 1/(3*x^2+y^2) is
> not
> integrable over a domain including (0,0).
>
> Best wishes
> Torsten.

Hi,

Thanks for your reply and continual help - its much appreciated!

-How can I get round this then?
-Could I integrate from -pi to (0-delta) and add the result to the integration from (0+delta) to pi??? Would that work?
-Additionally, I dont quite understand why matlab is happy to integrate the function for certain values of f and g and not others?

merci

Subject: Double Integral Singularities quad2d

From: Torsten

Date: 26 Oct, 2011 07:34:08

Message: 17 of 23

On 26 Okt., 09:11, "S " <simaher2...@yahoo.co.uk> wrote:
> Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <05f56d39-0191-45b8-9fd8-286f5a444...@r28g2000yqj.googlegroups.com>...
> > On 25 Okt., 14:13, "S " <simaher2...@yahoo.co.uk> wrote:
> > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <d15f286c-7e52-4d35-8bad-9d77923e7...@p16g2000yqj.googlegroups.com>...
> > > > On 25 Okt., 11:06, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <272cde32-3068-4756-baba-6252dcd80...@c1g2000vbw.googlegroups.com>...
> > > > > > On 24 Okt., 17:18, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <36eea4f4-4887-4557-8c14-744e0c5bb...@q13g2000vbd.googlegroups.com>...
> > > > > > > > On 24 Okt., 11:51, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <db464627-33b0-456e-907c-47f521590...@f36g2000vbm.googlegroups.com>...
> > > > > > > > > > On 24 Okt., 11:24, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <41a15ffe-e999-41b9-8261-bd74f589c...@l12g2000vby.googlegroups.com>...
> > > > > > > > > > > > On 24 Okt., 10:52, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > > > Hi,
>
> > > > > > > > > > > > > I have a problem in solving the double integral below in matlab.
>
> > > > > > > > > > > > > As I increase f and g to larger values then matlab complains of singularity and unsuccessful integration.
>
> > > > > > > > > > > > > 3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 - 2*cos(y).*(cos(y) + cos(x)) dxdy
>
> > > > > > > > > > > > > Over limits -pi to pi for x and -pi to pi for y.
>
> > > > > > > > > > > > > I have been using:
> > > > > > > > > > > > > quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)
>
> > > > > > > > > > > > > Can anyone please help? How can I overcome this problem as I would like to integrate this function for various 'f' and 'g' up to ~2000.
>
> > > > > > > > > > > > > Thanks!
>
> > > > > > > > > > > > Since the period of your function becomes smaller and smaller with
> > > > > > > > > > > > increasing values for f and g,
> > > > > > > > > > > > you should integrate it analytically with the help of MATLAB's int.
>
> > > > > > > > > > > > Best wishes
> > > > > > > > > > > > Torsten.
>
> > > > > > > > > > > Hi Torsten,
>
> > > > > > > > > > > Thanks for your reply.
>
> > > > > > > > > > > I take your point but I would like to integrate this numerically. Ideally, I would like to compute the integral for various f and g.
>
> > > > > > > > > > > Any ideas how I can do this?- Zitierten Text ausblenden -
>
> > > > > > > > > > > - Zitierten Text anzeigen -
>
> > > > > > > > > > Can you prescribe an initial x- and y-grid for MATLAB's quad2d ?
> > > > > > > > > > If so, choose the increment in x and y very small to ensure that your
> > > > > > > > > > highly oscillating function
> > > > > > > > > > is sufficiently resolved.
> > > > > > > > > > To get an impression of your function, you should plot it for high
> > > > > > > > > > values of f and g.
> > > > > > > > > > Do you see now why quad2d has difficulties to integrate it
> > > > > > > > > > numerically ?
>
> > > > > > > > > > I repeat: Integrate your function _analytically_ using MATLAB's 'int'.
>
> > > > > > > > > > Best wishes
> > > > > > > > > > Torsten.
>
> > > > > > > > > Thanks for your reply and so fast.
>
> > > > > > > > > However, I do not have the symbolic toolbox installed :-(
>
> > > > > > > > > Surely there must be another way?- Zitierten Text ausblenden -
>
> > > > > > > > > - Zitierten Text anzeigen -
>
> > > > > > > > Using
> > > > > > > >http://integrals.wolfram.com
> > > > > > > > ,I get
> > > > > > > > 8*Pi^2 + sin(Pi*f)*sin(Pi*g)*(1/(g*(f-1)) + 8*g/(f*(1-g^2)))
> > > > > > > > for your integral.
> > > > > > > > But you should double-check the result.
>
> > > > > > > > Best wishes
> > > > > > > > Torsten.
>
> > > > > > > Thanks for reply.
>
> > > > > > > @ Torsten. Very good website btw. However, the website is unable to integrate the function.- Zitierten Text ausblenden -
>
> > > > > > > - Zitierten Text anzeigen -
>
> > > > > > Use the website as follows:
> > > > > > First integrate your function with respect to x by treating y as
> > > > > > constant:
> > > > > > int(3) = 3*x
> > > > > > int(- 2*cos(y)*cos(f*x+g*y))=-2*cos(y)*1/f*sin(f*x+g*y)
> > > > > > int(- cos((f-1)*x + g*y)  ./  4 ) = -1/(f-1)*sin((f-1)*x + g*y)/4
> > > > > > int(- 2*cos(y).*(cos(y))=-2*x*cos^2(y)
> > > > > > int(- 2*cos(y).*cos(x)) = -2*cos(y)*sin(x)
> > > > > > Thus
> > > > > > int(3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 -
> > > > > > 2*cos(y).*(cos(y) + cos(x)) dx) =
> > > > > > 3*x-2*cos(y)*1/f*sin(f*x+g*y)-1/(f-1)*sin((f-1)*x + g*y)/
> > > > > > 4-2*x*cos^2(y)-2*cos(y)*sin(x)
> > > > > > Evaluate in the limits between -pi and pi:
> > > > > > 3*pi-2*cos(y)*1/f*sin(f*pi+g*y)-1/(f-1)*sin((f-1)*pi + g*y)/
> > > > > > 4-2*pi*cos^2(y) -
> > > > > > ( 3*(-pi)-2*cos(y)*1/f*sin(-f*pi+g*y)-1/(f-1)*sin(-(f-1)*pi + g*y)/
> > > > > > 4-2*(-pi)*cos^2(y)) =
> > > > > > 6*pi-2*cos(y)*1/f*(sin(f*pi+g*y)-sin(-f*pi+g*y))-0.25/
> > > > > > (f-1)*(sin((f-1)*pi + g*y)-sin(-(f-1)*pi + g*y))-4*pi*cos^2(y)
> > > > > > Now use the
> > > > > >http://integrals.wolfram.com
> > > > > > to integrate this expression term by term.
> > > > > > (Of course you have to substitute the y in the expressions by an x
> > > > > > because the wolfram-integrator assumes
> > > > > > the functions to integrate to depend on the variable x).
> > > > > > Subsequently evaluate in the limits between -pi and pi.
>
> > > > > > The cases in which f=0 and |g|=1 may be treated seperately.
>
> > > > > > Best wishes
> > > > > > Torsten.
>
> > > > > Im really sorry. I see where some of my misgivings have coome from.
>
> > > > > In my initial post I forgot to include the brackets around the denominator. The function is:
> > > > > (3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y))  ./  (4 - 2*cos(y).*(cos(y) + cos(x))) dxdy
>
> > > > > Really sorry about that.- Zitierten Text ausblenden -
>
> > > > > - Zitierten Text anzeigen -
>
> > > > Then - as a further difficulty - you will have problems with the
> > > > points where your
> > > > denominator gets zero, e.g. (0,0) or (pi,pi) (where (pi,pi) is more
> > > > critical than
> > > > (0,0) because the numerator usually is different from 0 there).
> > > > This might explain the error message of quad2d (if you entered the
> > > > function
> > > > correctly in the MATLAB-file).
>
> > > > Best wishes
> > > > Torsten.
>
> > > Hi thanks for reply.
>
> > > Yes, this is the problem. Any ideas how I might somehow be able to manoeuvre this???
>
> > > cheers- Zitierten Text ausblenden -
>
> > > - Zitierten Text anzeigen -
>
> > Thinking about your function, I'm pretty sure that it is not
> > integrable over
> > [-pi;pi]x[-pi;pi] (at least for all values of f and g such that the
> > numerator -
> > evaluated at (+-pi/+-pi) - is different from 0).
> > The reason is that in the neighbourhood of (+-pi/+-pi), the
> > denominator
> > behaves like (3*x^2+y^2) near (0,0), and the function 1/(3*x^2+y^2) is
> > not
> > integrable over a domain including (0,0).
>
> > Best wishes
> > Torsten.
>
> Hi,
>
> Thanks for your reply and continual help - its much appreciated!
>
> -How can I get round this then?
> -Could I integrate from -pi to (0-delta) and add the result to the integration from (0+delta) to pi??? Would that work?

I did not yet analyze if (0,0) is a problem - the problem I had in
mind are the corner points of your domain
(i.e. (pi/pi),(-pi/pi),(-pi,-pi),(pi,-pi)).
It won't help to integrate up to a certain delta away from the
singularity because the result will
depend on that delta - simply because the integral of your function
over [-pi;pi]x[-pi;pi] is infinity.

> -Additionally, I dont quite understand why matlab is happy to integrate the function for certain values of f and g and not others?
>

I suspect these are numerical artefacts. Could you specify values of f
and g for which the integration
is successful and report the value MATLAB suggests for the integral ?

> merci- Zitierten Text ausblenden -
>
> - Zitierten Text anzeigen -

Best wishes
Torsten.

Subject: Double Integral Singularities quad2d

From: S

Date: 26 Oct, 2011 15:01:14

Message: 18 of 23

Torsten <Torsten.Hennig@umsicht.fraunhofer.de> wrote in message <77e489a5-70a9-42a2-a577-3db5271345bc@eh5g2000vbb.googlegroups.com>...
> On 26 Okt., 09:11, "S " <simaher2...@yahoo.co.uk> wrote:
> > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <05f56d39-0191-45b8-9fd8-286f5a444...@r28g2000yqj.googlegroups.com>...
> > > On 25 Okt., 14:13, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <d15f286c-7e52-4d35-8bad-9d77923e7...@p16g2000yqj.googlegroups.com>...
> > > > > On 25 Okt., 11:06, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <272cde32-3068-4756-baba-6252dcd80...@c1g2000vbw.googlegroups.com>...
> > > > > > > On 24 Okt., 17:18, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <36eea4f4-4887-4557-8c14-744e0c5bb...@q13g2000vbd.googlegroups.com>...
> > > > > > > > > On 24 Okt., 11:51, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <db464627-33b0-456e-907c-47f521590...@f36g2000vbm.googlegroups.com>...
> > > > > > > > > > > On 24 Okt., 11:24, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <41a15ffe-e999-41b9-8261-bd74f589c...@l12g2000vby.googlegroups.com>...
> > > > > > > > > > > > > On 24 Okt., 10:52, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > > > > Hi,
> >
> > > > > > > > > > > > > > I have a problem in solving the double integral below in matlab.
> >
> > > > > > > > > > > > > > As I increase f and g to larger values then matlab complains of singularity and unsuccessful integration.
> >
> > > > > > > > > > > > > > 3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 - 2*cos(y).*(cos(y) + cos(x)) dxdy
> >
> > > > > > > > > > > > > > Over limits -pi to pi for x and -pi to pi for y.
> >
> > > > > > > > > > > > > > I have been using:
> > > > > > > > > > > > > > quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)
> >
> > > > > > > > > > > > > > Can anyone please help? How can I overcome this problem as I would like to integrate this function for various 'f' and 'g' up to ~2000.
> >
> > > > > > > > > > > > > > Thanks!
> >
> > > > > > > > > > > > > Since the period of your function becomes smaller and smaller with
> > > > > > > > > > > > > increasing values for f and g,
> > > > > > > > > > > > > you should integrate it analytically with the help of MATLAB's int.
> >
> > > > > > > > > > > > > Best wishes
> > > > > > > > > > > > > Torsten.
> >
> > > > > > > > > > > > Hi Torsten,
> >
> > > > > > > > > > > > Thanks for your reply.
> >
> > > > > > > > > > > > I take your point but I would like to integrate this numerically. Ideally, I would like to compute the integral for various f and g.
> >
> > > > > > > > > > > > Any ideas how I can do this?- Zitierten Text ausblenden -
> >
> > > > > > > > > > > > - Zitierten Text anzeigen -
> >
> > > > > > > > > > > Can you prescribe an initial x- and y-grid for MATLAB's quad2d ?
> > > > > > > > > > > If so, choose the increment in x and y very small to ensure that your
> > > > > > > > > > > highly oscillating function
> > > > > > > > > > > is sufficiently resolved.
> > > > > > > > > > > To get an impression of your function, you should plot it for high
> > > > > > > > > > > values of f and g.
> > > > > > > > > > > Do you see now why quad2d has difficulties to integrate it
> > > > > > > > > > > numerically ?
> >
> > > > > > > > > > > I repeat: Integrate your function _analytically_ using MATLAB's 'int'.
> >
> > > > > > > > > > > Best wishes
> > > > > > > > > > > Torsten.
> >
> > > > > > > > > > Thanks for your reply and so fast.
> >
> > > > > > > > > > However, I do not have the symbolic toolbox installed :-(
> >
> > > > > > > > > > Surely there must be another way?- Zitierten Text ausblenden -
> >
> > > > > > > > > > - Zitierten Text anzeigen -
> >
> > > > > > > > > Using
> > > > > > > > >http://integrals.wolfram.com
> > > > > > > > > ,I get
> > > > > > > > > 8*Pi^2 + sin(Pi*f)*sin(Pi*g)*(1/(g*(f-1)) + 8*g/(f*(1-g^2)))
> > > > > > > > > for your integral.
> > > > > > > > > But you should double-check the result.
> >
> > > > > > > > > Best wishes
> > > > > > > > > Torsten.
> >
> > > > > > > > Thanks for reply.
> >
> > > > > > > > @ Torsten. Very good website btw. However, the website is unable to integrate the function.- Zitierten Text ausblenden -
> >
> > > > > > > > - Zitierten Text anzeigen -
> >
> > > > > > > Use the website as follows:
> > > > > > > First integrate your function with respect to x by treating y as
> > > > > > > constant:
> > > > > > > int(3) = 3*x
> > > > > > > int(- 2*cos(y)*cos(f*x+g*y))=-2*cos(y)*1/f*sin(f*x+g*y)
> > > > > > > int(- cos((f-1)*x + g*y)  ./  4 ) = -1/(f-1)*sin((f-1)*x + g*y)/4
> > > > > > > int(- 2*cos(y).*(cos(y))=-2*x*cos^2(y)
> > > > > > > int(- 2*cos(y).*cos(x)) = -2*cos(y)*sin(x)
> > > > > > > Thus
> > > > > > > int(3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 -
> > > > > > > 2*cos(y).*(cos(y) + cos(x)) dx) =
> > > > > > > 3*x-2*cos(y)*1/f*sin(f*x+g*y)-1/(f-1)*sin((f-1)*x + g*y)/
> > > > > > > 4-2*x*cos^2(y)-2*cos(y)*sin(x)
> > > > > > > Evaluate in the limits between -pi and pi:
> > > > > > > 3*pi-2*cos(y)*1/f*sin(f*pi+g*y)-1/(f-1)*sin((f-1)*pi + g*y)/
> > > > > > > 4-2*pi*cos^2(y) -
> > > > > > > ( 3*(-pi)-2*cos(y)*1/f*sin(-f*pi+g*y)-1/(f-1)*sin(-(f-1)*pi + g*y)/
> > > > > > > 4-2*(-pi)*cos^2(y)) =
> > > > > > > 6*pi-2*cos(y)*1/f*(sin(f*pi+g*y)-sin(-f*pi+g*y))-0.25/
> > > > > > > (f-1)*(sin((f-1)*pi + g*y)-sin(-(f-1)*pi + g*y))-4*pi*cos^2(y)
> > > > > > > Now use the
> > > > > > >http://integrals.wolfram.com
> > > > > > > to integrate this expression term by term.
> > > > > > > (Of course you have to substitute the y in the expressions by an x
> > > > > > > because the wolfram-integrator assumes
> > > > > > > the functions to integrate to depend on the variable x).
> > > > > > > Subsequently evaluate in the limits between -pi and pi.
> >
> > > > > > > The cases in which f=0 and |g|=1 may be treated seperately.
> >
> > > > > > > Best wishes
> > > > > > > Torsten.
> >
> > > > > > Im really sorry. I see where some of my misgivings have coome from.
> >
> > > > > > In my initial post I forgot to include the brackets around the denominator. The function is:
> > > > > > (3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y))  ./  (4 - 2*cos(y).*(cos(y) + cos(x))) dxdy
> >
> > > > > > Really sorry about that.- Zitierten Text ausblenden -
> >
> > > > > > - Zitierten Text anzeigen -
> >
> > > > > Then - as a further difficulty - you will have problems with the
> > > > > points where your
> > > > > denominator gets zero, e.g. (0,0) or (pi,pi) (where (pi,pi) is more
> > > > > critical than
> > > > > (0,0) because the numerator usually is different from 0 there).
> > > > > This might explain the error message of quad2d (if you entered the
> > > > > function
> > > > > correctly in the MATLAB-file).
> >
> > > > > Best wishes
> > > > > Torsten.
> >
> > > > Hi thanks for reply.
> >
> > > > Yes, this is the problem. Any ideas how I might somehow be able to manoeuvre this???
> >
> > > > cheers- Zitierten Text ausblenden -
> >
> > > > - Zitierten Text anzeigen -
> >
> > > Thinking about your function, I'm pretty sure that it is not
> > > integrable over
> > > [-pi;pi]x[-pi;pi] (at least for all values of f and g such that the
> > > numerator -
> > > evaluated at (+-pi/+-pi) - is different from 0).
> > > The reason is that in the neighbourhood of (+-pi/+-pi), the
> > > denominator
> > > behaves like (3*x^2+y^2) near (0,0), and the function 1/(3*x^2+y^2) is
> > > not
> > > integrable over a domain including (0,0).
> >
> > > Best wishes
> > > Torsten.
> >
> > Hi,
> >
> > Thanks for your reply and continual help - its much appreciated!
> >
> > -How can I get round this then?
> > -Could I integrate from -pi to (0-delta) and add the result to the integration from (0+delta) to pi??? Would that work?
>
> I did not yet analyze if (0,0) is a problem - the problem I had in
> mind are the corner points of your domain
> (i.e. (pi/pi),(-pi/pi),(-pi,-pi),(pi,-pi)).
> It won't help to integrate up to a certain delta away from the
> singularity because the result will
> depend on that delta - simply because the integral of your function
> over [-pi;pi]x[-pi;pi] is infinity.
>
> > -Additionally, I dont quite understand why matlab is happy to integrate the function for certain values of f and g and not others?
> >
>
> I suspect these are numerical artefacts. Could you specify values of f
> and g for which the integration
> is successful and report the value MATLAB suggests for the integral ?
>
> > merci- Zitierten Text ausblenden -
> >
> > - Zitierten Text anzeigen -
>
> Best wishes
> Torsten.

Hi Thanks Torsten.

Ideally-------------
Ideally, I would like to evaluate the integral for all points where (f+g) is

odd in the interval (0,0) to (2000,2000).

Test-------------
However, what I did:
Integrating from (0,0) to (0,1000) and (1,0) to (1,1000) and (2,0) to (2,000).

Essentially taking the first 3 rows.
(quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi,'MaxFunEvals',1e5));
And storing results in a 3x1001 array.
[*Note: ideally I want to run to 2000,2000 but will take along time. Also, I have included a check for (f+g) = even, and not computed that result.]
temp = (f+g);
if( floor((temp/2)) == (temp/2) )
flag_even=1;

Errors:-------------
Matlab outputs multiple errors of 2 kinds:
1. Warning: Reached the maximum number of function evaluations (100000). The result fails the global error test.
> In quad2d at 248
  In Grid_Mesh_Hex at 94
2. Warning: Non-finite result. The integration was unsuccessful. Singularity likely.
> In quad2d at 242
  In Grid_Mesh_Hex at 94

Result:-------------
For (f+g) is odd, all 3 rows give the correct answers up to and including column 133 for row 0. After that I get Inf up until 177 on row 0. Then more Inf until 241. Then a result. Then more Inf until 249 then a result. More Inf until 263.From 263 to 295 inclusive I get results again (results in the region of ~149).
This sort of sporadic output of Inf and numerical results continues. Similar sporadic patterns of results and Inf are evident for the other 2 rows.

Example Results:
e.g) (1,0) = 26.31; (3,0) = 48.58;
(0,1) = 26.31; (2,1) = 43.53
(1,2) = 48.58

Taking the curve fit of row 0 for the first 129 points (every other point where f+g is odd). The results follow the expected pattern of a*ln(x) + b.
For the higher values of f and/or g the change in the result should become less and less. These 'Inf' results are incorrect.
Hope this is useful.

Please help.

Thanks.

Subject: Double Integral Singularities quad2d

From: Torsten

Date: 27 Oct, 2011 12:01:15

Message: 19 of 23

On 26 Okt., 17:01, "S " <simaher2...@yahoo.co.uk> wrote:
> Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <77e489a5-70a9-42a2-a577-3db527134...@eh5g2000vbb.googlegroups.com>...
> > On 26 Okt., 09:11, "S " <simaher2...@yahoo.co.uk> wrote:
> > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <05f56d39-0191-45b8-9fd8-286f5a444...@r28g2000yqj.googlegroups.com>...
> > > > On 25 Okt., 14:13, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <d15f286c-7e52-4d35-8bad-9d77923e7...@p16g2000yqj.googlegroups.com>...
> > > > > > On 25 Okt., 11:06, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <272cde32-3068-4756-baba-6252dcd80...@c1g2000vbw.googlegroups.com>...
> > > > > > > > On 24 Okt., 17:18, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <36eea4f4-4887-4557-8c14-744e0c5bb...@q13g2000vbd.googlegroups.com>...
> > > > > > > > > > On 24 Okt., 11:51, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <db464627-33b0-456e-907c-47f521590...@f36g2000vbm.googlegroups.com>...
> > > > > > > > > > > > On 24 Okt., 11:24, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <41a15ffe-e999-41b9-8261-bd74f589c...@l12g2000vby.googlegroups.com>...
> > > > > > > > > > > > > > On 24 Okt., 10:52, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > > > > > Hi,
>
> > > > > > > > > > > > > > > I have a problem in solving the double integral below in matlab.
>
> > > > > > > > > > > > > > > As I increase f and g to larger values then matlab complains of singularity and unsuccessful integration.
>
> > > > > > > > > > > > > > > 3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 - 2*cos(y).*(cos(y) + cos(x)) dxdy
>
> > > > > > > > > > > > > > > Over limits -pi to pi for x and -pi to pi for y.
>
> > > > > > > > > > > > > > > I have been using:
> > > > > > > > > > > > > > > quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)
>
> > > > > > > > > > > > > > > Can anyone please help? How can I overcome this problem as I would like to integrate this function for various 'f' and 'g' up to ~2000.
>
> > > > > > > > > > > > > > > Thanks!
>
> > > > > > > > > > > > > > Since the period of your function becomes smaller and smaller with
> > > > > > > > > > > > > > increasing values for f and g,
> > > > > > > > > > > > > > you should integrate it analytically with the help of MATLAB's int.
>
> > > > > > > > > > > > > > Best wishes
> > > > > > > > > > > > > > Torsten.
>
> > > > > > > > > > > > > Hi Torsten,
>
> > > > > > > > > > > > > Thanks for your reply.
>
> > > > > > > > > > > > > I take your point but I would like to integrate this numerically. Ideally, I would like to compute the integral for various f and g.
>
> > > > > > > > > > > > > Any ideas how I can do this?- Zitierten Text ausblenden -
>
> > > > > > > > > > > > > - Zitierten Text anzeigen -
>
> > > > > > > > > > > > Can you prescribe an initial x- and y-grid for MATLAB's quad2d ?
> > > > > > > > > > > > If so, choose the increment in x and y very small to ensure that your
> > > > > > > > > > > > highly oscillating function
> > > > > > > > > > > > is sufficiently resolved.
> > > > > > > > > > > > To get an impression of your function, you should plot it for high
> > > > > > > > > > > > values of f and g.
> > > > > > > > > > > > Do you see now why quad2d has difficulties to integrate it
> > > > > > > > > > > > numerically ?
>
> > > > > > > > > > > > I repeat: Integrate your function _analytically_ using MATLAB's 'int'.
>
> > > > > > > > > > > > Best wishes
> > > > > > > > > > > > Torsten.
>
> > > > > > > > > > > Thanks for your reply and so fast.
>
> > > > > > > > > > > However, I do not have the symbolic toolbox installed :-(
>
> > > > > > > > > > > Surely there must be another way?- Zitierten Text ausblenden -
>
> > > > > > > > > > > - Zitierten Text anzeigen -
>
> > > > > > > > > > Using
> > > > > > > > > >http://integrals.wolfram.com
> > > > > > > > > > ,I get
> > > > > > > > > > 8*Pi^2 + sin(Pi*f)*sin(Pi*g)*(1/(g*(f-1)) + 8*g/(f*(1-g^2)))
> > > > > > > > > > for your integral.
> > > > > > > > > > But you should double-check the result.
>
> > > > > > > > > > Best wishes
> > > > > > > > > > Torsten.
>
> > > > > > > > > Thanks for reply.
>
> > > > > > > > > @ Torsten. Very good website btw. However, the website is unable to integrate the function.- Zitierten Text ausblenden -
>
> > > > > > > > > - Zitierten Text anzeigen -
>
> > > > > > > > Use the website as follows:
> > > > > > > > First integrate your function with respect to x by treating y as
> > > > > > > > constant:
> > > > > > > > int(3) = 3*x
> > > > > > > > int(- 2*cos(y)*cos(f*x+g*y))=-2*cos(y)*1/f*sin(f*x+g*y)
> > > > > > > > int(- cos((f-1)*x + g*y)  ./  4 ) = -1/(f-1)*sin((f-1)*x + g*y)/4
> > > > > > > > int(- 2*cos(y).*(cos(y))=-2*x*cos^2(y)
> > > > > > > > int(- 2*cos(y).*cos(x)) = -2*cos(y)*sin(x)
> > > > > > > > Thus
> > > > > > > > int(3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 -
> > > > > > > > 2*cos(y).*(cos(y) + cos(x)) dx) =
> > > > > > > > 3*x-2*cos(y)*1/f*sin(f*x+g*y)-1/(f-1)*sin((f-1)*x + g*y)/
> > > > > > > > 4-2*x*cos^2(y)-2*cos(y)*sin(x)
> > > > > > > > Evaluate in the limits between -pi and pi:
> > > > > > > > 3*pi-2*cos(y)*1/f*sin(f*pi+g*y)-1/(f-1)*sin((f-1)*pi + g*y)/
> > > > > > > > 4-2*pi*cos^2(y) -
> > > > > > > > ( 3*(-pi)-2*cos(y)*1/f*sin(-f*pi+g*y)-1/(f-1)*sin(-(f-1)*pi + g*y)/
> > > > > > > > 4-2*(-pi)*cos^2(y)) =
> > > > > > > > 6*pi-2*cos(y)*1/f*(sin(f*pi+g*y)-sin(-f*pi+g*y))-0.25/
> > > > > > > > (f-1)*(sin((f-1)*pi + g*y)-sin(-(f-1)*pi + g*y))-4*pi*cos^2(y)
> > > > > > > > Now use the
> > > > > > > >http://integrals.wolfram.com
> > > > > > > > to integrate this expression term by term.
> > > > > > > > (Of course you have to substitute the y in the expressions by an x
> > > > > > > > because the wolfram-integrator assumes
> > > > > > > > the functions to integrate to depend on the variable x).
> > > > > > > > Subsequently evaluate in the limits between -pi and pi.
>
> > > > > > > > The cases in which f=0 and |g|=1 may be treated seperately.
>
> > > > > > > > Best wishes
> > > > > > > > Torsten.
>
> > > > > > > Im really sorry. I see where some of my misgivings have coome from.
>
> > > > > > > In my initial post I forgot to include the brackets around the denominator. The function is:
> > > > > > > (3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y))  ./  (4 - 2*cos(y).*(cos(y) + cos(x))) dxdy
>
> > > > > > > Really sorry about that.- Zitierten Text ausblenden -
>
> > > > > > > - Zitierten Text anzeigen -
>
> > > > > > Then - as a further difficulty - you will have problems with the
> > > > > > points where your
> > > > > > denominator gets zero, e.g. (0,0) or (pi,pi) (where (pi,pi) is more
> > > > > > critical than
> > > > > > (0,0) because the numerator usually is different from 0 there).
> > > > > > This might explain the error message of quad2d (if you entered the
> > > > > > function
> > > > > > correctly in the MATLAB-file).
>
> > > > > > Best wishes
> > > > > > Torsten.
>
> > > > > Hi thanks for reply.
>
> > > > > Yes, this is the problem. Any ideas how I might somehow be able to manoeuvre this???
>
> > > > > cheers- Zitierten Text ausblenden -
>
> > > > > - Zitierten Text anzeigen -
>
> > > > Thinking about your function, I'm pretty sure that it is not
> > > > integrable over
> > > > [-pi;pi]x[-pi;pi] (at least for all values of f and g such that the
> > > > numerator -
> > > > evaluated at (+-pi/+-pi) - is different from 0).
> > > > The reason is that in the neighbourhood of (+-pi/+-pi), the
> > > > denominator
> > > > behaves like (3*x^2+y^2) near (0,0), and the function 1/(3*x^2+y^2) is
> > > > not
> > > > integrable over a domain including (0,0).
>
> > > > Best wishes
> > > > Torsten.
>
> > > Hi,
>
> > > Thanks for your reply and continual help - its much appreciated!
>
> > > -How can I get round this then?
> > > -Could I integrate from -pi to (0-delta) and add the result to the integration from (0+delta) to pi??? Would that work?
>
> > I did not yet analyze if (0,0) is a problem - the problem I had in
> > mind are the corner points of your domain
> > (i.e. (pi/pi),(-pi/pi),(-pi,-pi),(pi,-pi)).
> > It won't help to integrate up to a certain delta away from the
> > singularity because the result will
> > depend on that delta - simply because the integral of your function
> > over [-pi;pi]x[-pi;pi] is infinity.
>
> > > -Additionally, I dont quite understand why matlab is happy to integrate the function for certain values of f and g and not others?
>
> > I suspect these are numerical artefacts. Could you specify values of f
> > and g for which the integration
> > is successful and report the value MATLAB suggests for the integral ?
>
> > > merci- Zitierten Text ausblenden -
>
> > > - Zitierten Text anzeigen -
>
> > Best wishes
> > Torsten.
>
> Hi Thanks Torsten.
>
> Ideally-------------
> Ideally, I would like to evaluate the integral for all points where (f+g) is
>
> odd in the interval (0,0) to (2000,2000).
>
> Test-------------
> However, what I did:
> Integrating from (0,0) to (0,1000) and (1,0) to (1,1000) and (2,0) to (2,000).
>
> Essentially taking the first 3 rows.
> (quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi,'MaxFunEvals',1e5));
> And storing results in a 3x1001 array.
> [*Note: ideally I want to run to 2000,2000 but will take along time. Also, I have included a check for (f+g) = even, and not computed that result.]
> temp = (f+g);
> if( floor((temp/2)) == (temp/2) )
> flag_even=1;
>
> Errors:-------------
> Matlab outputs multiple errors of 2 kinds:
> 1. Warning: Reached the maximum number of function evaluations (100000). The result fails the global error test.> In quad2d at 248
>
>   In Grid_Mesh_Hex at 94
> 2. Warning: Non-finite result. The integration was unsuccessful. Singularity likely.> In quad2d at 242
>
>   In Grid_Mesh_Hex at 94
>
> Result:-------------
> For (f+g) is odd, all 3 rows give the correct answers up to and including column 133 for row 0. After that I get Inf up until 177 on row 0. Then more Inf until 241. Then a result. Then more Inf until 249 then a result. More Inf until 263.From 263 to 295 inclusive I get results again (results in the region of ~149).
> This sort of sporadic output of Inf and numerical results continues. Similar sporadic patterns of results and Inf are evident for the other 2 rows.
>
> Example Results:
> e.g) (1,0) = 26.31; (3,0) = 48.58;
> (0,1) = 26.31; (2,1) = 43.53
> (1,2) = 48.58
>
> Taking the curve fit of row 0 for the first 129 points (every other point where f+g is odd). The results follow the expected pattern of a*ln(x) + b.
> For the higher values of f and/or g the change in the result should become less and less. These 'Inf' results are incorrect.
> Hope this is useful.
>
> Please help.
>
> Thanks.

Why did you hide until now that you take f and g to be _integers_
which sum up to an _odd_ number ?
In case you would have provided this information straight away, it
would have been obvious that your
integral exists, and much of the discussion so far would have been
superfluous.
Anyway:
Because quad2d claims that there can be singularities on the boundary
of the domain of integration,
I suggest that you integrate your function over 4 domains seperately
and add the results, namely
[0,pi]x[0,pi], [-pi,0]x[0,pi], [0,pi]x[-pi,0] and [-pi,0]x[-pi,0].
This should at least prevent the second warning of a non-finite
result.
Choosing greater values for AbsTol and RelTol (especially for large
values of f and g)
should result in shorter computation times.

Best wishes
Torsten.

Subject: Double Integral Singularities quad2d

From: S

Date: 28 Oct, 2011 08:03:29

Message: 20 of 23

Torsten <Torsten.Hennig@umsicht.fraunhofer.de> wrote in message <a9b5312a-1c22-438c-af29-b81f2238eada@v8g2000vbe.googlegroups.com>...
> On 26 Okt., 17:01, "S " <simaher2...@yahoo.co.uk> wrote:
> > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <77e489a5-70a9-42a2-a577-3db527134...@eh5g2000vbb.googlegroups.com>...
> > > On 26 Okt., 09:11, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <05f56d39-0191-45b8-9fd8-286f5a444...@r28g2000yqj.googlegroups.com>...
> > > > > On 25 Okt., 14:13, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <d15f286c-7e52-4d35-8bad-9d77923e7...@p16g2000yqj.googlegroups.com>...
> > > > > > > On 25 Okt., 11:06, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <272cde32-3068-4756-baba-6252dcd80...@c1g2000vbw.googlegroups.com>...
> > > > > > > > > On 24 Okt., 17:18, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <36eea4f4-4887-4557-8c14-744e0c5bb...@q13g2000vbd.googlegroups.com>...
> > > > > > > > > > > On 24 Okt., 11:51, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <db464627-33b0-456e-907c-47f521590...@f36g2000vbm.googlegroups.com>...
> > > > > > > > > > > > > On 24 Okt., 11:24, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <41a15ffe-e999-41b9-8261-bd74f589c...@l12g2000vby.googlegroups.com>...
> > > > > > > > > > > > > > > On 24 Okt., 10:52, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > > > > > > Hi,
> >
> > > > > > > > > > > > > > > > I have a problem in solving the double integral below in matlab.
> >
> > > > > > > > > > > > > > > > As I increase f and g to larger values then matlab complains of singularity and unsuccessful integration.
> >
> > > > > > > > > > > > > > > > 3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 - 2*cos(y).*(cos(y) + cos(x)) dxdy
> >
> > > > > > > > > > > > > > > > Over limits -pi to pi for x and -pi to pi for y.
> >
> > > > > > > > > > > > > > > > I have been using:
> > > > > > > > > > > > > > > > quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)
> >
> > > > > > > > > > > > > > > > Can anyone please help? How can I overcome this problem as I would like to integrate this function for various 'f' and 'g' up to ~2000.
> >
> > > > > > > > > > > > > > > > Thanks!
> >
> > > > > > > > > > > > > > > Since the period of your function becomes smaller and smaller with
> > > > > > > > > > > > > > > increasing values for f and g,
> > > > > > > > > > > > > > > you should integrate it analytically with the help of MATLAB's int.
> >
> > > > > > > > > > > > > > > Best wishes
> > > > > > > > > > > > > > > Torsten.
> >
> > > > > > > > > > > > > > Hi Torsten,
> >
> > > > > > > > > > > > > > Thanks for your reply.
> >
> > > > > > > > > > > > > > I take your point but I would like to integrate this numerically. Ideally, I would like to compute the integral for various f and g.
> >
> > > > > > > > > > > > > > Any ideas how I can do this?- Zitierten Text ausblenden -
> >
> > > > > > > > > > > > > > - Zitierten Text anzeigen -
> >
> > > > > > > > > > > > > Can you prescribe an initial x- and y-grid for MATLAB's quad2d ?
> > > > > > > > > > > > > If so, choose the increment in x and y very small to ensure that your
> > > > > > > > > > > > > highly oscillating function
> > > > > > > > > > > > > is sufficiently resolved.
> > > > > > > > > > > > > To get an impression of your function, you should plot it for high
> > > > > > > > > > > > > values of f and g.
> > > > > > > > > > > > > Do you see now why quad2d has difficulties to integrate it
> > > > > > > > > > > > > numerically ?
> >
> > > > > > > > > > > > > I repeat: Integrate your function _analytically_ using MATLAB's 'int'.
> >
> > > > > > > > > > > > > Best wishes
> > > > > > > > > > > > > Torsten.
> >
> > > > > > > > > > > > Thanks for your reply and so fast.
> >
> > > > > > > > > > > > However, I do not have the symbolic toolbox installed :-(
> >
> > > > > > > > > > > > Surely there must be another way?- Zitierten Text ausblenden -
> >
> > > > > > > > > > > > - Zitierten Text anzeigen -
> >
> > > > > > > > > > > Using
> > > > > > > > > > >http://integrals.wolfram.com
> > > > > > > > > > > ,I get
> > > > > > > > > > > 8*Pi^2 + sin(Pi*f)*sin(Pi*g)*(1/(g*(f-1)) + 8*g/(f*(1-g^2)))
> > > > > > > > > > > for your integral.
> > > > > > > > > > > But you should double-check the result.
> >
> > > > > > > > > > > Best wishes
> > > > > > > > > > > Torsten.
> >
> > > > > > > > > > Thanks for reply.
> >
> > > > > > > > > > @ Torsten. Very good website btw. However, the website is unable to integrate the function.- Zitierten Text ausblenden -
> >
> > > > > > > > > > - Zitierten Text anzeigen -
> >
> > > > > > > > > Use the website as follows:
> > > > > > > > > First integrate your function with respect to x by treating y as
> > > > > > > > > constant:
> > > > > > > > > int(3) = 3*x
> > > > > > > > > int(- 2*cos(y)*cos(f*x+g*y))=-2*cos(y)*1/f*sin(f*x+g*y)
> > > > > > > > > int(- cos((f-1)*x + g*y)  ./  4 ) = -1/(f-1)*sin((f-1)*x + g*y)/4
> > > > > > > > > int(- 2*cos(y).*(cos(y))=-2*x*cos^2(y)
> > > > > > > > > int(- 2*cos(y).*cos(x)) = -2*cos(y)*sin(x)
> > > > > > > > > Thus
> > > > > > > > > int(3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 -
> > > > > > > > > 2*cos(y).*(cos(y) + cos(x)) dx) =
> > > > > > > > > 3*x-2*cos(y)*1/f*sin(f*x+g*y)-1/(f-1)*sin((f-1)*x + g*y)/
> > > > > > > > > 4-2*x*cos^2(y)-2*cos(y)*sin(x)
> > > > > > > > > Evaluate in the limits between -pi and pi:
> > > > > > > > > 3*pi-2*cos(y)*1/f*sin(f*pi+g*y)-1/(f-1)*sin((f-1)*pi + g*y)/
> > > > > > > > > 4-2*pi*cos^2(y) -
> > > > > > > > > ( 3*(-pi)-2*cos(y)*1/f*sin(-f*pi+g*y)-1/(f-1)*sin(-(f-1)*pi + g*y)/
> > > > > > > > > 4-2*(-pi)*cos^2(y)) =
> > > > > > > > > 6*pi-2*cos(y)*1/f*(sin(f*pi+g*y)-sin(-f*pi+g*y))-0.25/
> > > > > > > > > (f-1)*(sin((f-1)*pi + g*y)-sin(-(f-1)*pi + g*y))-4*pi*cos^2(y)
> > > > > > > > > Now use the
> > > > > > > > >http://integrals.wolfram.com
> > > > > > > > > to integrate this expression term by term.
> > > > > > > > > (Of course you have to substitute the y in the expressions by an x
> > > > > > > > > because the wolfram-integrator assumes
> > > > > > > > > the functions to integrate to depend on the variable x).
> > > > > > > > > Subsequently evaluate in the limits between -pi and pi.
> >
> > > > > > > > > The cases in which f=0 and |g|=1 may be treated seperately.
> >
> > > > > > > > > Best wishes
> > > > > > > > > Torsten.
> >
> > > > > > > > Im really sorry. I see where some of my misgivings have coome from.
> >
> > > > > > > > In my initial post I forgot to include the brackets around the denominator. The function is:
> > > > > > > > (3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y))  ./  (4 - 2*cos(y).*(cos(y) + cos(x))) dxdy
> >
> > > > > > > > Really sorry about that.- Zitierten Text ausblenden -
> >
> > > > > > > > - Zitierten Text anzeigen -
> >
> > > > > > > Then - as a further difficulty - you will have problems with the
> > > > > > > points where your
> > > > > > > denominator gets zero, e.g. (0,0) or (pi,pi) (where (pi,pi) is more
> > > > > > > critical than
> > > > > > > (0,0) because the numerator usually is different from 0 there).
> > > > > > > This might explain the error message of quad2d (if you entered the
> > > > > > > function
> > > > > > > correctly in the MATLAB-file).
> >
> > > > > > > Best wishes
> > > > > > > Torsten.
> >
> > > > > > Hi thanks for reply.
> >
> > > > > > Yes, this is the problem. Any ideas how I might somehow be able to manoeuvre this???
> >
> > > > > > cheers- Zitierten Text ausblenden -
> >
> > > > > > - Zitierten Text anzeigen -
> >
> > > > > Thinking about your function, I'm pretty sure that it is not
> > > > > integrable over
> > > > > [-pi;pi]x[-pi;pi] (at least for all values of f and g such that the
> > > > > numerator -
> > > > > evaluated at (+-pi/+-pi) - is different from 0).
> > > > > The reason is that in the neighbourhood of (+-pi/+-pi), the
> > > > > denominator
> > > > > behaves like (3*x^2+y^2) near (0,0), and the function 1/(3*x^2+y^2) is
> > > > > not
> > > > > integrable over a domain including (0,0).
> >
> > > > > Best wishes
> > > > > Torsten.
> >
> > > > Hi,
> >
> > > > Thanks for your reply and continual help - its much appreciated!
> >
> > > > -How can I get round this then?
> > > > -Could I integrate from -pi to (0-delta) and add the result to the integration from (0+delta) to pi??? Would that work?
> >
> > > I did not yet analyze if (0,0) is a problem - the problem I had in
> > > mind are the corner points of your domain
> > > (i.e. (pi/pi),(-pi/pi),(-pi,-pi),(pi,-pi)).
> > > It won't help to integrate up to a certain delta away from the
> > > singularity because the result will
> > > depend on that delta - simply because the integral of your function
> > > over [-pi;pi]x[-pi;pi] is infinity.
> >
> > > > -Additionally, I dont quite understand why matlab is happy to integrate the function for certain values of f and g and not others?
> >
> > > I suspect these are numerical artefacts. Could you specify values of f
> > > and g for which the integration
> > > is successful and report the value MATLAB suggests for the integral ?
> >
> > > > merci- Zitierten Text ausblenden -
> >
> > > > - Zitierten Text anzeigen -
> >
> > > Best wishes
> > > Torsten.
> >
> > Hi Thanks Torsten.
> >
> > Ideally-------------
> > Ideally, I would like to evaluate the integral for all points where (f+g) is
> >
> > odd in the interval (0,0) to (2000,2000).
> >
> > Test-------------
> > However, what I did:
> > Integrating from (0,0) to (0,1000) and (1,0) to (1,1000) and (2,0) to (2,000).
> >
> > Essentially taking the first 3 rows.
> > (quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi,'MaxFunEvals',1e5));
> > And storing results in a 3x1001 array.
> > [*Note: ideally I want to run to 2000,2000 but will take along time. Also, I have included a check for (f+g) = even, and not computed that result.]
> > temp = (f+g);
> > if( floor((temp/2)) == (temp/2) )
> > flag_even=1;
> >
> > Errors:-------------
> > Matlab outputs multiple errors of 2 kinds:
> > 1. Warning: Reached the maximum number of function evaluations (100000). The result fails the global error test.> In quad2d at 248
> >
> >   In Grid_Mesh_Hex at 94
> > 2. Warning: Non-finite result. The integration was unsuccessful. Singularity likely.> In quad2d at 242
> >
> >   In Grid_Mesh_Hex at 94
> >
> > Result:-------------
> > For (f+g) is odd, all 3 rows give the correct answers up to and including column 133 for row 0. After that I get Inf up until 177 on row 0. Then more Inf until 241. Then a result. Then more Inf until 249 then a result. More Inf until 263.From 263 to 295 inclusive I get results again (results in the region of ~149).
> > This sort of sporadic output of Inf and numerical results continues. Similar sporadic patterns of results and Inf are evident for the other 2 rows.
> >
> > Example Results:
> > e.g) (1,0) = 26.31; (3,0) = 48.58;
> > (0,1) = 26.31; (2,1) = 43.53
> > (1,2) = 48.58
> >
> > Taking the curve fit of row 0 for the first 129 points (every other point where f+g is odd). The results follow the expected pattern of a*ln(x) + b.
> > For the higher values of f and/or g the change in the result should become less and less. These 'Inf' results are incorrect.
> > Hope this is useful.
> >
> > Please help.
> >
> > Thanks.
>
> Why did you hide until now that you take f and g to be _integers_
> which sum up to an _odd_ number ?
> In case you would have provided this information straight away, it
> would have been obvious that your
> integral exists, and much of the discussion so far would have been
> superfluous.
> Anyway:
> Because quad2d claims that there can be singularities on the boundary
> of the domain of integration,
> I suggest that you integrate your function over 4 domains seperately
> and add the results, namely
> [0,pi]x[0,pi], [-pi,0]x[0,pi], [0,pi]x[-pi,0] and [-pi,0]x[-pi,0].
> This should at least prevent the second warning of a non-finite
> result.
> Choosing greater values for AbsTol and RelTol (especially for large
> values of f and g)
> should result in shorter computation times.
>
> Best wishes
> Torsten.
My apologies Torsten. Initially, I thought I was just having issues with correctly using the matlab function and so didn't think that info was necessary :-/

Many thanks for your help - it is truly appreciated.

Could I just ask how you came to your conclusion. Just so that I can sort such problems out myself in the future.

And also because I have another function I want to integrate for (f+g) is even... f = (1-cos(f.*x+g.*y))./(4-2*cos(y).*(cos(y)+cos(x)));

Thanks again

Subject: Double Integral Singularities quad2d

From: Torsten

Date: 28 Oct, 2011 08:26:52

Message: 21 of 23

On 28 Okt., 10:03, "S " <simaher2...@yahoo.co.uk> wrote:
> Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <a9b5312a-1c22-438c-af29-b81f2238e...@v8g2000vbe.googlegroups.com>...
> > On 26 Okt., 17:01, "S " <simaher2...@yahoo.co.uk> wrote:
> > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <77e489a5-70a9-42a2-a577-3db527134...@eh5g2000vbb.googlegroups.com>...
> > > > On 26 Okt., 09:11, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <05f56d39-0191-45b8-9fd8-286f5a444...@r28g2000yqj.googlegroups.com>...
> > > > > > On 25 Okt., 14:13, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <d15f286c-7e52-4d35-8bad-9d77923e7...@p16g2000yqj.googlegroups.com>...
> > > > > > > > On 25 Okt., 11:06, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <272cde32-3068-4756-baba-6252dcd80...@c1g2000vbw.googlegroups.com>...
> > > > > > > > > > On 24 Okt., 17:18, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <36eea4f4-4887-4557-8c14-744e0c5bb...@q13g2000vbd.googlegroups.com>...
> > > > > > > > > > > > On 24 Okt., 11:51, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <db464627-33b0-456e-907c-47f521590...@f36g2000vbm.googlegroups.com>...
> > > > > > > > > > > > > > On 24 Okt., 11:24, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <41a15ffe-e999-41b9-8261-bd74f589c...@l12g2000vby.googlegroups.com>...
> > > > > > > > > > > > > > > > On 24 Okt., 10:52, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > > > > > > > Hi,
>
> > > > > > > > > > > > > > > > > I have a problem in solving the double integral below in matlab.
>
> > > > > > > > > > > > > > > > > As I increase f and g to larger values then matlab complains of singularity and unsuccessful integration.
>
> > > > > > > > > > > > > > > > > 3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 - 2*cos(y).*(cos(y) + cos(x)) dxdy
>
> > > > > > > > > > > > > > > > > Over limits -pi to pi for x and -pi to pi for y.
>
> > > > > > > > > > > > > > > > > I have been using:
> > > > > > > > > > > > > > > > > quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)
>
> > > > > > > > > > > > > > > > > Can anyone please help? How can I overcome this problem as I would like to integrate this function for various 'f' and 'g' up to ~2000.
>
> > > > > > > > > > > > > > > > > Thanks!
>
> > > > > > > > > > > > > > > > Since the period of your function becomes smaller and smaller with
> > > > > > > > > > > > > > > > increasing values for f and g,
> > > > > > > > > > > > > > > > you should integrate it analytically with the help of MATLAB's int.
>
> > > > > > > > > > > > > > > > Best wishes
> > > > > > > > > > > > > > > > Torsten.
>
> > > > > > > > > > > > > > > Hi Torsten,
>
> > > > > > > > > > > > > > > Thanks for your reply.
>
> > > > > > > > > > > > > > > I take your point but I would like to integrate this numerically. Ideally, I would like to compute the integral for various f and g.
>
> > > > > > > > > > > > > > > Any ideas how I can do this?- Zitierten Text ausblenden -
>
> > > > > > > > > > > > > > > - Zitierten Text anzeigen -
>
> > > > > > > > > > > > > > Can you prescribe an initial x- and y-grid for MATLAB's quad2d ?
> > > > > > > > > > > > > > If so, choose the increment in x and y very small to ensure that your
> > > > > > > > > > > > > > highly oscillating function
> > > > > > > > > > > > > > is sufficiently resolved.
> > > > > > > > > > > > > > To get an impression of your function, you should plot it for high
> > > > > > > > > > > > > > values of f and g.
> > > > > > > > > > > > > > Do you see now why quad2d has difficulties to integrate it
> > > > > > > > > > > > > > numerically ?
>
> > > > > > > > > > > > > > I repeat: Integrate your function _analytically_ using MATLAB's 'int'.
>
> > > > > > > > > > > > > > Best wishes
> > > > > > > > > > > > > > Torsten.
>
> > > > > > > > > > > > > Thanks for your reply and so fast.
>
> > > > > > > > > > > > > However, I do not have the symbolic toolbox installed :-(
>
> > > > > > > > > > > > > Surely there must be another way?- Zitierten Text ausblenden -
>
> > > > > > > > > > > > > - Zitierten Text anzeigen -
>
> > > > > > > > > > > > Using
> > > > > > > > > > > >http://integrals.wolfram.com
> > > > > > > > > > > > ,I get
> > > > > > > > > > > > 8*Pi^2 + sin(Pi*f)*sin(Pi*g)*(1/(g*(f-1)) + 8*g/(f*(1-g^2)))
> > > > > > > > > > > > for your integral.
> > > > > > > > > > > > But you should double-check the result.
>
> > > > > > > > > > > > Best wishes
> > > > > > > > > > > > Torsten.
>
> > > > > > > > > > > Thanks for reply.
>
> > > > > > > > > > > @ Torsten. Very good website btw. However, the website is unable to integrate the function.- Zitierten Text ausblenden -
>
> > > > > > > > > > > - Zitierten Text anzeigen -
>
> > > > > > > > > > Use the website as follows:
> > > > > > > > > > First integrate your function with respect to x by treating y as
> > > > > > > > > > constant:
> > > > > > > > > > int(3) = 3*x
> > > > > > > > > > int(- 2*cos(y)*cos(f*x+g*y))=-2*cos(y)*1/f*sin(f*x+g*y)
> > > > > > > > > > int(- cos((f-1)*x + g*y)  ./  4 ) = -1/(f-1)*sin((f-1)*x + g*y)/4
> > > > > > > > > > int(- 2*cos(y).*(cos(y))=-2*x*cos^2(y)
> > > > > > > > > > int(- 2*cos(y).*cos(x)) = -2*cos(y)*sin(x)
> > > > > > > > > > Thus
> > > > > > > > > > int(3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 -
> > > > > > > > > > 2*cos(y).*(cos(y) + cos(x)) dx) =
> > > > > > > > > > 3*x-2*cos(y)*1/f*sin(f*x+g*y)-1/(f-1)*sin((f-1)*x + g*y)/
> > > > > > > > > > 4-2*x*cos^2(y)-2*cos(y)*sin(x)
> > > > > > > > > > Evaluate in the limits between -pi and pi:
> > > > > > > > > > 3*pi-2*cos(y)*1/f*sin(f*pi+g*y)-1/(f-1)*sin((f-1)*pi + g*y)/
> > > > > > > > > > 4-2*pi*cos^2(y) -
> > > > > > > > > > ( 3*(-pi)-2*cos(y)*1/f*sin(-f*pi+g*y)-1/(f-1)*sin(-(f-1)*pi + g*y)/
> > > > > > > > > > 4-2*(-pi)*cos^2(y)) =
> > > > > > > > > > 6*pi-2*cos(y)*1/f*(sin(f*pi+g*y)-sin(-f*pi+g*y))-0.25/
> > > > > > > > > > (f-1)*(sin((f-1)*pi + g*y)-sin(-(f-1)*pi + g*y))-4*pi*cos^2(y)
> > > > > > > > > > Now use the
> > > > > > > > > >http://integrals.wolfram.com
> > > > > > > > > > to integrate this expression term by term.
> > > > > > > > > > (Of course you have to substitute the y in the expressions by an x
> > > > > > > > > > because the wolfram-integrator assumes
> > > > > > > > > > the functions to integrate to depend on the variable x).
> > > > > > > > > > Subsequently evaluate in the limits between -pi and pi.
>
> > > > > > > > > > The cases in which f=0 and |g|=1 may be treated seperately.
>
> > > > > > > > > > Best wishes
> > > > > > > > > > Torsten.
>
> > > > > > > > > Im really sorry. I see where some of my misgivings have coome from.
>
> > > > > > > > > In my initial post I forgot to include the brackets around the denominator. The function is:
> > > > > > > > > (3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y))  ./  (4 - 2*cos(y).*(cos(y) + cos(x))) dxdy
>
> > > > > > > > > Really sorry about that.- Zitierten Text ausblenden -
>
> > > > > > > > > - Zitierten Text anzeigen -
>
> > > > > > > > Then - as a further difficulty - you will have problems with the
> > > > > > > > points where your
> > > > > > > > denominator gets zero, e.g. (0,0) or (pi,pi) (where (pi,pi) is more
> > > > > > > > critical than
> > > > > > > > (0,0) because the numerator usually is different from 0 there).
> > > > > > > > This might explain the error message of quad2d (if you entered the
> > > > > > > > function
> > > > > > > > correctly in the MATLAB-file).
>
> > > > > > > > Best wishes
> > > > > > > > Torsten.
>
> > > > > > > Hi thanks for reply.
>
> > > > > > > Yes, this is the problem. Any ideas how I might somehow be able to manoeuvre this???
>
> > > > > > > cheers- Zitierten Text ausblenden -
>
> > > > > > > - Zitierten Text anzeigen -
>
> > > > > > Thinking about your function, I'm pretty sure that it is not
> > > > > > integrable over
> > > > > > [-pi;pi]x[-pi;pi] (at least for all values of f and g such that the
> > > > > > numerator -
> > > > > > evaluated at (+-pi/+-pi) - is different from 0).
> > > > > > The reason is that in the neighbourhood of (+-pi/+-pi), the
> > > > > > denominator
> > > > > > behaves like (3*x^2+y^2) near (0,0), and the function 1/(3*x^2+y^2) is
> > > > > > not
> > > > > > integrable over a domain including (0,0).
>
> > > > > > Best wishes
> > > > > > Torsten.
>
> > > > > Hi,
>
> > > > > Thanks for your reply and continual help - its much appreciated!
>
> > > > > -How can I get round this then?
> > > > > -Could I integrate from -pi to (0-delta) and add the result to the integration from (0+delta) to pi??? Would that work?
>
> > > > I did not yet analyze if (0,0) is a problem - the problem I had in
> > > > mind are the corner points of your domain
> > > > (i.e. (pi/pi),(-pi/pi),(-pi,-pi),(pi,-pi)).
> > > > It won't help to integrate up to a certain delta away from the
> > > > singularity because the result will
> > > > depend on that delta - simply because the integral of your function
> > > > over [-pi;pi]x[-pi;pi] is infinity.
>
> > > > > -Additionally, I dont quite understand why matlab is happy to integrate the function for certain values of f and g and not others?
>
> > > > I suspect these are numerical artefacts. Could you specify values of f
> > > > and g for which the integration
> > > > is successful and report the value MATLAB suggests for the integral ?
>
> > > > > merci- Zitierten Text ausblenden -
>
> > > > > - Zitierten Text anzeigen -
>
> > > > Best wishes
> > > > Torsten.
>
> > > Hi Thanks Torsten.
>
> > > Ideally-------------
> > > Ideally, I would like to evaluate the integral for all points where (f+g) is
>
> > > odd in the interval (0,0) to (2000,2000).
>
> > > Test-------------
> > > However, what I did:
> > > Integrating from (0,0) to (0,1000) and (1,0) to (1,1000) and (2,0) to (2,000).
>
> > > Essentially taking the first 3 rows.
> > > (quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi,'MaxFunEvals',1e5));
> > > And storing results in a 3x1001 array.
> > > [*Note: ideally I want to run to 2000,2000 but will take along time. Also, I have included a check for (f+g) = even, and not computed that result.]
> > > temp = (f+g);
> > > if( floor((temp/2)) == (temp/2) )
> > > flag_even=1;
>
> > > Errors:-------------
> > > Matlab outputs multiple errors of 2 kinds:
> > > 1. Warning: Reached the maximum number of function evaluations (100000). The result fails the global error test.> In quad2d at 248
>
> > >   In Grid_Mesh_Hex at 94
> > > 2. Warning: Non-finite result. The integration was unsuccessful. Singularity likely.> In quad2d at 242
>
> > >   In Grid_Mesh_Hex at 94
>
> > > Result:-------------
> > > For (f+g) is odd, all 3 rows give the correct answers up to and including column 133 for row 0. After that I get Inf up until 177 on row 0. Then more Inf until 241. Then a result. Then more Inf until 249 then a result. More Inf until 263.From 263 to 295 inclusive I get results again (results in the region of ~149).
> > > This sort of sporadic output of Inf and numerical results continues. Similar sporadic patterns of results and Inf are evident for the other 2 rows.
>
> > > Example Results:
> > > e.g) (1,0) = 26.31; (3,0) = 48.58;
> > > (0,1) = 26.31; (2,1) = 43.53
> > > (1,2) = 48.58
>
> > > Taking the curve fit of row 0 for the first 129 points (every other point where f+g is odd). The results follow the expected pattern of a*ln(x) + b.
> > > For the higher values of f and/or g the change in the result should become less and less. These 'Inf' results are incorrect.
> > > Hope this is useful.
>
> > > Please help.
>
> > > Thanks.
>
> > Why did you hide until now that you take f and g to be _integers_
> > which sum up to an _odd_ number ?
> > In case you would have provided this information straight away, it
> > would have been obvious that your
> > integral exists, and much of the discussion so far would have been
> > superfluous.
> > Anyway:
> > Because quad2d claims that there can be singularities on the boundary
> > of the domain of integration,
> > I suggest that you integrate your function over 4 domains seperately
> > and add the results, namely
> > [0,pi]x[0,pi], [-pi,0]x[0,pi], [0,pi]x[-pi,0] and [-pi,0]x[-pi,0].
> > This should at least prevent the second warning of a non-finite
> > result.
> > Choosing greater values for AbsTol and RelTol (especially for large
> > values of f and g)
> > should result in shorter computation times.
>
> > Best wishes
> > Torsten.
>
> My apologies Torsten. Initially, I thought I was just having issues with correctly using the matlab function and so didn't think that info was necessary :-/
>
> Many thanks for your help - it is truly appreciated.
>
> Could I just ask how you came to your conclusion. Just so that I can sort such problems out myself in the future.
>
> And also because I have another function I want to integrate for (f+g) is even... f = (1-cos(f.*x+g.*y))./(4-2*cos(y).*(cos(y)+cos(x)));
>
> Thanks again


Which conclusion do you mean ?

Best wishes
Torsten.

Subject: Double Integral Singularities quad2d

From: S

Date: 28 Oct, 2011 13:54:11

Message: 22 of 23

Torsten <Torsten.Hennig@umsicht.fraunhofer.de> wrote in message <0dec8726-c843-401c-86cb-3026655dd1e2@j20g2000vby.googlegroups.com>...
> On 28 Okt., 10:03, "S " <simaher2...@yahoo.co.uk> wrote:
> > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <a9b5312a-1c22-438c-af29-b81f2238e...@v8g2000vbe.googlegroups.com>...
> > > On 26 Okt., 17:01, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <77e489a5-70a9-42a2-a577-3db527134...@eh5g2000vbb.googlegroups.com>...
> > > > > On 26 Okt., 09:11, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <05f56d39-0191-45b8-9fd8-286f5a444...@r28g2000yqj.googlegroups.com>...
> > > > > > > On 25 Okt., 14:13, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <d15f286c-7e52-4d35-8bad-9d77923e7...@p16g2000yqj.googlegroups.com>...
> > > > > > > > > On 25 Okt., 11:06, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <272cde32-3068-4756-baba-6252dcd80...@c1g2000vbw.googlegroups.com>...
> > > > > > > > > > > On 24 Okt., 17:18, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <36eea4f4-4887-4557-8c14-744e0c5bb...@q13g2000vbd.googlegroups.com>...
> > > > > > > > > > > > > On 24 Okt., 11:51, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <db464627-33b0-456e-907c-47f521590...@f36g2000vbm.googlegroups.com>...
> > > > > > > > > > > > > > > On 24 Okt., 11:24, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <41a15ffe-e999-41b9-8261-bd74f589c...@l12g2000vby.googlegroups.com>...
> > > > > > > > > > > > > > > > > On 24 Okt., 10:52, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > > > > > > > > Hi,
> >
> > > > > > > > > > > > > > > > > > I have a problem in solving the double integral below in matlab.
> >
> > > > > > > > > > > > > > > > > > As I increase f and g to larger values then matlab complains of singularity and unsuccessful integration.
> >
> > > > > > > > > > > > > > > > > > 3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 - 2*cos(y).*(cos(y) + cos(x)) dxdy
> >
> > > > > > > > > > > > > > > > > > Over limits -pi to pi for x and -pi to pi for y.
> >
> > > > > > > > > > > > > > > > > > I have been using:
> > > > > > > > > > > > > > > > > > quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)
> >
> > > > > > > > > > > > > > > > > > Can anyone please help? How can I overcome this problem as I would like to integrate this function for various 'f' and 'g' up to ~2000.
> >
> > > > > > > > > > > > > > > > > > Thanks!
> >
> > > > > > > > > > > > > > > > > Since the period of your function becomes smaller and smaller with
> > > > > > > > > > > > > > > > > increasing values for f and g,
> > > > > > > > > > > > > > > > > you should integrate it analytically with the help of MATLAB's int.
> >
> > > > > > > > > > > > > > > > > Best wishes
> > > > > > > > > > > > > > > > > Torsten.
> >
> > > > > > > > > > > > > > > > Hi Torsten,
> >
> > > > > > > > > > > > > > > > Thanks for your reply.
> >
> > > > > > > > > > > > > > > > I take your point but I would like to integrate this numerically. Ideally, I would like to compute the integral for various f and g.
> >
> > > > > > > > > > > > > > > > Any ideas how I can do this?- Zitierten Text ausblenden -
> >
> > > > > > > > > > > > > > > > - Zitierten Text anzeigen -
> >
> > > > > > > > > > > > > > > Can you prescribe an initial x- and y-grid for MATLAB's quad2d ?
> > > > > > > > > > > > > > > If so, choose the increment in x and y very small to ensure that your
> > > > > > > > > > > > > > > highly oscillating function
> > > > > > > > > > > > > > > is sufficiently resolved.
> > > > > > > > > > > > > > > To get an impression of your function, you should plot it for high
> > > > > > > > > > > > > > > values of f and g.
> > > > > > > > > > > > > > > Do you see now why quad2d has difficulties to integrate it
> > > > > > > > > > > > > > > numerically ?
> >
> > > > > > > > > > > > > > > I repeat: Integrate your function _analytically_ using MATLAB's 'int'.
> >
> > > > > > > > > > > > > > > Best wishes
> > > > > > > > > > > > > > > Torsten.
> >
> > > > > > > > > > > > > > Thanks for your reply and so fast.
> >
> > > > > > > > > > > > > > However, I do not have the symbolic toolbox installed :-(
> >
> > > > > > > > > > > > > > Surely there must be another way?- Zitierten Text ausblenden -
> >
> > > > > > > > > > > > > > - Zitierten Text anzeigen -
> >
> > > > > > > > > > > > > Using
> > > > > > > > > > > > >http://integrals.wolfram.com
> > > > > > > > > > > > > ,I get
> > > > > > > > > > > > > 8*Pi^2 + sin(Pi*f)*sin(Pi*g)*(1/(g*(f-1)) + 8*g/(f*(1-g^2)))
> > > > > > > > > > > > > for your integral.
> > > > > > > > > > > > > But you should double-check the result.
> >
> > > > > > > > > > > > > Best wishes
> > > > > > > > > > > > > Torsten.
> >
> > > > > > > > > > > > Thanks for reply.
> >
> > > > > > > > > > > > @ Torsten. Very good website btw. However, the website is unable to integrate the function.- Zitierten Text ausblenden -
> >
> > > > > > > > > > > > - Zitierten Text anzeigen -
> >
> > > > > > > > > > > Use the website as follows:
> > > > > > > > > > > First integrate your function with respect to x by treating y as
> > > > > > > > > > > constant:
> > > > > > > > > > > int(3) = 3*x
> > > > > > > > > > > int(- 2*cos(y)*cos(f*x+g*y))=-2*cos(y)*1/f*sin(f*x+g*y)
> > > > > > > > > > > int(- cos((f-1)*x + g*y)  ./  4 ) = -1/(f-1)*sin((f-1)*x + g*y)/4
> > > > > > > > > > > int(- 2*cos(y).*(cos(y))=-2*x*cos^2(y)
> > > > > > > > > > > int(- 2*cos(y).*cos(x)) = -2*cos(y)*sin(x)
> > > > > > > > > > > Thus
> > > > > > > > > > > int(3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 -
> > > > > > > > > > > 2*cos(y).*(cos(y) + cos(x)) dx) =
> > > > > > > > > > > 3*x-2*cos(y)*1/f*sin(f*x+g*y)-1/(f-1)*sin((f-1)*x + g*y)/
> > > > > > > > > > > 4-2*x*cos^2(y)-2*cos(y)*sin(x)
> > > > > > > > > > > Evaluate in the limits between -pi and pi:
> > > > > > > > > > > 3*pi-2*cos(y)*1/f*sin(f*pi+g*y)-1/(f-1)*sin((f-1)*pi + g*y)/
> > > > > > > > > > > 4-2*pi*cos^2(y) -
> > > > > > > > > > > ( 3*(-pi)-2*cos(y)*1/f*sin(-f*pi+g*y)-1/(f-1)*sin(-(f-1)*pi + g*y)/
> > > > > > > > > > > 4-2*(-pi)*cos^2(y)) =
> > > > > > > > > > > 6*pi-2*cos(y)*1/f*(sin(f*pi+g*y)-sin(-f*pi+g*y))-0.25/
> > > > > > > > > > > (f-1)*(sin((f-1)*pi + g*y)-sin(-(f-1)*pi + g*y))-4*pi*cos^2(y)
> > > > > > > > > > > Now use the
> > > > > > > > > > >http://integrals.wolfram.com
> > > > > > > > > > > to integrate this expression term by term.
> > > > > > > > > > > (Of course you have to substitute the y in the expressions by an x
> > > > > > > > > > > because the wolfram-integrator assumes
> > > > > > > > > > > the functions to integrate to depend on the variable x).
> > > > > > > > > > > Subsequently evaluate in the limits between -pi and pi.
> >
> > > > > > > > > > > The cases in which f=0 and |g|=1 may be treated seperately.
> >
> > > > > > > > > > > Best wishes
> > > > > > > > > > > Torsten.
> >
> > > > > > > > > > Im really sorry. I see where some of my misgivings have coome from.
> >
> > > > > > > > > > In my initial post I forgot to include the brackets around the denominator. The function is:
> > > > > > > > > > (3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y))  ./  (4 - 2*cos(y).*(cos(y) + cos(x))) dxdy
> >
> > > > > > > > > > Really sorry about that.- Zitierten Text ausblenden -
> >
> > > > > > > > > > - Zitierten Text anzeigen -
> >
> > > > > > > > > Then - as a further difficulty - you will have problems with the
> > > > > > > > > points where your
> > > > > > > > > denominator gets zero, e.g. (0,0) or (pi,pi) (where (pi,pi) is more
> > > > > > > > > critical than
> > > > > > > > > (0,0) because the numerator usually is different from 0 there).
> > > > > > > > > This might explain the error message of quad2d (if you entered the
> > > > > > > > > function
> > > > > > > > > correctly in the MATLAB-file).
> >
> > > > > > > > > Best wishes
> > > > > > > > > Torsten.
> >
> > > > > > > > Hi thanks for reply.
> >
> > > > > > > > Yes, this is the problem. Any ideas how I might somehow be able to manoeuvre this???
> >
> > > > > > > > cheers- Zitierten Text ausblenden -
> >
> > > > > > > > - Zitierten Text anzeigen -
> >
> > > > > > > Thinking about your function, I'm pretty sure that it is not
> > > > > > > integrable over
> > > > > > > [-pi;pi]x[-pi;pi] (at least for all values of f and g such that the
> > > > > > > numerator -
> > > > > > > evaluated at (+-pi/+-pi) - is different from 0).
> > > > > > > The reason is that in the neighbourhood of (+-pi/+-pi), the
> > > > > > > denominator
> > > > > > > behaves like (3*x^2+y^2) near (0,0), and the function 1/(3*x^2+y^2) is
> > > > > > > not
> > > > > > > integrable over a domain including (0,0).
> >
> > > > > > > Best wishes
> > > > > > > Torsten.
> >
> > > > > > Hi,
> >
> > > > > > Thanks for your reply and continual help - its much appreciated!
> >
> > > > > > -How can I get round this then?
> > > > > > -Could I integrate from -pi to (0-delta) and add the result to the integration from (0+delta) to pi??? Would that work?
> >
> > > > > I did not yet analyze if (0,0) is a problem - the problem I had in
> > > > > mind are the corner points of your domain
> > > > > (i.e. (pi/pi),(-pi/pi),(-pi,-pi),(pi,-pi)).
> > > > > It won't help to integrate up to a certain delta away from the
> > > > > singularity because the result will
> > > > > depend on that delta - simply because the integral of your function
> > > > > over [-pi;pi]x[-pi;pi] is infinity.
> >
> > > > > > -Additionally, I dont quite understand why matlab is happy to integrate the function for certain values of f and g and not others?
> >
> > > > > I suspect these are numerical artefacts. Could you specify values of f
> > > > > and g for which the integration
> > > > > is successful and report the value MATLAB suggests for the integral ?
> >
> > > > > > merci- Zitierten Text ausblenden -
> >
> > > > > > - Zitierten Text anzeigen -
> >
> > > > > Best wishes
> > > > > Torsten.
> >
> > > > Hi Thanks Torsten.
> >
> > > > Ideally-------------
> > > > Ideally, I would like to evaluate the integral for all points where (f+g) is
> >
> > > > odd in the interval (0,0) to (2000,2000).
> >
> > > > Test-------------
> > > > However, what I did:
> > > > Integrating from (0,0) to (0,1000) and (1,0) to (1,1000) and (2,0) to (2,000).
> >
> > > > Essentially taking the first 3 rows.
> > > > (quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi,'MaxFunEvals',1e5));
> > > > And storing results in a 3x1001 array.
> > > > [*Note: ideally I want to run to 2000,2000 but will take along time. Also, I have included a check for (f+g) = even, and not computed that result.]
> > > > temp = (f+g);
> > > > if( floor((temp/2)) == (temp/2) )
> > > > flag_even=1;
> >
> > > > Errors:-------------
> > > > Matlab outputs multiple errors of 2 kinds:
> > > > 1. Warning: Reached the maximum number of function evaluations (100000). The result fails the global error test.> In quad2d at 248
> >
> > > >   In Grid_Mesh_Hex at 94
> > > > 2. Warning: Non-finite result. The integration was unsuccessful. Singularity likely.> In quad2d at 242
> >
> > > >   In Grid_Mesh_Hex at 94
> >
> > > > Result:-------------
> > > > For (f+g) is odd, all 3 rows give the correct answers up to and including column 133 for row 0. After that I get Inf up until 177 on row 0. Then more Inf until 241. Then a result. Then more Inf until 249 then a result. More Inf until 263.From 263 to 295 inclusive I get results again (results in the region of ~149).
> > > > This sort of sporadic output of Inf and numerical results continues. Similar sporadic patterns of results and Inf are evident for the other 2 rows.
> >
> > > > Example Results:
> > > > e.g) (1,0) = 26.31; (3,0) = 48.58;
> > > > (0,1) = 26.31; (2,1) = 43.53
> > > > (1,2) = 48.58
> >
> > > > Taking the curve fit of row 0 for the first 129 points (every other point where f+g is odd). The results follow the expected pattern of a*ln(x) + b.
> > > > For the higher values of f and/or g the change in the result should become less and less. These 'Inf' results are incorrect.
> > > > Hope this is useful.
> >
> > > > Please help.
> >
> > > > Thanks.
> >
> > > Why did you hide until now that you take f and g to be _integers_
> > > which sum up to an _odd_ number ?
> > > In case you would have provided this information straight away, it
> > > would have been obvious that your
> > > integral exists, and much of the discussion so far would have been
> > > superfluous.
> > > Anyway:
> > > Because quad2d claims that there can be singularities on the boundary
> > > of the domain of integration,
> > > I suggest that you integrate your function over 4 domains seperately
> > > and add the results, namely
> > > [0,pi]x[0,pi], [-pi,0]x[0,pi], [0,pi]x[-pi,0] and [-pi,0]x[-pi,0].
> > > This should at least prevent the second warning of a non-finite
> > > result.
> > > Choosing greater values for AbsTol and RelTol (especially for large
> > > values of f and g)
> > > should result in shorter computation times.
> >
> > > Best wishes
> > > Torsten.
> >
> > My apologies Torsten. Initially, I thought I was just having issues with correctly using the matlab function and so didn't think that info was necessary :-/
> >
> > Many thanks for your help - it is truly appreciated.
> >
> > Could I just ask how you came to your conclusion. Just so that I can sort such problems out myself in the future.
> >
> > And also because I have another function I want to integrate for (f+g) is even... f = (1-cos(f.*x+g.*y))./(4-2*cos(y).*(cos(y)+cos(x)));
> >
> > Thanks again
>
>
> Which conclusion do you mean ?
>
> Best wishes
> Torsten.

I meant how you came to this:
[0,pi]x[0,pi], [-pi,0]x[0,pi], [0,pi]x[-pi,0] and [-pi,0]x[-pi,0].

I implemented it as follows:
** For f+g = Odd **
temp = (quad2d(@(x,y)my_func(x,y,f,g),0,pi,0,pi,'MaxFunEvals', 1e5));
temp = temp + (quad2d(@(x,y)my_func(x,y,f,g),-pi,0,0,pi,'MaxFunEvals', 1e5));
temp = temp + (quad2d(@(x,y)my_func(x,y,f,g),0,pi,-pi,0,'MaxFunEvals', 1e5));
temp = temp + (quad2d(@(x,y)my_func(x,y,f,g),-pi,0,-pi,0,'MaxFunEvals', 1e5));
result(f,g) = temp;

I ran for f=0 and f=1 and g up to 1000 and I still get errors of the sort:
Warning: Non-finite result. The integration was unsuccessful. Singularity likely.
> In quad2d at 242
  In Grid_Mesh_Hex at 102
Warning: Non-finite result. The integration was unsuccessful. Singularity likely.
> In quad2d at 242
  In Grid_Mesh_Hex at 103
Warning: Non-finite result. The integration was unsuccessful. Singularity likely.
> In quad2d at 242
  In Grid_Mesh_Hex at 104
Warning: Non-finite result. The integration was unsuccessful. Singularity likely.
> In quad2d at 242
  In Grid_Mesh_Hex at 105

Subject: Double Integral Singularities quad2d

From: Torsten

Date: 28 Oct, 2011 14:32:26

Message: 23 of 23

On 28 Okt., 15:54, "S " <simaher2...@yahoo.co.uk> wrote:
> Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <0dec8726-c843-401c-86cb-3026655dd...@j20g2000vby.googlegroups.com>...
> > On 28 Okt., 10:03, "S " <simaher2...@yahoo.co.uk> wrote:
> > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <a9b5312a-1c22-438c-af29-b81f2238e...@v8g2000vbe.googlegroups.com>...
> > > > On 26 Okt., 17:01, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <77e489a5-70a9-42a2-a577-3db527134...@eh5g2000vbb.googlegroups.com>...
> > > > > > On 26 Okt., 09:11, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <05f56d39-0191-45b8-9fd8-286f5a444...@r28g2000yqj.googlegroups.com>...
> > > > > > > > On 25 Okt., 14:13, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <d15f286c-7e52-4d35-8bad-9d77923e7...@p16g2000yqj.googlegroups.com>...
> > > > > > > > > > On 25 Okt., 11:06, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <272cde32-3068-4756-baba-6252dcd80...@c1g2000vbw.googlegroups.com>...
> > > > > > > > > > > > On 24 Okt., 17:18, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <36eea4f4-4887-4557-8c14-744e0c5bb...@q13g2000vbd.googlegroups.com>...
> > > > > > > > > > > > > > On 24 Okt., 11:51, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <db464627-33b0-456e-907c-47f521590...@f36g2000vbm.googlegroups.com>...
> > > > > > > > > > > > > > > > On 24 Okt., 11:24, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > > > > > > > Torsten <Torsten.Hen...@umsicht.fraunhofer.de> wrote in message <41a15ffe-e999-41b9-8261-bd74f589c...@l12g2000vby.googlegroups.com>...
> > > > > > > > > > > > > > > > > > On 24 Okt., 10:52, "S " <simaher2...@yahoo.co.uk> wrote:
> > > > > > > > > > > > > > > > > > > Hi,
>
> > > > > > > > > > > > > > > > > > > I have a problem in solving the double integral below in matlab.
>
> > > > > > > > > > > > > > > > > > > As I increase f and g to larger values then matlab complains of singularity and unsuccessful integration.
>
> > > > > > > > > > > > > > > > > > > 3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 - 2*cos(y).*(cos(y) + cos(x)) dxdy
>
> > > > > > > > > > > > > > > > > > > Over limits -pi to pi for x and -pi to pi for y.
>
> > > > > > > > > > > > > > > > > > > I have been using:
> > > > > > > > > > > > > > > > > > > quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi)
>
> > > > > > > > > > > > > > > > > > > Can anyone please help? How can I overcome this problem as I would like to integrate this function for various 'f' and 'g' up to ~2000.
>
> > > > > > > > > > > > > > > > > > > Thanks!
>
> > > > > > > > > > > > > > > > > > Since the period of your function becomes smaller and smaller with
> > > > > > > > > > > > > > > > > > increasing values for f and g,
> > > > > > > > > > > > > > > > > > you should integrate it analytically with the help of MATLAB's int.
>
> > > > > > > > > > > > > > > > > > Best wishes
> > > > > > > > > > > > > > > > > > Torsten.
>
> > > > > > > > > > > > > > > > > Hi Torsten,
>
> > > > > > > > > > > > > > > > > Thanks for your reply.
>
> > > > > > > > > > > > > > > > > I take your point but I would like to integrate this numerically. Ideally, I would like to compute the integral for various f and g.
>
> > > > > > > > > > > > > > > > > Any ideas how I can do this?- Zitierten Text ausblenden -
>
> > > > > > > > > > > > > > > > > - Zitierten Text anzeigen -
>
> > > > > > > > > > > > > > > > Can you prescribe an initial x- and y-grid for MATLAB's quad2d ?
> > > > > > > > > > > > > > > > If so, choose the increment in x and y very small to ensure that your
> > > > > > > > > > > > > > > > highly oscillating function
> > > > > > > > > > > > > > > > is sufficiently resolved.
> > > > > > > > > > > > > > > > To get an impression of your function, you should plot it for high
> > > > > > > > > > > > > > > > values of f and g.
> > > > > > > > > > > > > > > > Do you see now why quad2d has difficulties to integrate it
> > > > > > > > > > > > > > > > numerically ?
>
> > > > > > > > > > > > > > > > I repeat: Integrate your function _analytically_ using MATLAB's 'int'.
>
> > > > > > > > > > > > > > > > Best wishes
> > > > > > > > > > > > > > > > Torsten.
>
> > > > > > > > > > > > > > > Thanks for your reply and so fast.
>
> > > > > > > > > > > > > > > However, I do not have the symbolic toolbox installed :-(
>
> > > > > > > > > > > > > > > Surely there must be another way?- Zitierten Text ausblenden -
>
> > > > > > > > > > > > > > > - Zitierten Text anzeigen -
>
> > > > > > > > > > > > > > Using
> > > > > > > > > > > > > >http://integrals.wolfram.com
> > > > > > > > > > > > > > ,I get
> > > > > > > > > > > > > > 8*Pi^2 + sin(Pi*f)*sin(Pi*g)*(1/(g*(f-1)) + 8*g/(f*(1-g^2)))
> > > > > > > > > > > > > > for your integral.
> > > > > > > > > > > > > > But you should double-check the result.
>
> > > > > > > > > > > > > > Best wishes
> > > > > > > > > > > > > > Torsten.
>
> > > > > > > > > > > > > Thanks for reply.
>
> > > > > > > > > > > > > @ Torsten. Very good website btw. However, the website is unable to integrate the function.- Zitierten Text ausblenden -
>
> > > > > > > > > > > > > - Zitierten Text anzeigen -
>
> > > > > > > > > > > > Use the website as follows:
> > > > > > > > > > > > First integrate your function with respect to x by treating y as
> > > > > > > > > > > > constant:
> > > > > > > > > > > > int(3) = 3*x
> > > > > > > > > > > > int(- 2*cos(y)*cos(f*x+g*y))=-2*cos(y)*1/f*sin(f*x+g*y)
> > > > > > > > > > > > int(- cos((f-1)*x + g*y)  ./  4 ) = -1/(f-1)*sin((f-1)*x + g*y)/4
> > > > > > > > > > > > int(- 2*cos(y).*(cos(y))=-2*x*cos^2(y)
> > > > > > > > > > > > int(- 2*cos(y).*cos(x)) = -2*cos(y)*sin(x)
> > > > > > > > > > > > Thus
> > > > > > > > > > > > int(3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y)  ./  4 -
> > > > > > > > > > > > 2*cos(y).*(cos(y) + cos(x)) dx) =
> > > > > > > > > > > > 3*x-2*cos(y)*1/f*sin(f*x+g*y)-1/(f-1)*sin((f-1)*x + g*y)/
> > > > > > > > > > > > 4-2*x*cos^2(y)-2*cos(y)*sin(x)
> > > > > > > > > > > > Evaluate in the limits between -pi and pi:
> > > > > > > > > > > > 3*pi-2*cos(y)*1/f*sin(f*pi+g*y)-1/(f-1)*sin((f-1)*pi + g*y)/
> > > > > > > > > > > > 4-2*pi*cos^2(y) -
> > > > > > > > > > > > ( 3*(-pi)-2*cos(y)*1/f*sin(-f*pi+g*y)-1/(f-1)*sin(-(f-1)*pi + g*y)/
> > > > > > > > > > > > 4-2*(-pi)*cos^2(y)) =
> > > > > > > > > > > > 6*pi-2*cos(y)*1/f*(sin(f*pi+g*y)-sin(-f*pi+g*y))-0.25/
> > > > > > > > > > > > (f-1)*(sin((f-1)*pi + g*y)-sin(-(f-1)*pi + g*y))-4*pi*cos^2(y)
> > > > > > > > > > > > Now use the
> > > > > > > > > > > >http://integrals.wolfram.com
> > > > > > > > > > > > to integrate this expression term by term.
> > > > > > > > > > > > (Of course you have to substitute the y in the expressions by an x
> > > > > > > > > > > > because the wolfram-integrator assumes
> > > > > > > > > > > > the functions to integrate to depend on the variable x).
> > > > > > > > > > > > Subsequently evaluate in the limits between -pi and pi.
>
> > > > > > > > > > > > The cases in which f=0 and |g|=1 may be treated seperately.
>
> > > > > > > > > > > > Best wishes
> > > > > > > > > > > > Torsten.
>
> > > > > > > > > > > Im really sorry. I see where some of my misgivings have coome from.
>
> > > > > > > > > > > In my initial post I forgot to include the brackets around the denominator. The function is:
> > > > > > > > > > > (3 - 2*cos(y).*cos(f*x+g*y) - cos((f-1)*x + g*y))  ./  (4 - 2*cos(y).*(cos(y) + cos(x))) dxdy
>
> > > > > > > > > > > Really sorry about that.- Zitierten Text ausblenden -
>
> > > > > > > > > > > - Zitierten Text anzeigen -
>
> > > > > > > > > > Then - as a further difficulty - you will have problems with the
> > > > > > > > > > points where your
> > > > > > > > > > denominator gets zero, e.g. (0,0) or (pi,pi) (where (pi,pi) is more
> > > > > > > > > > critical than
> > > > > > > > > > (0,0) because the numerator usually is different from 0 there).
> > > > > > > > > > This might explain the error message of quad2d (if you entered the
> > > > > > > > > > function
> > > > > > > > > > correctly in the MATLAB-file).
>
> > > > > > > > > > Best wishes
> > > > > > > > > > Torsten.
>
> > > > > > > > > Hi thanks for reply.
>
> > > > > > > > > Yes, this is the problem. Any ideas how I might somehow be able to manoeuvre this???
>
> > > > > > > > > cheers- Zitierten Text ausblenden -
>
> > > > > > > > > - Zitierten Text anzeigen -
>
> > > > > > > > Thinking about your function, I'm pretty sure that it is not
> > > > > > > > integrable over
> > > > > > > > [-pi;pi]x[-pi;pi] (at least for all values of f and g such that the
> > > > > > > > numerator -
> > > > > > > > evaluated at (+-pi/+-pi) - is different from 0).
> > > > > > > > The reason is that in the neighbourhood of (+-pi/+-pi), the
> > > > > > > > denominator
> > > > > > > > behaves like (3*x^2+y^2) near (0,0), and the function 1/(3*x^2+y^2) is
> > > > > > > > not
> > > > > > > > integrable over a domain including (0,0).
>
> > > > > > > > Best wishes
> > > > > > > > Torsten.
>
> > > > > > > Hi,
>
> > > > > > > Thanks for your reply and continual help - its much appreciated!
>
> > > > > > > -How can I get round this then?
> > > > > > > -Could I integrate from -pi to (0-delta) and add the result to the integration from (0+delta) to pi??? Would that work?
>
> > > > > > I did not yet analyze if (0,0) is a problem - the problem I had in
> > > > > > mind are the corner points of your domain
> > > > > > (i.e. (pi/pi),(-pi/pi),(-pi,-pi),(pi,-pi)).
> > > > > > It won't help to integrate up to a certain delta away from the
> > > > > > singularity because the result will
> > > > > > depend on that delta - simply because the integral of your function
> > > > > > over [-pi;pi]x[-pi;pi] is infinity.
>
> > > > > > > -Additionally, I dont quite understand why matlab is happy to integrate the function for certain values of f and g and not others?
>
> > > > > > I suspect these are numerical artefacts. Could you specify values of f
> > > > > > and g for which the integration
> > > > > > is successful and report the value MATLAB suggests for the integral ?
>
> > > > > > > merci- Zitierten Text ausblenden -
>
> > > > > > > - Zitierten Text anzeigen -
>
> > > > > > Best wishes
> > > > > > Torsten.
>
> > > > > Hi Thanks Torsten.
>
> > > > > Ideally-------------
> > > > > Ideally, I would like to evaluate the integral for all points where (f+g) is
>
> > > > > odd in the interval (0,0) to (2000,2000).
>
> > > > > Test-------------
> > > > > However, what I did:
> > > > > Integrating from (0,0) to (0,1000) and (1,0) to (1,1000) and (2,0) to (2,000).
>
> > > > > Essentially taking the first 3 rows.
> > > > > (quad2d(@(x,y)my_func(x,y,f,g),-pi,pi,-pi,pi,'MaxFunEvals',1e5));
> > > > > And storing results in a 3x1001 array.
> > > > > [*Note: ideally I want to run to 2000,2000 but will take along time. Also, I have included a check for (f+g) = even, and not computed that result.]
> > > > > temp = (f+g);
> > > > > if( floor((temp/2)) == (temp/2) )
> > > > > flag_even=1;
>
> > > > > Errors:-------------
> > > > > Matlab outputs multiple errors of 2 kinds:
> > > > > 1. Warning: Reached the maximum number of function evaluations (100000). The result fails the global error test.> In quad2d at 248
>
> > > > >   In Grid_Mesh_Hex at 94
> > > > > 2. Warning: Non-finite result. The integration was unsuccessful. Singularity likely.> In quad2d at 242
>
> > > > >   In Grid_Mesh_Hex at 94
>
> > > > > Result:-------------
> > > > > For (f+g) is odd, all 3 rows give the correct answers up to and including column 133 for row 0. After that I get Inf up until 177 on row 0. Then more Inf until 241. Then a result. Then more Inf until 249 then a result. More Inf until 263.From 263 to 295 inclusive I get results again (results in the region of ~149).
> > > > > This sort of sporadic output of Inf and numerical results continues. Similar sporadic patterns of results and Inf are evident for the other 2 rows.
>
> > > > > Example Results:
> > > > > e.g) (1,0) = 26.31; (3,0) = 48.58;
> > > > > (0,1) = 26.31; (2,1) = 43.53
> > > > > (1,2) = 48.58
>
> > > > > Taking the curve fit of row 0 for the first 129 points (every other point where f+g is odd). The results follow the expected pattern of a*ln(x) + b.
> > > > > For the higher values of f and/or g the change in the result should become less and less. These 'Inf' results are incorrect.
> > > > > Hope this is useful.
>
> > > > > Please help.
>
> > > > > Thanks.
>
> > > > Why did you hide until now that you take f and g to be _integers_
> > > > which sum up to an _odd_ number ?
> > > > In case you would have provided this information straight away, it
> > > > would have been obvious that your
> > > > integral exists, and much of the discussion so far would have been
> > > > superfluous.
> > > > Anyway:
> > > > Because quad2d claims that there can be singularities on the boundary
> > > > of the domain of integration,
> > > > I suggest that you integrate your function over 4 domains seperately
> > > > and add the results, namely
> > > > [0,pi]x[0,pi], [-pi,0]x[0,pi], [0,pi]x[-pi,0] and [-pi,0]x[-pi,0].
> > > > This should at least prevent the second warning of a non-finite
> > > > result.
> > > > Choosing greater values for AbsTol and RelTol (especially for large
> > > > values of f and g)
> > > > should result in shorter computation times.
>
> > > > Best wishes
> > > > Torsten.
>
> > > My apologies Torsten. Initially, I thought I was just having issues with correctly using the matlab function and so didn't think that info was necessary :-/
>
> > > Many thanks for your help - it is truly appreciated.
>
> > > Could I just ask how you came to your conclusion. Just so that I can sort such problems out myself in the future.
>
> > > And also because I have another function I want to integrate for (f+g) is even... f = (1-cos(f.*x+g.*y))./(4-2*cos(y).*(cos(y)+cos(x)));
>
> > > Thanks again
>
> > Which conclusion do you mean ?
>
> > Best wishes
> > Torsten.
>
> I meant how you came to this:
> [0,pi]x[0,pi], [-pi,0]x[0,pi], [0,pi]x[-pi,0] and [-pi,0]x[-pi,0].
>
> I implemented it as follows:
> ** For f+g = Odd **
> temp = (quad2d(@(x,y)my_func(x,y,f,g),0,pi,0,pi,'MaxFunEvals', 1e5));
> temp = temp + (quad2d(@(x,y)my_func(x,y,f,g),-pi,0,0,pi,'MaxFunEvals', 1e5));
> temp = temp + (quad2d(@(x,y)my_func(x,y,f,g),0,pi,-pi,0,'MaxFunEvals', 1e5));
> temp = temp + (quad2d(@(x,y)my_func(x,y,f,g),-pi,0,-pi,0,'MaxFunEvals', 1e5));
> result(f,g) = temp;
>
> I ran for f=0 and f=1 and g up to 1000 and I still get errors of the sort:
> Warning: Non-finite result. The integration was unsuccessful. Singularity likely.> In quad2d at 242
>
>   In Grid_Mesh_Hex at 102
> Warning: Non-finite result. The integration was unsuccessful. Singularity likely.> In quad2d at 242
>
>   In Grid_Mesh_Hex at 103
> Warning: Non-finite result. The integration was unsuccessful. Singularity likely.> In quad2d at 242
>
>   In Grid_Mesh_Hex at 104
> Warning: Non-finite result. The integration was unsuccessful. Singularity likely.> In quad2d at 242
>
>   In Grid_Mesh_Hex at 105

I thought it would be a good idea to place the singularity in (0,0)
(which is in the interior of the domain)
on the boundary because the description of quad2d said that it could
handle singularities
there.
If it nevertheless refuses to integrate your function, I can't help
you.

If I were you, I'd just try the brute-force method:
Choose a grid as -pi=x1<x2<...<xn=pi, -pi=y(1)<y(2)<...<y(m)=pi in the
coordinate directions and
approximate your integral by
sum_i sum_j f((x(i)+x(i+1))/2,(y(j)+y(j+1))/2)*(x(i+1)-x(i))*(y(j+1)-
y(j)).
Choose the grid finer and finer until this sum converges to a stable
value.

Best wishes
Torsten.

Tags for 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