Всем привет) Задали домашку по проге:Модифицированным методом Ньютона решить функцию a0+a1*x+a2*x*x+a3*log(1/x)
Написал код,но с производной что-то не так
#include
#include
#include
float f(float a0, float a1, float a2, float a3, float x)
{
return a0+a1*x+a2*x*x+a3*log(1/x);
}
int main ()
{
int n;
float a0, a1, a2, a3, E, A, B, x0, x1, proisv;
FILE *myfile;
myfile = fopen ("Vivod.txt", "w");
printf ("Для решения уравнения a0+a1*x+a2*x*x+a3*ln(1/x) введите значения следующих коэффицентов: \n");
printf ("a0=");
scanf ("%f", &a0);
printf ("a1=");
scanf ("%f", &a1);
printf ("a2=");
scanf ("%f", &a2);
printf ("a3=");
scanf ("%f", &a3);
printf ("Введите желаемую точность решения: ");
scanf ("%f", &E);
printf ("Введите начальную границу интервала: ");
scanf ("%f", &A);
printf ("Введите конечную границу интервала: ");
scanf ("%f", &B);
printf ("Введите примерное значение решения уравнения(приближение): ");
scanf ("%f", &x0);
while ((x0 B))
{
printf ("Заданное приближение не принадлежит заданному интервалу.Введите корректное значение приближения: ");
scanf ("%f", &x0);
}
proisv=a1+(2*a2*x0)-(a3/x0);
do
{
x1=x0-(f(a0, a1, a2, a3, x0)/proisv);
x0=x1;
}while(fabs(x0-x1)>E);
if ((x1 B))
{
printf ("В заданном интервале нет решений данного уравнения. \n");
fprintf (myfile, "There are no solutions to this equation in this interval. \n");
}
else
{
printf ("%f \n", x1);
fprintf (myfile, "%f \n", x1);
}
}