Integer type:  int32  int64  nag_int  show int32  show int32  show int64  show int64  show nag_int  show nag_int

Chapter Contents
Chapter Introduction
NAG Toolbox

# NAG Toolbox: nag_zeros_quartic_complex (c02an)

## Purpose

nag_zeros_quartic_complex (c02an) determines the roots of a quartic equation with complex coefficients.

## Syntax

[zeror, zeroi, errest, ifail] = c02an(e, a, b, c, d)
[zeror, zeroi, errest, ifail] = nag_zeros_quartic_complex(e, a, b, c, d)

## Description

nag_zeros_quartic_complex (c02an) attempts to find the roots of the quartic equation
 $ez4+az3+bz2+cz+d=0,$
where $e$, $a$, $b$, $c$ and $d$ are complex coefficients with $e\ne 0$. The roots are located by finding the eigenvalues of the associated $4$ by $4$ (upper Hessenberg) companion matrix $H$ given by
 $H= 0 0 0 -d/e 1 0 0 -c/e 0 1 0 -b/e 0 0 1 -a/e .$
The eigenvalues are obtained by a call to nag_lapack_zhseqr (f08ps). Further details can be found in Further Comments.
To obtain the roots of a cubic equation, nag_zeros_cubic_complex (c02am) can be used.

## References

Golub G H and Van Loan C F (1996) Matrix Computations (3rd Edition) Johns Hopkins University Press, Baltimore

## Parameters

### Compulsory Input Parameters

1:     $\mathrm{e}$ – complex scalar
$e$, the coefficient of ${z}^{4}$.
Constraint: ${\mathbf{e}}\ne \left(0.0,0.0\right)$.
2:     $\mathrm{a}$ – complex scalar
$a$, the coefficient of ${z}^{3}$.
3:     $\mathrm{b}$ – complex scalar
$b$, the coefficient of ${z}^{2}$.
4:     $\mathrm{c}$ – complex scalar
$c$, the coefficient of $z$.
5:     $\mathrm{d}$ – complex scalar
$d$, the constant coefficient.

None.

### Output Parameters

1:     $\mathrm{zeror}\left(4\right)$ – double array
2:     $\mathrm{zeroi}\left(4\right)$ – double array
${\mathbf{zeror}}\left(i\right)$ and ${\mathbf{zeroi}}\left(i\right)$ contain the real and imaginary parts, respectively, of the $i$th root.
3:     $\mathrm{errest}\left(4\right)$ – double array
${\mathbf{errest}}\left(i\right)$ contains an approximate error estimate for the $i$th root.
4:     $\mathrm{ifail}$int64int32nag_int scalar
${\mathbf{ifail}}={\mathbf{0}}$ unless the function detects an error (see Error Indicators and Warnings).

## Error Indicators and Warnings

Errors or warnings detected by the function:
${\mathbf{ifail}}=1$
 On entry, ${\mathbf{e}}=\left(0.0,0.0\right)$.
${\mathbf{ifail}}=2$
The companion matrix $H$ cannot be formed without overflow.
${\mathbf{ifail}}=3$
The iterative procedure used to determine the eigenvalues has failed to converge.
${\mathbf{ifail}}=-99$
${\mathbf{ifail}}=-399$
Your licence key may have expired or may not have been installed correctly.
${\mathbf{ifail}}=-999$
Dynamic memory allocation failed.

## Accuracy

If ${\mathbf{ifail}}={\mathbf{0}}$ on exit, then the $i$th computed root should have approximately $\left|{\mathrm{log}}_{10}\left({\mathbf{errest}}\left(i\right)\right)\right|$ correct significant digits.

The method used by the function consists of the following steps, which are performed by functions from LAPACK in Chapter F08.
 (a) Form matrix $H$. (b) Apply a diagonal similarity transformation to $H$ (to give ${H}^{\prime }$). (c) Calculate the eigenvalues and Schur factorization of ${H}^{\prime }$. (d) Calculate the left and right eigenvectors of ${H}^{\prime }$. (e) Estimate reciprocal condition numbers for all the eigenvalues of ${H}^{\prime }$. (f) Calculate approximate error estimates for all the eigenvalues of ${H}^{\prime }$ (using the $1$-norm).

## Example

This example finds the roots of the quartic equation
 $z4+16iz2-8-8iz-65=0.$
```function c02an_example

fprintf('c02an example results\n\n');

e =  complex(1);
a =   -10 + 2i;
b =    48 - 10i;
c =  -100 + 28i;
d =  complex(96);
[zr, zi, errest, ifail] = c02an(e, a, b, c, d);

fprintf('  Roots of quartic    error estimates\n');
for j = 1:4
if (zi(j)<0)
fprintf('%8.4f - %7.4fi     %8.2e\n',zr(j),abs(zi(j)),errest(j));
else
fprintf('%8.4f - %7.4fi     %8.2e\n',zr(j),abs(zi(j)),errest(j));
end
end

```
```c02an example results

Roots of quartic    error estimates
3.0000 -  3.0000i     1.55e-14
1.0000 -  1.0000i     1.18e-14
2.0000 -  2.0000i     2.14e-14
4.0000 -  4.0000i     2.02e-14
```