численные методы. решение нелинейных уравнений
VerZer:
функцию взятия по модулю забыл(abs), поэтому и со скобками тогда фигня случилась
leahov:
то есть должно выглядить так?
Код
if (abs (f(a)*fd2x(a) == f(a)*fd2x(a)) &&
(abs f(b)*fd2x(b) == f(b)*fd2x(b)))
{
ShowMessage("Данные: a и b неправильные");
return;
}
VerZer:
Код:
if ((abs(f(a)*fd2x(a)) == f(a)*fd2x(a)) &&
(abs(f(b)*fd2x(b)) == f(b)*fd2x(b)))
{
ShowMessage("Данные: a и b неправильные");
return;
}
leahov:
всё равно дает "Данные: a и b неправильные"
leahov:
если убрать вот это
Код
if ((abs(f(a)*fd2x(a)) == f(a)*fd2x(a)) &&
(abs(f(b)*fd2x(b)) == f(b)*fd2x(b)))
{
ShowMessage("Данные: a и b неправильные");
return;
}
то в принципе запускается, но не считает, если здесь в label убрать нули
Код
while (absolute(x0-t0) < eps)
{
x0 = (x0+t0)/2;
t0 = f((x0+t0)/2);
step = step + 1;
}
Label28->Caption = x0;
Label30->Caption = t0;
Label32->Caption = step;
}
то получается какой то расчет и всё время со степом 1. Явно математическая часть не верна. Кто знает как её реализовать, подскажите пожалуйста
Навигация