DEP, для алгебраических уравнений до четвертой степени включительно функция
solve должна возвращать точные корни. В некоторых случаях эта функция может найти точные корни и для уравнений более высоких степеней. (Если коэффициенты — числа с плавающей точкой, то возвращается результат с плавающей точкой.)
Казалось бы, имея возможность получить корни с заданной точностью, можно найти приближенные значения невязки с заданной точностью, как например в Мaple (использована версия 7.0, но версия тут не важна).
Код:
> P:= z^5 -1: Z:= evalf[32](solve(P));
Z =
1., .30901699437494742410229341718282+.95105651629515357211643933337938*I,
-.80901699437494742410229341718282+.58778525229247312916870595463905*I,
-.80901699437494742410229341718282-.58778525229247312916870595463905*I,
.30901699437494742410229341718282-.95105651629515357211643933337938*I
> seq(eval[32](P, z=Z[k]), k=1..5);
0., -.1e-31-.77781757615511713920653428365785e-32*I,
-.6e-31+.94876071991504312973751185717278e-31*I,
-.6e-31-.94876071991504312973751185717278e-31*I,
-.1e-31+.77781757615511713920653428365785e-32*I
Для случая коэффициентов с плавающей точкой
Код:
> Digits:= 32:
> P:= z^5 -1.0: Z:= solve(P);
Z = 1., -.80901699437494742410229341718282-.58778525229247312916870595463907*I,
-.80901699437494742410229341718282+.58778525229247312916870595463907*I,
.30901699437494742410229341718282-.95105651629515357211643933337938*I,
.30901699437494742410229341718282+.95105651629515357211643933337938*I
> seq(eval[33](P, z=Z[k]), k=1..5);
0., 0.-.13972252156122383769449788012377e-31*I,
0.+.13972252156122383769449788012377e-31*I,
-.1e-31+.77781757615511713920653428365785e-32*I,
-.1e-31-.77781757615511713920653428365785e-32*I
Однако в Mathcad 13 неожиданно для меня невязка при символьном вычислении оказывается большой. См. прикрепление.