JSXGraph logo
JSXGraph
JSXGraph share

Share

Complex roots of polynomial with real coefficients
QR code
<iframe 
    src="http://jsxgraph.org/share/iframe/complex-root-of-polynomial-with-real-coefficients" 
    style="border: 1px solid black; overflow: hidden; width: 550px; aspect-ratio: 55 / 65;" 
    name="JSXGraph example: Complex roots of polynomial with real coefficients" 
    allowfullscreen
></iframe>
This code has to
<div id="board-0-wrapper" class="jxgbox-wrapper " style="width: 100%; ">
   <div id="board-0" class="jxgbox" style="aspect-ratio: 1 / 1; width: 100%;" data-ar="1 / 1"></div>
</div>

<script type = "text/javascript"> 
    /*
    This example is licensed under a 
    Creative Commons Attribution ShareAlike 4.0 International License.
    https://creativecommons.org/licenses/by-sa/4.0/
    
    Please note you have to mention 
    The Center of Mobile Learning with Digital Technology
    in the credits.
    */
    
    const BOARDID = 'board-0';

    const board = JXG.JSXGraph.initBoard(BOARDID, {
        boundingbox: [-9, 9, 9, -9],
        axis: true,
        defaultAxes: {
            x: {
                name: 'real part',
                withLabel: true,
                label: {
                    position: 'rt',
                    offset: [-5, 15],
                    anchorX: 'right'
                }
            },
            y: {
                withLabel: true,
                name: 'imaginary part',
                label: {
                    position: 'rt',
                    offset: [5, -5],
                    anchorY: 'top'
                }
            }
        },
    });
    
    // Coefficients [a_0, ..., a_n] of a polynomial, 
    // starting with a_0, a_1, ...
    var coefficients = [-1, 3, -9, 1, 0, 0, -8, 9, -9, 1];
    var roots = JXG.Math.Numerics.polzeros(coefficients);
    
    for (let i = 0; i < roots.length; i++) {
        board.create('point', [roots[i].real, roots[i].imaginary], {
            withLabel: false,
            fixed: true
        });
    }
    
    board.create('text', [-8, 3, JXG.Math.Numerics.generatePolynomialTerm(coefficients, coefficients.length - 1, 'x', 0)], {fixed: true});
 </script> 
/*
This example is licensed under a 
Creative Commons Attribution ShareAlike 4.0 International License.
https://creativecommons.org/licenses/by-sa/4.0/

Please note you have to mention 
The Center of Mobile Learning with Digital Technology
in the credits.
*/

const BOARDID = 'your_div_id'; // Insert your id here!

const board = JXG.JSXGraph.initBoard(BOARDID, {
    boundingbox: [-9, 9, 9, -9],
    axis: true,
    defaultAxes: {
        x: {
            name: 'real part',
            withLabel: true,
            label: {
                position: 'rt',
                offset: [-5, 15],
                anchorX: 'right'
            }
        },
        y: {
            withLabel: true,
            name: 'imaginary part',
            label: {
                position: 'rt',
                offset: [5, -5],
                anchorY: 'top'
            }
        }
    },
});

// Coefficients [a_0, ..., a_n] of a polynomial, 
// starting with a_0, a_1, ...
var coefficients = [-1, 3, -9, 1, 0, 0, -8, 9, -9, 1];
var roots = JXG.Math.Numerics.polzeros(coefficients);

for (let i = 0; i < roots.length; i++) {
    board.create('point', [roots[i].real, roots[i].imaginary], {
        withLabel: false,
        fixed: true
    });
}

board.create('text', [-8, 3, JXG.Math.Numerics.generatePolynomialTerm(coefficients, coefficients.length - 1, 'x', 0)], {fixed: true});
<jsxgraph width="100%" aspect-ratio="1 / 1" title="Complex roots of polynomial with real coefficients" description="This construction was copied from JSXGraph examples database: BTW HERE SHOULD BE A GENERATED LINKuseGlobalJS="false">
   /*
   This example is licensed under a 
   Creative Commons Attribution ShareAlike 4.0 International License.
   https://creativecommons.org/licenses/by-sa/4.0/
   
   Please note you have to mention 
   The Center of Mobile Learning with Digital Technology
   in the credits.
   */
   
   const board = JXG.JSXGraph.initBoard(BOARDID, {
       boundingbox: [-9, 9, 9, -9],
       axis: true,
       defaultAxes: {
           x: {
               name: 'real part',
               withLabel: true,
               label: {
                   position: 'rt',
                   offset: [-5, 15],
                   anchorX: 'right'
               }
           },
           y: {
               withLabel: true,
               name: 'imaginary part',
               label: {
                   position: 'rt',
                   offset: [5, -5],
                   anchorY: 'top'
               }
           }
       },
   });
   
   // Coefficients [a_0, ..., a_n] of a polynomial, 
   // starting with a_0, a_1, ...
   var coefficients = [-1, 3, -9, 1, 0, 0, -8, 9, -9, 1];
   var roots = JXG.Math.Numerics.polzeros(coefficients);
   
   for (let i = 0; i < roots.length; i++) {
       board.create('point', [roots[i].real, roots[i].imaginary], {
           withLabel: false,
           fixed: true
       });
   }
   
   board.create('text', [-8, 3, JXG.Math.Numerics.generatePolynomialTerm(coefficients, coefficients.length - 1, 'x', 0)], {fixed: true});
</jsxgraph>

Complex roots of polynomial with real coefficients

Compute *all* complex roots of a polynomial with real coefficients and display them in the complex plane. JSXGraph has its own variant of the Aberth, Ehrlich, Weierstraß algorithm implemented.
// Define the id of your board in BOARDID

const board = JXG.JSXGraph.initBoard(BOARDID, {
    boundingbox: [-9, 9, 9, -9],
    axis: true,
    defaultAxes: {
        x: {
            name: 'real part',
            withLabel: true,
            label: {
                position: 'rt',
                offset: [-5, 15],
                anchorX: 'right'
            }
        },
        y: {
            withLabel: true,
            name: 'imaginary part',
            label: {
                position: 'rt',
                offset: [5, -5],
                anchorY: 'top'
            }
        }
    },
});

// Coefficients [a_0, ..., a_n] of a polynomial, 
// starting with a_0, a_1, ...
var coefficients = [-1, 3, -9, 1, 0, 0, -8, 9, -9, 1];
var roots = JXG.Math.Numerics.polzeros(coefficients);

for (let i = 0; i < roots.length; i++) {
    board.create('point', [roots[i].real, roots[i].imaginary], {
        withLabel: false,
        fixed: true
    });
}

board.create('text', [-8, 3, JXG.Math.Numerics.generatePolynomialTerm(coefficients, coefficients.length - 1, 'x', 0)], {fixed: true});

license

This example is licensed under a Creative Commons Attribution ShareAlike 4.0 International License.
Please note you have to mention The Center of Mobile Learning with Digital Technology in the credits.