2014 dxdy logo

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

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


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему
 
 метод возмущений с теоремой Виета
Сообщение08.08.2013, 18:09 


02/12/10
57
Практически все корни кубич. (алгебраич.) урав. находят методом возмущений. А можна один корень-мет.
возмущений, а остальные по теореме Виета т.е. состав. сист. уравнений (переопределенную),по моему так
точнее?

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


18/01/13
12044
Казань
А как вы получаете первый корень - приближенно или в параметрическом виде? В первом случае возможна неустойчивость решений, т.е. большая погрешность.

 Профиль  
                  
 
 Re: метод возмущений с теоремой Виета
Сообщение20.08.2013, 13:22 


02/12/10
57
Первый корень-методом возмущений, а остальные по теор. Виета, которая точная и в итоге получим три корня
более точно,чем если находить все их мет. возмущений. Но как быть(если предыдущее верно) с переопределеностю
системы уравнений?

 Профиль  
                  
 
 Re: метод возмущений с теоремой Виета
Сообщение20.08.2013, 14:33 


05/09/12
2587
Насколько я понимаю, можно. У кубического многочлена с действительными коэффициентами всегда будет хотя бы один действительный корень, найдем любой из них (нам не важно, какой именно) любым нравящимся численным методом, поделим многочлен на многочлен в программе (в столбик), получим квадратное уравнение, решим его через формулы с дискриминатном.

 Профиль  
                  
 
 Re: метод возмущений с теоремой Виета
Сообщение20.08.2013, 17:44 
Заслуженный участник
Аватара пользователя


18/01/13
12044
Казань
Но ведь он не поделится! Пример. Попробуем решить уравнение $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 


05/09/12
2587
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 


02/12/10
57
Отбрасывание слагаемых когда речь идет о погрешностях неверно. Подставьте в него 0,0001 и сравните с
первым чпеном уравнения и получим сопоставимые величины. Наверно надо сравнить погрешн. в чистом
мет. возмущ. с мет. возмущ.+ теор. Виета для конкретного уравнения,а в общем ?

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

Модераторы: Модераторы Математики, Супермодераторы



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

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


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

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