{"id":5681,"date":"2020-01-18T10:40:50","date_gmt":"2020-01-18T15:40:50","guid":{"rendered":"https:\/\/blogs.mathworks.com\/cleve\/?p=5681"},"modified":"2022-06-03T07:45:48","modified_gmt":"2022-06-03T11:45:48","slug":"pejorative-manifolds-of-polynomials-and-matrices-part-1","status":"publish","type":"post","link":"https:\/\/blogs.mathworks.com\/cleve\/2020\/01\/18\/pejorative-manifolds-of-polynomials-and-matrices-part-1\/","title":{"rendered":"Pejorative Manifolds of Polynomials and Matrices, part 1"},"content":{"rendered":"<div class=\"content\"><!--introduction--><p>In an unpublished 1972 technical report \"Conserving confluence curbs ill-condition,\"  Velvel Kahan coined the descriptive term <i>pejorative manifold<\/i>. In case you  don't use it in everyday conversation, <i>pejorative<\/i>  means \"expressing contempt or disapproval.\"<\/p><p>Velvel's report concerns polynomials with multiple roots, which are usually regarded with contempt because they are so badly conditioned. But Velvel's key observation is that although multiple roots are sensitive to arbitrary perturbation, they are insensitive to perburbations that preserve multiplicity.  The same observation can be applied to matrix inverses and eigenvalues.<\/p><!--\/introduction--><h3>Contents<\/h3><div><ul><li><a href=\"#20ce8d5d-d671-4e0f-a034-5a445b069c88\">The manifold<\/a><\/li><li><a href=\"#34136068-344a-4c05-83fd-82f3e18dd510\">Two polynomials<\/a><\/li><li><a href=\"#8b0b5013-5467-48ec-8605-b0cd716034c6\">Confirm<\/a><\/li><li><a href=\"#b137e5c7-1023-4398-97e6-ceaa6693dc00\">Convex combination<\/a><\/li><li><a href=\"#9d925bd1-6fb2-4c1d-99c6-31889785c23b\">Floating point haze<\/a><\/li><li><a href=\"#9440745b-2292-4b25-954b-d4e38c4a3221\">Double precision<\/a><\/li><li><a href=\"#f0f65472-4680-4138-94f9-62376cac1592\">Venture off the manifold<\/a><\/li><li><a href=\"#ebf7ab6c-1252-4f6b-be6b-af06a02056bd\">To be continued<\/a><\/li><li><a href=\"#8be0f7a3-d82f-433b-9b64-dd04cebbb8c4\">References<\/a><\/li><\/ul><\/div><h4>The manifold<a name=\"20ce8d5d-d671-4e0f-a034-5a445b069c88\"><\/a><\/h4><p>In this example, the pejorative manifold $\\mathcal{M}$ is the set of all sixth degree polynomials which have a zero of multiplicity three at x = 3.  These are severe restrictions, of course, and $\\mathcal{M}$ is a tiny subset of the set of all polynomials.  But if we stay within $\\mathcal{M}$, life is not nearly so harsh.<\/p><h4>Two polynomials<a name=\"34136068-344a-4c05-83fd-82f3e18dd510\"><\/a><\/h4><p>First a pair of polynomials with multiple roots.  All of our polynomials have a root of multplicity three at x = 3 as well as other multiple roots. This one a double root at x = 1 and a simple root at x = 2.<\/p><pre class=\"codeinput\"> x = sym(<span class=\"string\">'x'<\/span>);\r\n\r\n p1 = (x-3)^3*(x-2)*(x-1)^2;\r\n<\/pre><p>$$ p1 = {\\left(x-1\\right)}^2\\,\\left(x-2\\right)\\,{\\left(x-3\\right)}^3 $$<\/p><p>The next one has a double root at x = 2 and a simple root at x = 1.<\/p><pre class=\"codeinput\"> p2 = (x-3)^3*(x-2)^2*(x-1);\r\n<\/pre><p>$$ p2 = \\left(x-1\\right)\\,{\\left(x-2\\right)}^2\\,{\\left(x-3\\right)}^3 $$<\/p><p>To summarize, we have two polynomials, <tt>p1<\/tt> and <tt>p2<\/tt> .  Both have degree six and have a triple root at x = 3.  In addition, <tt>pk<\/tt> has a double root at x = <tt>k<\/tt> .<\/p><h4>Confirm<a name=\"8b0b5013-5467-48ec-8605-b0cd716034c6\"><\/a><\/h4><p>Let's see the coefficients.<\/p><pre class=\"codeinput\">  p1 = expand(p1);\r\n<\/pre><p>$$ p1 = x^6-13\\,x^5+68\\,x^4-182\\,x^3+261\\,x^2-189\\,x+54 $$<\/p><pre class=\"codeinput\">  p2 = expand(p2);\r\n<\/pre><p>$$ p2 = x^6-14\\,x^5+80\\,x^4-238\\,x^3+387\\,x^2-324\\,x+108 $$<\/p><p>We can solve them exactly and verify that they have the desired roots.<\/p><pre class=\"codeinput\">  z1 = solve(p1)'\r\n  z2 = solve(p2)'\r\n<\/pre><pre class=\"codeoutput\">z1 =\r\n[ 1, 1, 2, 3, 3, 3]\r\nz2 =\r\n[ 1, 2, 2, 3, 3, 3]\r\n<\/pre><h4>Convex combination<a name=\"b137e5c7-1023-4398-97e6-ceaa6693dc00\"><\/a><\/h4><p>Now let's take a convex linear combination.  I am using 1\/3 and 2\/3, but I could use any other weights as long as their sum is 1.  Any such convex linear combination is still in $\\mathcal{M}$.<\/p><pre class=\"codeinput\">   p3 = 1\/3*p1 + 2\/3*p2;\r\n<\/pre><p>$$ p3 = x^6-\\frac{41\\,x^5}{3}+76\\,x^4-\\frac{658\\,x^3}{3}+345\\,x^2-279\\,x+90 $$<\/p><p>This still has the triple root at x = 3. The roots at x = 1 and x = 2 are now simple and the root at x = 5\/3 is the convex linear combination of 1 and 2 with the same coefficents, 5\/3 = 1\/3*1 + 2\/3*2.<\/p><pre class=\"codeinput\">   z = solve(p3)'\r\n<\/pre><pre class=\"codeoutput\">z =\r\n[ 1, 5\/3, 2, 3, 3, 3]\r\n<\/pre><p>Looking at plots of the three polynomials, you can appreciate how the triple root at 3 is more sensitive than the blue double root at 1 or the green double root at 2, which are, in turn, more sensitive and any of the simple roots.<\/p><pre class=\"codeinput\">   plot_polys(p1,p2,p3)\r\n<\/pre><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"http:\/\/blogs.mathworks.com\/cleve\/files\/pejorative_blog1_01.png\" alt=\"\"> <h4>Floating point haze<a name=\"9d925bd1-6fb2-4c1d-99c6-31889785c23b\"><\/a><\/h4><p>Now a small perburbation.  Take a convex linear combination with an irrational weight and use <tt>vpa<\/tt>, the variable precision floating point arithmetic.  We are in a floating point haze with thickness $10^{-32}$ surrounding $\\mathcal{M}$.<\/p><pre class=\"codeinput\">   digits(32)\r\n   w = 2\/(1+sqrt(vpa(5)))\r\n   q = w*p1 + (1-w)*p2;\r\n   z = w*1 + (1-w)*2\r\n<\/pre><pre class=\"codeoutput\">w =\r\n0.61803398874989484820458683436564\r\nz =\r\n1.3819660112501051517954131656344\r\n<\/pre><p>Here are the coefficients.<\/p><pre class=\"codeinput\">   disp(coeffs(q)')\r\n<\/pre><pre class=\"codeoutput\">  74.626164607505678196952310944256\r\n -240.56541151876419549238077736064\r\n  309.12771741751324912622205886993\r\n -203.39009663000588850054313727552\r\n  72.583592135001261821544957987612\r\n -13.381966011250105151795413165634\r\n                                1.0\r\n<\/pre><p>Find the roots.<\/p><pre class=\"codeinput\">   z = solve(q)\r\n<\/pre><pre class=\"codeoutput\">z =\r\n                                                 1.0000000000000000000000000000003\r\n                                                 1.3819660112501051517954131656331\r\n                                                 2.0000000000000000000000000000026\r\n                                                 3.0000000000990590107064189257617\r\n 2.9999999999504704946467905371184 + 0.000000000085787619734391393745538952850968i\r\n 2.9999999999504704946467905371184 - 0.000000000085787619734391393745538952850968i\r\n<\/pre><p>The simple roots have survived to full accuracy.  But the triple root at x = 3 has been split by the perturbation into three complex numbers on a circle centered at x = 3 with radius roughly the cube root of the working precision.<\/p><pre class=\"codeinput\">   circle(double(z(4:6)-3))\r\n<\/pre><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"http:\/\/blogs.mathworks.com\/cleve\/files\/pejorative_blog1_02.png\" alt=\"\"> <p>Where did the cube root of precision come from?  We are trying to solve the equation<\/p><p>$$ {\\left(x-3\\right)}^3\\,\\sigma(x)=0 $$<\/p><p>where $\\sigma(x)$ is not zero near $x = 3$.  Using floating point arithmetic with precision $\\epsilon$, we instead solve something like<\/p><p>$$ {\\left(x-3\\right)}^3\\,\\sigma(x)=\\epsilon $$<\/p><p>The solution is<\/p><p>$$ x = 3 + \\left( \\frac{\\epsilon}{\\sigma(x)}\\right)^{1\/3}$$<\/p><p>with the cube root taking on three different complex values.<\/p><h4>Double precision<a name=\"9440745b-2292-4b25-954b-d4e38c4a3221\"><\/a><\/h4><p>Let's leave the Symbolic Toolbox briefly. Convert the coefficients in our convex combination to double precision and use the traditional MATLAB function <tt>roots<\/tt>.<\/p><pre class=\"codeinput\">  q = fliplr(double(coeffs(p3)))';\r\n  disp(<span class=\"string\">'q = '<\/span>)\r\n  fprintf(<span class=\"string\">'%25.15f\\n'<\/span>,q)\r\n  format <span class=\"string\">long<\/span>\r\n  z = roots(q)\r\n<\/pre><pre class=\"codeoutput\">q = \r\n        1.000000000000000\r\n      -13.666666666666666\r\n       76.000000000000000\r\n     -219.333333333333343\r\n      345.000000000000000\r\n     -279.000000000000000\r\n       90.000000000000000\r\nz =\r\n  3.000044739105571 + 0.000077484446947i\r\n  3.000044739105571 - 0.000077484446947i\r\n  2.999910521787618 + 0.000000000000000i\r\n  2.000000000002179 + 0.000000000000000i\r\n  1.666666666665676 + 0.000000000000000i\r\n  1.000000000000047 + 0.000000000000000i\r\n<\/pre><p>This is the same behavior we had with 32-digit <tt>vpa<\/tt>.  The simple roots at x = 1, 5\/3, and 2 are computed to nearly full double precision accuracy, while the triple roots have accuracy roughly <tt>eps^(1\/3)<\/tt>, which is about five digits.<\/p><pre class=\"codeinput\">   circle(z(1:3)-3)\r\n<\/pre><img decoding=\"async\" vspace=\"5\" hspace=\"5\" src=\"http:\/\/blogs.mathworks.com\/cleve\/files\/pejorative_blog1_03.png\" alt=\"\"> <h4>Venture off the manifold<a name=\"f0f65472-4680-4138-94f9-62376cac1592\"><\/a><\/h4><p>Subtract a small quantity from the constant term in the polynomial. This moves us out of $\\mathcal{M}$.<\/p><pre class=\"codeinput\">   p = p1 - sym(1.e-4)\r\n<\/pre><pre class=\"codeoutput\">p =\r\nx^6 - 13*x^5 + 68*x^4 - 182*x^3 + 261*x^2 - 189*x + 539999\/10000\r\n<\/pre><p>We can try to find the roots exactly, but the modified polynomial does not factor over the rationals.<\/p><pre class=\"codeinput\">   solve(p)\r\n<\/pre><pre class=\"codeoutput\">ans =\r\n root(z^6 - 13*z^5 + 68*z^4 - 182*z^3 + 261*z^2 - 189*z + 539999\/10000, z, 1)\r\n root(z^6 - 13*z^5 + 68*z^4 - 182*z^3 + 261*z^2 - 189*z + 539999\/10000, z, 2)\r\n root(z^6 - 13*z^5 + 68*z^4 - 182*z^3 + 261*z^2 - 189*z + 539999\/10000, z, 3)\r\n root(z^6 - 13*z^5 + 68*z^4 - 182*z^3 + 261*z^2 - 189*z + 539999\/10000, z, 4)\r\n root(z^6 - 13*z^5 + 68*z^4 - 182*z^3 + 261*z^2 - 189*z + 539999\/10000, z, 5)\r\n root(z^6 - 13*z^5 + 68*z^4 - 182*z^3 + 261*z^2 - 189*z + 539999\/10000, z, 6)\r\n<\/pre><p>So find the roots numerically with <tt>vpa<\/tt>. This time all of the roots, even the simple ones, are affected.<\/p><pre class=\"codeinput\">   digits(20)\r\n   z = vpa(solve(p))\r\n<\/pre><pre class=\"codeoutput\">z =\r\n                           0.99647996935769229447\r\n                            1.0035512830254182854\r\n                            1.9999000099960012995\r\n 2.9856883694814744941 - 0.025815296081878984073i\r\n 2.9856883694814744941 + 0.025815296081878984073i\r\n                            3.0286919986579391324\r\n<\/pre><p>We constructed <tt>p1<\/tt> to have a double root at x = 1, a simple root at x = 2, and a triple root at x = 3. Their multiplicty determines how much the perburbation affects them.<\/p><pre class=\"codeinput\">   e = abs(double(z - z1'))\r\n<\/pre><pre class=\"codeoutput\">e =\r\n   0.003520030642308\r\n   0.003551283025418\r\n   0.000099990003999\r\n   0.029516982906352\r\n   0.029516982906352\r\n   0.028691998657939\r\n<\/pre><h4>To be continued<a name=\"ebf7ab6c-1252-4f6b-be6b-af06a02056bd\"><\/a><\/h4><p>I am making this a two-parter.  The <a href=\"https:\/\/blogs.mathworks.com\/cleve\/2020\/01\/30\/pejorative-manifolds-of-polynomials-and-matrices-part-2\/\">next post<\/a> is about matrix eigenvalues.<\/p><pre class=\"codeinput\">   close\r\n<\/pre><h4>References<a name=\"8be0f7a3-d82f-433b-9b64-dd04cebbb8c4\"><\/a><\/h4><p>Zhonggang Zeng, The Tale of Polynomials, PowerPoint presentation. <a title=\"http:\/\/homepages.neiu.edu\/~zzeng\/neiu.ppt\">&lt;http:\/\/homepages.neiu.edu\/~zzeng\/neiu.ppt<\/a>&gt; , 2003.<\/p><p>W. Kahan, Conserving confluence curbs ill-condition. Technical Report 6, Computer  Science, University of California, Berkeley, 1972.<\/p><script language=\"JavaScript\"> <!-- \r\n    function grabCode_dc9341443fc7481b88d625f5c6d46c06() {\r\n        \/\/ Remember the title so we can use it in the new page\r\n        title = document.title;\r\n\r\n        \/\/ Break up these strings so that their presence\r\n        \/\/ in the Javascript doesn't mess up the search for\r\n        \/\/ the MATLAB code.\r\n        t1='dc9341443fc7481b88d625f5c6d46c06 ' + '##### ' + 'SOURCE BEGIN' + ' #####';\r\n        t2='##### ' + 'SOURCE END' + ' #####' + ' dc9341443fc7481b88d625f5c6d46c06';\r\n    \r\n        b=document.getElementsByTagName('body')[0];\r\n        i1=b.innerHTML.indexOf(t1)+t1.length;\r\n        i2=b.innerHTML.indexOf(t2);\r\n \r\n        code_string = b.innerHTML.substring(i1, i2);\r\n        code_string = code_string.replace(\/REPLACE_WITH_DASH_DASH\/g,'--');\r\n\r\n        \/\/ Use \/x3C\/g instead of the less-than character to avoid errors \r\n        \/\/ in the XML parser.\r\n        \/\/ Use '\\x26#60;' instead of '<' so that the XML parser\r\n        \/\/ doesn't go ahead and substitute the less-than character. \r\n        code_string = code_string.replace(\/\\x3C\/g, '\\x26#60;');\r\n\r\n        copyright = 'Copyright 2020 The MathWorks, Inc.';\r\n\r\n        w = window.open();\r\n        d = w.document;\r\n        d.write('<pre>\\n');\r\n        d.write(code_string);\r\n\r\n        \/\/ Add copyright line at the bottom if specified.\r\n        if (copyright.length > 0) {\r\n            d.writeln('');\r\n            d.writeln('%%');\r\n            if (copyright.length > 0) {\r\n                d.writeln('% _' + copyright + '_');\r\n            }\r\n        }\r\n\r\n        d.write('<\/pre>\\n');\r\n\r\n        d.title = title + ' (MATLAB code)';\r\n        d.close();\r\n    }   \r\n     --> <\/script><p style=\"text-align: right; font-size: xx-small; font-weight:lighter;   font-style: italic; color: gray\"><br><a href=\"javascript:grabCode_dc9341443fc7481b88d625f5c6d46c06()\"><span style=\"font-size: x-small;        font-style: italic;\">Get \r\n      the MATLAB code <noscript>(requires JavaScript)<\/noscript><\/span><\/a><br><br>\r\n      Published with MATLAB&reg; R2019b<br><\/p><p class=\"footer\"><br>\r\n      Published with MATLAB&reg; R2019b<br><\/p><\/div><!--\r\ndc9341443fc7481b88d625f5c6d46c06 ##### SOURCE BEGIN #####\r\n%% Pejorative Manifolds of Polynomials and Matrices, part 1\r\n% In an unpublished 1972 technical report \"Conserving confluence curbs\r\n% ill-condition,\"  Velvel Kahan coined the descriptive term \r\n% _pejorative manifold_. In case you  don't use it in everyday\r\n% conversation, _pejorative_  means \"expressing contempt or disapproval.\"\r\n% \r\n% Velvel's report concerns polynomials with multiple roots, which are\r\n% usually regarded with contempt because they are so badly conditioned.\r\n% But Velvel's key observation is that although multiple roots are\r\n% sensitive to arbitrary perturbation, they are insensitive to perburbations \r\n% that preserve multiplicity.  The same observation can be applied to\r\n% matrix inverses and eigenvalues.\r\n\r\n%% The manifold\r\n% In this example, the pejorative manifold $\\mathcal{M}$ is the set of all\r\n% sixth degree polynomials which have a zero of multiplicity three\r\n% at x = 3.  These are severe restrictions, of course, and $\\mathcal{M}$\r\n% is a tiny subset of the set of all polynomials.  But if we stay within\r\n% $\\mathcal{M}$, life is not nearly so harsh.\r\n\r\n%% Two polynomials\r\n% First a pair of polynomials with multiple roots.  All of our polynomials\r\n% have a root of multplicity three at x = 3 as well as other multiple roots.\r\n% This one a double root at x = 1 and a simple root at x = 2.\r\n\r\n x = sym('x');\r\n\r\n p1 = (x-3)^3*(x-2)*(x-1)^2;\r\n\r\n%%\r\n% $$ p1 = {\\left(x-1\\right)}^2\\,\\left(x-2\\right)\\,{\\left(x-3\\right)}^3 $$\r\n \r\n%% \r\n% The next one has a double root at x = 2 and a simple root at x = 1.\r\n    \r\n p2 = (x-3)^3*(x-2)^2*(x-1);\r\n \r\n%%\r\n% $$ p2 = \\left(x-1\\right)\\,{\\left(x-2\\right)}^2\\,{\\left(x-3\\right)}^3 $$\r\n \r\n%% \r\n% To summarize, we have two polynomials, |p1| and |p2| .  Both have degree \r\n% six and have a triple root at x = 3.  In addition, |pk| has a double\r\n% root at x = |k| .\r\n\r\n%% Confirm\r\n% Let's see the coefficients.\r\n\r\n  p1 = expand(p1);\r\n\r\n%%\r\n% $$ p1 = x^6-13\\,x^5+68\\,x^4-182\\,x^3+261\\,x^2-189\\,x+54 $$\r\n\r\n  p2 = expand(p2);\r\n \r\n%%\r\n% $$ p2 = x^6-14\\,x^5+80\\,x^4-238\\,x^3+387\\,x^2-324\\,x+108 $$\r\n\r\n%% \r\n% We can solve them exactly and verify that they have the desired roots.\r\n\r\n  z1 = solve(p1)' \r\n  z2 = solve(p2)'\r\n    \r\n%% Convex combination\r\n% Now let's take a convex linear combination.  I am using 1\/3 and 2\/3,\r\n% but I could use any other weights as long as their sum is 1.  Any such\r\n% convex linear combination is still in $\\mathcal{M}$.\r\n\r\n   p3 = 1\/3*p1 + 2\/3*p2;\r\n   \r\n%%\r\n% $$ p3 = x^6-\\frac{41\\,x^5}{3}+76\\,x^4-\\frac{658\\,x^3}{3}+345\\,x^2-279\\,x+90 $$\r\n\r\n%% \r\n% This still has the triple root at x = 3. The roots at x = 1 and x = 2 are\r\n% now simple and the root at x = 5\/3 is the convex linear combination of\r\n% 1 and 2 with the same coefficents, 5\/3 = 1\/3*1 + 2\/3*2.\r\n\r\n   z = solve(p3)'\r\n   \r\n%%\r\n% Looking at plots of the three polynomials, you can appreciate\r\n% how the triple root at 3 is more sensitive than the blue double\r\n% root at 1 or the green double root at 2, which are, in turn, more\r\n% sensitive and any of the simple roots.\r\n\r\n   plot_polys(p1,p2,p3)\r\n   \r\n%% Floating point haze\r\n% Now a small perburbation.  Take a convex linear combination\r\n% with an irrational weight and use |vpa|, the variable precision floating \r\n% point arithmetic.  We are in a floating point haze with thickness\r\n% $10^{-32}$ surrounding $\\mathcal{M}$.\r\n\r\n   digits(32)\r\n   w = 2\/(1+sqrt(vpa(5)))\r\n   q = w*p1 + (1-w)*p2;\r\n   z = w*1 + (1-w)*2\r\n\r\n%%\r\n% Here are the coefficients.\r\n\r\n   disp(coeffs(q)')\r\n\r\n%% \r\n% Find the roots.\r\n\r\n   z = solve(q)\r\n\r\n%% \r\n% The simple roots have survived to full accuracy.  But the triple root at\r\n% x = 3 has been split by the perturbation into three complex numbers on\r\n% a circle centered at x = 3 with radius roughly the cube root of the\r\n% working precision.\r\n\r\n   circle(double(z(4:6)-3))\r\n\r\n%%\r\n% Where did the cube root of precision come from?  We are trying to\r\n% solve the equation\r\n%\r\n% $$ {\\left(x-3\\right)}^3\\,\\sigma(x)=0 $$\r\n%\r\n% where $\\sigma(x)$ is not zero near $x = 3$.  Using floating point arithmetic\r\n% with precision $\\epsilon$, we instead solve something like\r\n%\r\n% $$ {\\left(x-3\\right)}^3\\,\\sigma(x)=\\epsilon $$\r\n%\r\n% The solution is\r\n%\r\n% $$ x = 3 + \\left( \\frac{\\epsilon}{\\sigma(x)}\\right)^{1\/3}$$\r\n%\r\n% with the cube root taking on three different complex values.\r\n\r\n%% Double precision\r\n% Let's leave the Symbolic Toolbox briefly.\r\n% Convert the coefficients in our convex combination to double precision\r\n% and use the traditional MATLAB function |roots|.\r\n\r\n  q = fliplr(double(coeffs(p3)))';\r\n  disp('q = ')\r\n  fprintf('%25.15f\\n',q)  \r\n  format long\r\n  z = roots(q)\r\n  \r\n%%\r\n% This is the same behavior we had with 32-digit |vpa|.  The simple\r\n% roots at x = 1, 5\/3, and 2 are computed to nearly full double\r\n% precision accuracy, while the triple roots have accuracy roughly\r\n% |eps^(1\/3)|, which is about five digits.\r\n\r\n   circle(z(1:3)-3)\r\n\r\n%% Venture off the manifold\r\n% Subtract a small quantity from the constant term in the polynomial.\r\n% This moves us out of $\\mathcal{M}$.\r\n\r\n   p = p1 - sym(1.e-4)\r\n%%\r\n% We can try to find the roots exactly, but the modified polynomial\r\n% does not factor over the rationals.\r\n\r\n   solve(p)\r\n  \r\n%%\r\n% So find the roots numerically with |vpa|.\r\n% This time all of the roots, even the simple ones, are affected.\r\n\r\n   digits(20) \r\n   z = vpa(solve(p))\r\n   \r\n%%\r\n% We constructed |p1| to have a double root at x = 1, a simple root\r\n% at x = 2, and a triple root at x = 3.\r\n% Their multiplicty determines how much the perburbation affects them.\r\n\r\n   e = abs(double(z - z1'))\r\n  \r\n   \r\n%% To be continued\r\n% I am making this a two-parter.  The\r\n% <https:\/\/blogs.mathworks.com\/cleve\/2020\/01\/30\/pejorative-manifolds-of-polynomials-and-matrices-part-2\/ next post>\r\n% is about matrix eigenvalues.\r\n\r\n%%\r\n   close\r\n   \r\n%% References\r\n% Zhonggang Zeng, The Tale of Polynomials, PowerPoint presentation.\r\n% <http:\/\/homepages.neiu.edu\/~zzeng\/neiu.ppt \r\n% http:\/\/homepages.neiu.edu\/~zzeng\/neiu.ppt> , 2003.\r\n% \r\n% W. Kahan, Conserving confluence curbs ill-condition. Technical Report 6,\r\n% Computer  Science, University of California, Berkeley, 1972.\r\n\r\n##### SOURCE END ##### dc9341443fc7481b88d625f5c6d46c06\r\n-->","protected":false},"excerpt":{"rendered":"<div class=\"overview-image\"><img src=\"https:\/\/blogs.mathworks.com\/cleve\/files\/pejorative_blog1_01.png\" class=\"img-responsive attachment-post-thumbnail size-post-thumbnail wp-post-image\" alt=\"\" decoding=\"async\" loading=\"lazy\" \/><\/div><!--introduction--><p>In an unpublished 1972 technical report \"Conserving confluence curbs ill-condition,\"  Velvel Kahan coined the descriptive term <i>pejorative manifold<\/i>. In case you  don't use it in everyday conversation, <i>pejorative<\/i>  means \"expressing contempt or disapproval.\"... <a class=\"read-more\" href=\"https:\/\/blogs.mathworks.com\/cleve\/2020\/01\/18\/pejorative-manifolds-of-polynomials-and-matrices-part-1\/\">read more >><\/a><\/p>","protected":false},"author":78,"featured_media":5687,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[12,16,7,20],"tags":[],"_links":{"self":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts\/5681"}],"collection":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/users\/78"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/comments?post=5681"}],"version-history":[{"count":6,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts\/5681\/revisions"}],"predecessor-version":[{"id":8750,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/posts\/5681\/revisions\/8750"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/media\/5687"}],"wp:attachment":[{"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/media?parent=5681"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/categories?post=5681"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.mathworks.com\/cleve\/wp-json\/wp\/v2\/tags?post=5681"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}