help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: residue() confusion


From: Ben Abbott
Subject: Re: residue() confusion
Date: Mon, 24 Sep 2007 17:14:18 -0700 (PDT)

Henry,

Your results are correct. The difference is that there is no longer a
multiplicity of poles.

Matlab gives the same result ... with the exception of the order of the
poles. Matlab sorts them from largest to smallest (respecting magnitude).


Henry F. Mollet wrote:
> 
> I have checked what has become residue4.m at Doug Stewart's URL which
> agrees
> with solution given by Ben Abbot: 2/9 = 0.222222222222222 and 5/54 =
> 0.0925925925925926.
> 
> Is there an easy explanation why the coefficients are so different when I
> remove the multiplicity of the poles by using 80.9999 instead of 81.000 in
> denominator polynomial?
> Henry
> 
> octave-2.9.14:26> format long
> octave-2.9.14:27> [a,p,k,e] = residue4(num,den)
> a =
>   -7.29060028230561e-27 - 9.25925925925924e-02i
>   2.22222222690571e-01 - 9.97810470405334e-10i
>   -1.40225660362292e-25 + 9.25925925925924e-02i
>   2.22222222690570e-01 + 9.97810470405334e-10i
> 
> p =
>   -0.00000001077635 + 2.99999999494184i
>    0.00000001077635 + 3.00000000505816i
>   -0.00000001077635 - 2.99999999494184i
>    0.00000001077635 - 3.00000000505816i
> 
> k = [](0x0)
> e =
>    1
>    2
>    1
>    2
> 
> octave-2.9.14:34> den809999=[1 0 18 0 80.9999]
> den809999 =
>  Columns 1 through 3:
>     1.000000000000000    0.000000000000000   18.000000000000000
>  Columns 4 and 5:
>     0.000000000000000   80.999899999999997
> 
> octave-2.9.14:35> [a,p,k,e] = residue4(num,den809999)
> a =
>     0.0000000000405 + 66.6203549268702i
>    -0.0000000000405 - 66.7129475394614i
>     0.0000000000405 - 66.6203549268781i
>    -0.0000000000405 + 66.7129475394693i
> 
> p =
>    0.00000000000000 + 2.99833287011296i
>   -0.00000000000000 + 3.00166620396076i
>    0.00000000000000 - 2.99833287011296i
>   -0.00000000000000 - 3.00166620396076i
> 
> k = [](0x0)
> e =
> 
>    1
>    1
>    1
>    1
> *******************************************************************
> 
> on 9/22/07 8:56 PM, Doug Stewart at address@hidden wrote:
> 
>> Not yet I was letting some users try it first to make sure that there
>> are no more problems before we commit it.
>> So give it a try and report back to the list.
>> Doug
>> 
>> Ben Abbott wrote:
>>> Thanks Doug,
>>> 
>>> Is this fix included in 2.9.14?
>>> 
>>> 
>>> 
>>> Doug Stewart wrote:
>>>   
>>>> Here is my results for this question
>>>> 
>>>> num = [1 0 1];
>>>>  den = [1 0 18 0 81];
>>>>  [a,p,k,e] = residue(num,den)
>>>> 
>>>> a =
>>>> 
>>>>   1.0e+06  *
>>>> 
>>>>    5.927582766769742 + 2.314767228467131i
>>>>    5.927582730209724 - 2.314767214190160i
>>>>   -5.927582717669299 - 2.314767374340102i
>>>>   -5.927582681109279 + 2.314767360063129i
>>>> 
>>>> p =
>>>> 
>>>>    0.000000016264485 + 2.999999993648592i
>>>>    0.000000016264485 - 2.999999993648592i
>>>>   -0.000000016264485 + 3.000000006351409i
>>>>   -0.000000016264485 - 3.000000006351409i
>>>> 
>>>> k = []
>>>> e =
>>>> 
>>>>                   1
>>>>                   1
>>>>                   1
>>>>                   1
>>>> 
>>>>>>   [a,p,k,e] = residue2(num,den)
>>>> a =
>>>> 
>>>>   -0.000000000000000 - 0.092592592592593i
>>>>    0.000000000000000 + 0.092592592592593i
>>>>    0.222222222810316 + 0.000000001505971i
>>>>    0.222222222810316 - 0.000000001505971i
>>>> 
>>>> p =
>>>> 
>>>>    0.000000016264485 + 2.999999993648592i
>>>>    0.000000016264485 - 2.999999993648592i
>>>>   -0.000000016264485 + 3.000000006351409i
>>>>   -0.000000016264485 - 3.000000006351409i
>>>> 
>>>> k = []
>>>> e =
>>>> 
>>>>                   1
>>>>                   1
>>>>                   2
>>>>                   2
>>>> 
>>>> 
>>>> 
>>>> the second one is my "fixed" code and this agrees with Matlab.
>>>> 
>>>> You can get my code at:
>>>> 
>>>> www.dougs.homeip.net/octave/residue2.m
>>>> 
>>>> Doug
>>>> 
>>>> 
>>>> 
>>>> 
>>>> 
>>>> Henry F. Mollet wrote:
>>>>     
>>>>> Your concern is justified. I don't know how to do partial fractions by
>>>>> hand
>>>>> when there is multiplicity. Therefore I checked results by hand using
>>>>> s =
>>>>> linspace (-4i, 4i, 9) as a first check. It appears that Matlab results
>>>>> are
>>>>> correct if I take into account multiplicity of [1 2 1 2]. Octave
>>>>> results
>>>>> appear to be incorrect.
>>>>> Henry
>>>>> octave-2.9.14:29> s =
>>>>>   -0 - 4i   0 - 3i   0 - 2i   0 - 1i   0 + 0i   0 + 1i   0 + 2i   0 +
>>>>> 3i
>>>>> 0
>>>>> + 4i
>>>>> 
>>>>> Using left hand side of equation:
>>>>> octave-2.9.14:30> y=(s.^2 + 1)./(s.^4 + 18*s.^2 + 81)
>>>>> y =
>>>>>  Columns 1 through 6:
>>>>>   -0.30612 + 0.00000i       NaN +     NaNi  -0.12000 - 0.00000i  
>>>>> 0.00000
>>>>> -
>>>>> 0.00000i   0.01235 - 0.00000i   0.00000 - 0.00000i
>>>>>  Columns 7 through 9:
>>>>>   -0.12000 + 0.00000i       NaN +     NaNi  -0.30612 + 0.00000i
>>>>> 
>>>>> Using right hand side of equation with partial fraction given by
>>>>> Matlab:
>>>>> octave-2.9.14:31> yMatlab= (0 - 0.0926i)./(s-3i) + (0.2222 -
>>>>> 0.0000i)./(s-3i).^2 + (0 + 0.0926i)./(s+3i) + (0.2222 +
>>>>> 0.0000i)./(s+3i).^2
>>>>> 
>>>>> yMatlab =
>>>>>  Columns 1 through 6:
>>>>>   -0.30611 + 0.00000i       NaN +     NaNi  -0.11997 + 0.00000i  
>>>>> 0.00001
>>>>> +
>>>>> 0.00000i   0.01236 + 0.00000i   0.00001 + 0.00000i
>>>>>  Columns 7 through 9:
>>>>>   -0.11997 + 0.00000i       NaN +     NaNi  -0.30611 + 0.00000i
>>>>> 
>>>>> Using right hand side of equation with partial fraction given by
>>>>> Octave:
>>>>> octave-2.9.14:32> yOctave=(-3.0108e+06 - 1.9734e+06i)./(s-3i) +
>>>>> (3.0108e+06
>>>>> + 1.9734e+06i)./(s-3i).^2 + (-3.0108e+06 + 1.9734e+06i)./(3+3i) +
>>>>> (3.0108e+06 - 1.9734e+06i)./(s+3i).^2
>>>>> 
>>>>> yOctave =
>>>>>  Columns 1 through 5:
>>>>>   -2.9632e+06 + 2.3337e+06i         NaN +       NaNi  -2.9095e+06 +
>>>>> 2.1230e+06i  -6.2042e+05 + 4.4801e+05i  -1.8417e+05 - 1.7290e+05i
>>>>>  Columns 6 through 9:
>>>>>   -1.2708e+05 - 1.0447e+06i  -1.3307e+06 - 4.0746e+06i         NaN +
>>>>> NaNi  -5.2185e+06 + 1.9084e+06i
>>>>> 
>>>>> **********************************
>>>>> 
>>>>> on 9/22/07 2:14 PM, Ben Abbott at address@hidden wrote:
>>>>> 
>>>>>   
>>>>>       
>>>>>> I was more concerned about the differences in "a"
>>>>>> 
>>>>>> I suppose I'll need to do a derivation and check the correct answer.
>>>>>> 
>>>>>> On Sep 22, 2007, at 5:05 PM, Henry F. Mollet wrote:
>>>>>> 
>>>>>>     
>>>>>>         
>>>>>>> The result for e should be [1 2 1 2] (multiplicity for both poles).
>>>>>>> Note
>>>>>>> that Matlab does not even give e.  My mis-understanding of the
>>>>>>> problem was
>>>>>>> pointed out by Doug Stewart. Doug posted new code yesterday, which
>>>>>>> I've
>>>>>>> tried unsuccessfully, but I cannot be sure that I've implemented
>>>>>>> residual.m
>>>>>>> correctly. The corrected code still produced e = [1 1 1 1] for me.
>>>>>>> Henry
>>>>>>> 
>>>>>>> 
>>>>>>> on 9/22/07 1:31 PM, Ben Abbott at address@hidden wrote:
>>>>>>> 
>>>>>>>       
>>>>>>>           
>>>>>>>> As a result of reading through Hodel's
>>>>>>>> http://www.nabble.com/bug-in-residue.m-tf4475396.html post  I
>>>>>>>> decided to
>>>>>>>> check to see how my Octave installation and my Matlab installation
>>>>>>>> responded
>>>>>>>> to the example
>>>>>>>> 
>>>>>>>> Using Matlab v7.3
>>>>>>>> --------------------------
>>>>>>>>  num = [1 0 1];
>>>>>>>>  den = [1 0 18 0 81];
>>>>>>>>  [a,p,k] = residue(num,den)
>>>>>>>> 
>>>>>>>> a =
>>>>>>>> 
>>>>>>>>         0 - 0.0926i
>>>>>>>>    0.2222 - 0.0000i
>>>>>>>>         0 + 0.0926i
>>>>>>>>    0.2222 + 0.0000i
>>>>>>>> 
>>>>>>>> 
>>>>>>>> p =
>>>>>>>> 
>>>>>>>>    0.0000 + 3.0000i
>>>>>>>>    0.0000 + 3.0000i
>>>>>>>>    0.0000 - 3.0000i
>>>>>>>>    0.0000 - 3.0000i
>>>>>>>> 
>>>>>>>> 
>>>>>>>> k =
>>>>>>>> 
>>>>>>>>      []
>>>>>>>> --------------------------
>>>>>>>> 
>>>>>>>> Using Octave 2.9.13 (via Fink) on Mac OSX
>>>>>>>> --------------------------
>>>>>>>>  num = [1 0 1];
>>>>>>>>  den = [1 0 18 0 81];
>>>>>>>>  [a,p,k] = residue(num,den)
>>>>>>>> 
>>>>>>>> a =
>>>>>>>> 
>>>>>>>>   -3.0108e+06 - 1.9734e+06i
>>>>>>>>   -3.0108e+06 + 1.9734e+06i
>>>>>>>>   3.0108e+06 + 1.9734e+06i
>>>>>>>>   3.0108e+06 - 1.9734e+06i
>>>>>>>> 
>>>>>>>> p =
>>>>>>>> 
>>>>>>>>   -0.0000 + 3.0000i
>>>>>>>>   -0.0000 - 3.0000i
>>>>>>>>    0.0000 + 3.0000i
>>>>>>>>    0.0000 - 3.0000i
>>>>>>>> 
>>>>>>>> k = [](0x0)
>>>>>>>> e =
>>>>>>>> 
>>>>>>>>    1
>>>>>>>>    1
>>>>>>>>    1
>>>>>>>>    1
>>>>>>>> --------------------------
>>>>>>>> 
>>>>>>>> These are different from both the result that
>>>>>>>> http://www.nabble.com/bug-in-residue.m-tf4475396.html Hodel
>>>>>>>> obtained , as
>>>>>>>> well as different from
>>>>>>>> http://www.nabble.com/bug-in-residue.m-tf4475396.html Mollet's
>>>>>>>> 
>>>>>>>> Thoughts anyone?
>>>>>>>> 
>>>>>>>>         
>>>>>>>>            
>>>>>>>       
>>>>>>>           
>>>>> _______________________________________________
>>>>> Help-octave mailing list
>>>>> address@hidden
>>>>> https://www.cae.wisc.edu/mailman/listinfo/help-octave
>>>>> 
>>>>>   
>>>>>       
>>>> _______________________________________________
>>>> Help-octave mailing list
>>>> address@hidden
>>>> https://www.cae.wisc.edu/mailman/listinfo/help-octave
>>>> 
>>>> 
>>>>     
>>> 
>>>   
>> 
>> _______________________________________________
>> Help-octave mailing list
>> address@hidden
>> https://www.cae.wisc.edu/mailman/listinfo/help-octave
> 
> 
> _______________________________________________
> Help-octave mailing list
> address@hidden
> https://www.cae.wisc.edu/mailman/listinfo/help-octave
> 
> 

-- 
View this message in context: 
http://www.nabble.com/residue%28%29-confusion-tf4502015.html#a12870921
Sent from the Octave - General mailing list archive at Nabble.com.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]