Group Abstract Group Abstract

Message Boards Message Boards

0
|
3.7K Views
|
5 Replies
|
2 Total Likes
View groups...
Share
Share this post:

Get Integrate and Conjugate to work with Generalized Functions?

Anonymous User
Anonymous User
Posted 9 years ago

These work:

In[363]:= Integrate[+I*DiracDelta[x], {x, -Infinity, +Infinity}]

Out[363]= I

In[364]:= Integrate[-I*DiracDelta[x], {x, -Infinity, +Infinity}]

Out[364]= -I

But Mathematica doesn't evaluate this:

In[367]:= Integrate[
 Conjugate[+I*DiracDelta[x]], {x, -Infinity, +Infinity}]

More generally, I need a function that does something like this:

testFunction2[signal_] := 
 Integrate[
  signal[x] + Conjugate[signal[x]], {x, -Infinity, +Infinity}]

But my naive implementation fails to evaluate this to zero:

In[366]:= testFunction2[(I*DiracDelta[#]) &]

Is there a way to implement this so that Mathematica will recognize that the conjugate of (the product of a complex-number and DiracDelta) equals the product of (the conjugate of the complex-number) and DiracDelta? This axiom is true in conventional theories of generalized functions, no?

POSTED BY: Anonymous User
5 Replies
Anonymous User
Anonymous User
Posted 9 years ago

Is there a way to implement this so that Mathematica will recognize that the conjugate of (the product of a complex-number and DiracDelta) equals the product of (the conjugate of the complex-number) and DiracDelta? This axiom is true in conventional theories of generalized functions, no?

This may solve my problem by augmenting Wolfram's implementation of Conjugate, but I have barely tested it yet:

conjugate[DiracDelta[x_]] := DiracDelta[x]

conjugate[x_ + y_] := conjugate[x] + conjugate[y]

conjugate[x_*y_] := conjugate[x]*conjugate[y]

conjugate[x_] := Conjugate[x]

I will see if I can modify my program so that "Conjugate" no longer shows up inside the integrand, and "conjugate" takes it place(s) instead.

Very preliminary testing looks good:

In[5]:= Integrate[
 conjugate[+I*DiracDelta[x]], {x, -Infinity, +Infinity}]

Out[5]= -I

In[8]:= testFunction3[signal_] := 
 Integrate[signal[x] + conjugate[signal[x]], {x, -Infinity, +Infinity}]

In[9]:= testFunction3[(I*DiracDelta[#]) &]

Out[9]= 0
POSTED BY: Anonymous User

With ungeneralized functions I would be tempted to write

testFunction2[signal_] := 
 2 Re[Integrate[signal[x], {x, -Infinity, +Infinity}]]
POSTED BY: Gianluca Gorni
Anonymous User
Anonymous User
Posted 9 years ago

I have tried to explain why I can't do that (but maybe I've been unclear):

in the application I'm developing, the integrand is formed automatically at run-time, so there's no opportunity for me to rearrange it manually. Any rearrangement needs to be programmatic, and I cannot know ahead of runtime how generalized functions and Conjugate will be combined inside the integrand.

At run-time, the integrand might end up being, for example,

I*DiracDelta[x]

In that case, the integral should not be real, so the "Re" outside the Integrate function would cause an error in the results.

POSTED BY: Anonymous User

I am not familiar with generalized functions. Have you reasons to believe that Integrate[Conjugate[signal[x]], {x, -Infinity, +Infinity}] may not be the same as Conjugate[Integrate[signal[x], {x, -Infinity, +Infinity}]]?

POSTED BY: Gianluca Gorni
Anonymous User
Anonymous User
Posted 9 years ago
POSTED BY: Anonymous User
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard