2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Решение уравнения 4-й степени в MathCad.
Сообщение12.04.2009, 22:03 
Аватара пользователя


10/03/08
82
Привет. Нужно решить уравнение вида:$$5.12*10^{-13}*x^4+3.84*10^{-9}*x^3+0.00653*x^2+0.948*x+1581580=0$$
На одном сайте нашел нашел метод решения:
$$
\mathbf{v} :=
\left( \begin{array}{ccc}
1581580 \\
0.948 \\
0.00653 \\
3.84*10^{-9} \\
5.12*10^{-13} \\
\end{array} \right)
$$
$$
\mathbf{polyroots(v)} :=
\left( \begin{array}{ccc}
-3.75*10^3-1.118i*10^5 \\
-3.75*10^3+1.118i*10^5 \\
0.034+1.572i*10^4 \\
0.034-1.572i*10^4 \\
\end{array} \right)
$$
При подстановки любого из корней, уравнение не обращается в ноль, почему?

 Профиль  
                  
 
 
Сообщение13.04.2009, 12:44 
Заслуженный участник
Аватара пользователя


23/07/05
17987
Москва
Вероятно, потому, что корни приближённые.

 Профиль  
                  
 
 
Сообщение13.04.2009, 15:34 
Аватара пользователя


10/03/08
82
Что то уж совсем далеко от нуля. Например, при подставлении корня $$0.034-1.572i*10^4$$ в уравнение получается: $$-836.655+7.983i$$ :(

 Профиль  
                  
 
 
Сообщение13.04.2009, 19:14 
Заслуженный участник
Аватара пользователя


23/07/05
17987
Москва
С MathCadом не работаю. Mathematica 5.1 даёт следующие результаты.

а) При задании коэффициентов как точных

Код:
RR=Solve[512*10^(-15)x^4+384*10^(-11)x^3+653*10^(-5)x^2+948*10^(-3)x+1581580==0, x]


уравнение решается точно (результат не привожу, так как он совершенно необозримый). Вычисление этого выражения со стандартной точностью

Код:
NRR=N[RR]


даёт

$\{\{x\to-3750.0336803086025+111771.45830237673i\},$
$\{x\to-3750.033680296527-111771.45830237592i\},$
$\{x\to 0.033680259582655005-15715.759974137427i\},$
$\{x\to 0.03368034554737894+15715.759974136601i\}\}$

(это внутреннее представление; без специальной команды Mathematica печатает только 6 значащих цифр; сравнивая сопряжённые корни попарно, видим, что младшие цифры неточные).
Подстановка этих чисел в левую часть уравнения даёт

$\{-1.1920928955078125\times 10^{-7}+8.493661880493164\times 10^{-6}i,$
$-1.043081283569336\times 10^{-7}+8.491799235343933\times 10^{-6}i,$
$-1.1037263902835548\times 10^{-7}+8.481167713181303\times 10^{-6}i,$
$-1.1031079338863492\times 10^{-7}+8.481103069668539\times 10^{-6}i\}$.

Вычисление с точностью $20$ значащих цифр

Код:
RNN=N[RR,20]


даёт

$\{\{x\to-3750.033680302559800-111771.458302376409806i\},$
$\{x\to-3750.033680302559800+111771.458302376409806i\},$
$\{x\to 0.033680302559800-15715.759974136454559i},$
$\{x\to 0.033680302559800+15715.759974136454559i\}\}$.

Подстановка этих чисел в левую часть уравнения даёт

$\{0.\times 10^{-12}+0.\times 10^{-12}i,0.\times 10^{-12}+0.\times 10^{-12}i,$
$0.\times 10^{-14}+0.\times 10^{-14}i,0.\times 10^{-14}+0.\times 10^{-14}i\}$.

б) при задании коэффициентов как приближённых

Код:
RS=Solve[5.12*10^(-13)x^4+3.84*10^(-9)x^3+0.00653x^2+948*10^(-3)x+1581580==0,x]


получается

