2014 dxdy logo

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

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




 
 метод возмущений с теоремой Виета
Сообщение08.08.2013, 18:09 
Практически все корни кубич. (алгебраич.) урав. находят методом возмущений. А можна один корень-мет.
возмущений, а остальные по теореме Виета т.е. состав. сист. уравнений (переопределенную),по моему так
точнее?

 
 
 
 Re: метод возмущений с теоремой Виета
Сообщение13.08.2013, 09:09 
Аватара пользователя
А как вы получаете первый корень - приближенно или в параметрическом виде? В первом случае возможна неустойчивость решений, т.е. большая погрешность.

 
 
 
 Re: метод возмущений с теоремой Виета
Сообщение20.08.2013, 13:22 
Первый корень-методом возмущений, а остальные по теор. Виета, которая точная и в итоге получим три корня
более точно,чем если находить все их мет. возмущений. Но как быть(если предыдущее верно) с переопределеностю
системы уравнений?

 
 
 
 Re: метод возмущений с теоремой Виета
Сообщение20.08.2013, 14:33 
Насколько я понимаю, можно. У кубического многочлена с действительными коэффициентами всегда будет хотя бы один действительный корень, найдем любой из них (нам не важно, какой именно) любым нравящимся численным методом, поделим многочлен на многочлен в программе (в столбик), получим квадратное уравнение, решим его через формулы с дискриминатном.

 
 
 
 Re: метод возмущений с теоремой Виета
Сообщение20.08.2013, 17:44 
Аватара пользователя
Но ведь он не поделится! Пример. Попробуем решить уравнение $x(x-10)^2=0,01$. Один из корней приближенно равен 0. Более точное значение - 0,0001. После деления на $x$ получим $(x-10)^2-\frac{0,01}{x}=0$. Что тут отбросить? Последнее слагаемое? После отбрасывания получим кратный корень, равный 10. Но точные значения отличаются от него примерно на 0,032, т.е. Погрешность гораздо выше. Ясно, что с другими коэффициентами точность может стать еще ниже.

 
 
 
 Re: метод возмущений с теоремой Виета
Сообщение20.08.2013, 21:39 
egor20 в сообщении #753257 писал(а):
по моему так точнее?
Попробовал - не точнее, погрешность других корней действительно возрастает.
код: [ скачать ] [ спрятать ]
Используется синтаксис C
{
    // исходное уравнение в виде k3*x^3 + k2*x^2 + k1*x + k0
    float k3, k2, k1, k0;
    k3 = 1; k2 = -20; k1 = 100; k0 = 0;

    // любым способом находим действительный корень уравнения
    // с определенной точностью
    float x1 = 0.001;

    // замена переменной: t = x - x1
    // приводит к уравнению a*t^3 + b*t^2 + c*t = 0, где
    // a = k3, b = 3*k3*x1 + k2, c = 3*k3*x1^2 + 2*k2*x1 + k1
    float a = k3;
    float b = 3*k3*x1 + k2;
    float c = 3*k3*x1*x1 + 2*k2*x1 + k1;

    // решаем квадратное уравнение через дискриминант,
    // возвращаемся к исходной переменной
    float D = b*b - 4*a*c;
    if (D < 0) {
        println "x1 = ", x1:15:10, ", других действительных корней нет";
        }
    else {
        float x2 = x1 + (-b + sqrt(D))/(2*a);
        float x3 = x1 + (-b - sqrt(D))/(2*a);
        println "x1 = ", x1:15:10, ", x2 = ", x2:15:10, ", x3 = ", x3:15:10;
        }
}

При первом корне $x_1 = 0,001$ результат
Код:
x1 = 0.0010000000, x2 = 10.0994962499, x3 = 9.8995037501
, при $x_1 = 0,000001$
Код:
x1 = 0.0000010000, x2 = 10.0031617775, x3 = 9.9968372225

 
 
 
 Re: метод возмущений с теоремой Виета
Сообщение24.08.2013, 19:16 
Отбрасывание слагаемых когда речь идет о погрешностях неверно. Подставьте в него 0,0001 и сравните с
первым чпеном уравнения и получим сопоставимые величины. Наверно надо сравнить погрешн. в чистом
мет. возмущ. с мет. возмущ.+ теор. Виета для конкретного уравнения,а в общем ?

 
 
 [ Сообщений: 7 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group