Помощь - Поиск - Пользователи - Календарь
Полная версия: метод касательных на языке си > Информатика / Программирование
Образовательный студенческий форум > Другие дисциплины > Информатика / Программирование
asia
Здравствуйте, прошу проверить, нет уверенности, что метод выполнен верно
Код
#include <stdio.h>
#include <math.h>

void main(){

double y; //f(x)
double x;
double x0, x1;//границы отрезка
double x2, d1,d2;// d1-первая производная, d2-вторая производная
double exp=0.001; //точность вычисления

printf("x0 = ");
scanf("%lf ",&x0);
printf("x1 = ");
scanf("%lf ",&x1);

   y=2*pow(x,3)-3*pow(x,2)+12*x-12;
   d1=6*pow(x,2)-6*x+12;
   d2=12*x-6;


while(abs(x-x2)>exp){
x=x2;
   if((x0*d2)>exp){
   x=x0;
   x2=x-y/d1;
   }
else if((x1*d2)>exp){
      x=x1;
      x2=x-y/d1;
   }
};
printf ("\n Kasatelnix : x=%.3lf",x2);
y=f(x2);
printf ("  y=%.3lf",y);
return 0;

}


Заранее спасибо!
steph
У Вас используется
abs(x-x2)>exp, abs возвращает абсолютное значение , не учитывая знаков после точки. Чтобы применить в данном случае точность нужно записать просто : (x-x2)>exp
У Вас не определены функции
y=2*pow(x,3)-3*pow(x,2)+12*x-12;
d1=6*pow(x,2)-6*x+12;
d2=12*x-6;

Это будут просто числа , не функции, в Вашем случае они будут 0 все.

А вот так будет функция.( на примере y)
double func(double x)
{
return (2*pow(x,3)-3*pow(x,2)+12*x-12);
}
int main()
{
double y=0;
y=func(1.0);
return 0;
}
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.