Уравнения С++

Выполнен
Заказ
5142389
Раздел
Программирование
Тип работы
Антиплагиат
Не указан
Срок сдачи
26 Дек 2022 в 14:00
Цена
1 000 ₽
Блокировка
10 дней
Размещен
25 Дек 2022 в 18:29
Просмотров
66
Описание работы

Задание в файле.

Уточнение корней уравнений методом итераций и касательных.


Оба метода в одной программе

Если алгоритм выполнения может сильно различаться, то вот пример как делать метод в одной программе :


#include

#include

#include


using namespace std;


double f(double x)

{

  return x * x * x - x;

}


double f1(double x)

{

  return 3 * x * x - 1;

}


double f2(double x)

{

  return 3 * 2 * x;

}


double g(double x)

{

  return x * x * x;

}


double h(double x)

{

  return pow(x,1/3);

}


double g1(double x)

{

  return 3 * x * x;

}


int main() {

  setlocale(LC_ALL, "Russian");

  double e, x0, x00, x1, dx;

  int n, n1 = 0;

  cout « "Enter error: ";

  cin » e;

  cout « "Enter an initial approximation: ";

  cin » x00;

  cout « "Enter the number of iterations: ";


  cin » n;

  cout « "Simple-iteration method" « endl;


  x0 = x00;

  if (abs(f1(x0))<1)

  {

    do

    {

      x1 = g(x0);

      dx = x1 - x0;

      x0 = x1;

      n1++;

    } while ((abs(dx)>e)&&(n1<n));

    if (n1 == n)

    {

      cout « "Could not find a root in " « n « " iterations" « endl;

    }

    else

      cout « "Found a root in " « n1 « " iterations: " « x1 « endl;

  }

  else if (abs(f1(x0))>1)

  {

    do

    {

      x1 = h(x0);

      dx = x1 - x0;

      x0 = x1;

      n1++;

    } while ((abs(dx)>e)&&(n1<n));

    if (n1 == n)

    {

      cout « "Could not find a root in " « n « " iterations for x0 = " « x0 « endl;

    }

    else

      cout « "Found a root in " « n1 « " iterations: " « x1 « " (for x0 = " « x0 « ")" « endl;

  }

  else

  {

    cout « "Method cannot be applied for x0 = " « x0 « endl;

  }


  cout « endl « "Newton's method (using tangents)" « endl;


  x0 = x00;

  n1 = 0;


  if (f(x0) * f2(x0) > 0)

  {

    do

    {

      x1 = x0 - f(x0) / f1(x0);

      dx = x1 - x0;

      x0 = x1;

      n1 += 1;

    } while ((abs(dx) > e)&&(n1<n));

    if (n1 == n)

    {

      cout « "Could not find a root in " « n « " iterations for x0 = " « x0 « endl;

    }

    else

      cout « "Found a root in " « n1 « " iterations: " « x1 « " (for x0 = " « x0 « ")" « endl;

  }

  else

  {

    cout « "Method cannot be applied for x0 = " « x0 « endl;

  }

}


//ответы у двух методов должны быть максимально приближенными друг к другу

Нужна такая же работа?
  • Разместите заказ
  • Выберите исполнителя
  • Получите результат
Гарантия на работу 1 год
Средний балл 4.96
Стоимость Назначаете сами
Эксперт Выбираете сами
Уникальность работы от 70%
Время выполнения заказа:
1 час 57 минут
Выполнен в срок
Нужна аналогичная работа?
Оформи быстрый заказ и узнай стоимость
Гарантированные бесплатные доработки
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Темы журнала
Показать ещё
Прямой эфир
Ошибка при загрузке заказов 1
×