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

Уровень сложности:

По заданному вещественному x, вычислить корень кубический из x по следующей итерационной формуле:

yi+1= 0.5 ( y+ 3 x / ( 2 yi+ 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

Следующие статьи помогут вам в решении данной задачи:
Автор: admin
Дата: 12.09.2012
Поделиться:

Комментарии

  1. Eduard_P

    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;
    }
    
    

Оставить комментарий

Вы должны войти, чтобы оставить комментарий.