Помогите объяснить строчки в коде:
//---------------------------------------------------------------------------
#include
#include
#include
//---------------------------------------------------------------------------
double func(double x)
{
double y;
y = -(expf(-x)) + 0.5 + sqrt(fabs(x));
return y;
}
double** findRoot(double xmin, double xmax, double step, int count_intervs)
{
double** intervs;
int n = fabs((xmax - xmin) / (2 * step));
intervs = (double**)malloc(sizeof(double*) * n);
for (int i = 0; i < n; i++)
{
intervs[i] = (double*)malloc(sizeof(double) * 2);
intervs[i][0] = 0.0;
intervs[i][1] = 0.0;
}
for (double x = xmin; x <= xmax; x += step)
{
double y = func(x);
printf("y: %lf\tx: %lf\n", y, x);
if (y * func(x + step) step)
{
c = (a + b) / 2;
if ((func(a) * func(c)) > 0) a = c;
else b = c;
}
return c;
}
double Mxo(double xmin, double xmax, double step)
{
double x_kor = 0;
double tmp;
do
{
tmp = x_kor;
x_kor = xmax - func(xmax) * (xmin - xmax) / (func(xmin) - func(xmax));
xmin = xmax;
xmax = tmp;
} while (fabs(x_kor - xmax) > step);
return x_kor;
}
int main(int argc, char* argv[])
{
int count_intervs = 0;
double** res = findRoot(-1.0, 1.0, 0.05, count_intervs);
printf("\nintervals: %d\n\n", count_intervs);
for (int i = 0; i

27 Дек 2019 в 13:04
185 +1
0
Ответы
1

Функция double func(double x) вычисляет значение функции y для заданного x по формуле y = -(expf(-x)) + 0.5 + sqrt(fabs(x)).

Функция double** findRoot(double xmin, double xmax, double step, int count_intervs) находит корни функции func(x) на интервале от xmin до xmax с шагом step. Она выделяет память под массив интервалов intervs, находит интервалы, где функция меняет знак, и записывает их в массив intervs, который затем возвращается.

Функция double Mpol(double a, double b, double step) реализует метод половинного деления для нахождения корня уравнения func(x) = 0 на интервале от a до b с заданным шагом step.

Функция double Mxo(double xmin, double xmax, double step) реализует метод хорд для нахождения корня уравнения func(x) = 0 на интервале от xmin до xmax с заданным шагом step.

В функции main вызывается функция findRoot для нахождения корней функции на заданном интервале, затем выводятся найденные интервалы и значения корней, найденных с помощью метода хорд и метода половинного деления.

18 Сен 2024 в 10:52
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир