Нужно реализовать в дельфи решение кубического уравнения методом Ньютона ,в поиске нашел метод Ньютона,но он находит только 1 корень,подскажите как можно это сделать
Ну вообще я разобрался вот код если интересно(но все равно спасибо):
#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;
}
Да про код я понял уже,исправлюсь=)Извиняюсь...