⚙️ О способе вычисления корней n-ой степени 🌱
Наткнулся на интересную задачку. Решил реализовать алгоритм вычисления корня n-ой степени из произвольного положительного числа. Уже приводил возможную реализацию для нахождения квадратного корня. Но в этом случае решение получается более обобщенным. Это первый рабочий алгоритм, написанный на коленке. Нужно еще поразмышлять о сложности и возможностях ускорения.
В данном решении я использую идею относительно неплохого начального приближения. Затем последовательным делением находится второе приближение корня n-ой степени. Далее считается новое приближение с помощью усреднение двух текущих. Последовательно алгоритм сходится к нужному корню с наперед заданной погрешностью. Это немного похоже на метод последовательной релаксации ( численные методы решения ).
📝 Код программы 📄 https://pastebin.com/ztnz7g2E https://ideone.com/OUEzGA
#include <stdio.h>
double mabs(double x){ return (x < 0)? -x : x; }
int main(void) { double num = 8; int rootDegree = 3;
printf("Число а = %f\n", num); printf("Степень n = %d\n", rootDegree);
double eps = 0.00001; double root = num / rootDegree; double rn = num; int countiter = 0; while(mabs(root - rn) >= eps){ rn = num; for(int i = 1; i < rootDegree; i++){ rn = rn / root; } root = 0.5 * ( rn + root); countiter++; } printf("root = %f\n", root); printf("Число итераций = %i\n", countiter);
return 0; }
#программирование #математика #информатика #численные_методы
👨🏻💻 Репетитор IT men // @mentor_it