По заданному вещественному
x
, вычислить корень кубический из x
по следующей итерационной формуле:yi+1= 0.5 ( yi + 3 x / ( 2 yi2 + x / yi )).
Начальное приближение y0=x
. Итерации прекратить при |yi+1-yi|<10-5
. Смысл данного задания — найти корень кубический без использования специальных функций. Задание не сложное, но интересное, результат работы программы показан ниже:
// Xcube.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> using namespace std; int main() { setlocale(LC_ALL, "rus"); // кириллица в консоли double x; // значение под корнем cout << "Введите x: "; cin >> x; double yi = x, // начальное значение y yi1 = 0; // значение yi+1 while ( true) { yi1 = 0.5 * (yi + 3 * x / (2 * yi * yi + x / yi)); // итерационная формула вычисления корня кубического if (abs(yi1 - yi) < pow(10.0, -5.0)) // условие окончание итерации break; // выход из цикла yi = yi1; // сохраняем текущее значение y } cout << yi << endl; system("pause"); return 0; }
Вот что у нас получилось:
CppStudio.com
Введите x: 27
3
Комментарии
Eduard_P
Задание на 5 мин.