$\{\{x\to-3750.0336803025593-111771.4583023764i\},$
$\{x\to-3750.0336803025593+111771.4583023764i\},$
$\{x\to 0.033680302559808334-15715.759974136456i\},$
$\{x\to 0.033680302559808334+15715.759974136456i\}\}$

(это опять же внутреннее представление, печатается только 6 значащих цифр).
При подстановке этого в левую часть уравнения получим

$\{0.+1.862645149230957\times 10^{-9}i,0.-1.862645149230957\times 10^{-9}i,$
$-1.0186340659856796\times 10^{-10}-1.759703494030873\times 10^{-14}i,$
$-1.0186340659856796\times 10^{-10}+1.759703494030873\times 10^{-14}i\}$.

При подстановке результата

$\{\{x\to-3750.03-111771.i\},\{x\to-3750.03+111771.i\},$
$\{x\to 0.0336803-15715.8i\},{x\to 0.0336803+15715.8i\}\}$,

округлённого до 6 значащих цифр, получается

$\{-641.254+49.1247i,-641.254-49.1247i,$
$-7.89705+0.075925i,-7.89705-0.075925i\}$.

Судя по последнему результату, проблема действительно в недостаточной точности вычислений.

 Профиль  
                  
 
 
Сообщение13.04.2009, 19:48 
Заслуженный участник


15/05/05
3445
USA
Someone писал(а):
Судя по последнему результату, проблема действительно в недостаточной точности вычислений.

Что не удивительно для уравнения с $a_4 / a_0$ порядка $10^{-19}$.

Если в исходном уравнении
$$5.12*10^{-13}*x^4+3.84*10^{-9}*x^3+0.00653*x^2+0.948*x+1581580=0$$

сделать подстановку $$x = 10^5 y$$, а затем поделить уравнение на $$10^7$$, то получим

$$5.12*y^4+0.384*y^3+6.53*y^2+0.00948*y+0.1581580=0$$

Думаю, никаких фокусов при его решении не будет.

Преобразования такого типа часто применяются при решении задач линейной алгебры - СЛУ, СЗ и СВ, МНК.

 Профиль  
                  
 
 
Сообщение13.04.2009, 22:02 
Заслуженный участник


27/06/08
4063
Волгоград
А вот что дает Maple
Код:
a:=[solve(5.12*10^(-13)*x^4+3.84*10^(-9)*x^3+0.00653*x^2+0.948*x+1581580=0)];
  a := [0.03368030256 + 15715.75997 I, -3750.033680 + 111771.4583 I,

        -3750.033680 - 111771.4583 I, 0.03368030256 - 15715.75997 I]

> seq(subs(x=a[i],5.12*10^(-13)*x^4+3.84*10^(-9)*x^3+0.00653*x^2+0.948*x+1581580),i=1..4);

  0.00092892683 + 0.00001 I, -0.011929 + 0.0045 I,

        -0.011929 - 0.0045 I, 0.00092892683 - 0.00001 I

Это без всяких дополнительных мер по повышению точности.
А вот результат после принудительного повышения точности округленных вычислений:
Код:
Digits:=50:a:=[solve(5.12*10^(-13)*x^4+3.84*10^(-9)*x^3+0.00653*x^2+0.948*x+1581580=0)];

  a := [0.033680302559800158155552173538821941937376473405693 +

        15715.759974136454559338537769258380443969682282545 I,

        -3750.0336803025598001581555521735388219419373764734 +

        111771.45830237640980647702073427577523285897689565 I,

        -3750.0336803025598001581555521735388219419373764734 -

        111771.45830237640980647702073427577523285897689565 I,

        0.033680302559800158155552173538821941937376473405693 -

        15715.759974136454559338537769258380443969682282545 I]

> seq(subs(x=a[i],5.12*10^(-13)*x^4+3.84*10^(-9)*x^3+0.00653*x^2+0.948*x+1581580),i=1..4);

               -44         -44              -42          -42
  -0.3211403 10    - 0.1 10    I, -0.8968 10    - 0.12 10    I,

                  -42          -42                 -44         -44
        -0.8968 10    + 0.12 10    I, -0.3211403 10    + 0.1 10    I

Это я к вопросу о том, какой мат. пакет лучше ;)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group