C++

Итерационная формула вычисления корня кубического

Задание
По заданному вещественному x, вычислить значение 3?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;
}
Теги:
корень кубический
Добавлено: 21 Сентября 2013 12:22:28 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...