По заданному вещественному
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 мин.
#include <cstdlib> #include <iostream> #include <cmath> using namespace std; int main(int argc, char** argv) { int i; float y, y1; float x; cout << "Ведите x: "; cin >> x; y=x; do { y1=y; y=0.5*(y+3*x/(2*y*y + x/y)); } while (abs(y-y1)>1/100000); cout << "y = "<<y<<endl; return 0; }