IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Метод Ньютона, для кубического уравнения
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 42
Пол: Мужской

Репутация: -  0  +


Нужно реализовать в дельфи решение кубического уравнения методом Ньютона ,в поиске нашел метод Ньютона,но он находит только 1 корень,подскажите как можно это сделать
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(nblazhko @ 1.12.2008 22:57) *
он находит только 1 корень,подскажите как можно это сделать
Метод Ньютона работает при оговорке, что на данном участке корень один. Если корней несколько - он может найти один из них, и то без гарантии.. Про множественные корни Ньютон ничего не говорит, насколько мне помнится.

Если ты заранее знаешь вид уравнения (кубическое), то это можно использовать - типа искать промежутки возрастания/убывания и т.п. Но вообще лучше без изврата решать по формуле Кардана smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 42
Пол: Мужской

Репутация: -  0  +


Ну вообще я разобрался вот код если интересно(но все равно спасибо):
#include <iostream.h>
#include <math.h>






//задаем функцию

double f(double x,double a,double b,double c, double d)
{
return x*x*x*a+x*x*b+x*c+d;
}

// ********************************************************************************
************


//задаем производную функции

double df(double x,double a,double b,double c)
{
return 3*x*x*a+2*x*b+c;
}

// ********************************************************************************
************


// алгоритм нахождения корня методом Ньютона

double koren(double x,double a,double b,double c, double d, double Eps,int z)
{
z=0;
while(abs(f(x,a,b,c,d))>Eps)
{

x=x-f(x,a,b,c,d)/df(x,a,b,c);
z++;
if(z>50) break;

}
return x;
}

// ********************************************************************************
***********

int main()
{
double a,b,c,d,Eps,x,n,k,x1,x2, mas[100];
int j,i,z,o;
cout << "vvedite a,b,c,d\n";
cin>>a>>b>>c>>d;
cout<< "vvedite Eps=";
cin>> Eps;
n=-2*abs((b+c)/a);
k=2*abs((b+c)/a);
o=0;

// заполняем массив **************************************************************************

for(i=0;i<100;i++)
{
mas[i]=n+i*(k-n)/99;
x=mas[i];
}

// ищем промежутки с корнями*****************************************************************

for(j=0;j<99;j++)
{
x1=mas[j];
x2=mas[j+1];
if( f(x1,a,b,c,d)*f(x2,a,b,c,d)<0)
{
o++;
x=(x1+x2)/2;
cout <<"\n"<< o <<"koren uravnenia="<<koren(x,a,b,c,d,Eps,z)<<"\n";
}


}



return 0;
}

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(nblazhko @ 2.12.2008 23:32) *
вот код если интересно

Хм.. И как же это вышло, что вопрос был про Delphi, а код оказался сишным?..
Публикация кодов на других языках в языковых тематических разделах крайне не рекомендуется mad.gif .

Как я и говорил, для поиска промежутков тебе пришлось привлечь посторонний метод, основанный на знании примерного поведения функции..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 42
Пол: Мужской

Репутация: -  0  +


Да про код я понял уже,исправлюсь=)Извиняюсь...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 1.12.2020 3:30
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name