Программа для вычисления корня n-й степени из числа - C (СИ)
Формулировка задачи:
Есть программа для вычисления корня n-й степени из числа х, с заданой точностью с помощью итерационных формул. Но программа работает только для положительного корня n-й степени. Также задача стоит так, чтобы не использовать стандартную функцию pow(); Как доделать чтобы она вычисляла и отрицательный корень?
# include <stdio.h> # include <conio.h> # include <math.h> int main() { double x, y, y2, e, d; int k,k2,i; do{ while(1){ printf("\n\nInput value \'x\': "); if(scanf("%lf", &x)==0 || x==0){ printf("\nYou have entered an incorrect value \'x\'\nPlease rewrite!\n"); fflush(stdin); }else break; } while(1){ printf("\nInput radial power \'k\': "); if(scanf("%d", &k)==0 || k==0 || (x<0 && (k%2)==0) || (x==0 && (k>=0))){ printf("\nYou have entered an incorrect radial power \'k\'\nPlease rewrite!\n"); fflush(stdin); }else break; } while(1){ printf("\nInput epsilon to 1e-15: "); if(scanf("%lf", &e)==0 || e<=1e-15){ printf("\nYou have entered an incorrect epsilon \'e\'\nPlease rewrite!\n"); fflush(stdin); }else break; } y=d=1; do { y2=1; for(i=1;i<=k-1;i++){ y2*=y; d=(x/y2-y)/k; y+=d; } } while(fabs(d)>=e); printf("\nResult:\ny = %.3lf ", y); printf("\nYou want to continue? If Yes, press any key, ESC - for exit "); if(getch()==27)break; } while(1); return 0; }
Решение задачи: «Программа для вычисления корня n-й степени из числа»
textual
Листинг программы
if(k<0)x=1/x;
Объяснение кода листинга программы
- Проверка условия: k < 0.
- Если условие истинно, то x = 1/x.
- Значение переменной x не определено, поэтому необходимо выполнить дополнительные действия для вычисления значения x.
- Поскольку требуется вычислить корень n-й степени из числа, где n = -k, то x = 1/x будет являться корнем -k-й степени из числа 1.
- Для вычисления корня n-й степени из числа a, где n > 0, можно использовать формулу: x = a^(1/n).
- Подставляем значение a = 1 и n = -k в формулу x = a^(1/n).
- Вычисляем значение x = 1^(1/-k).
- Значение 1^(1/-k) вычисляется как 10^(1/-k) - десятичное приближение числа e (основание натурального логарифма).
- Для вычисления значения 10^(1/-k) можно использовать алгоритм быстрого возведения в степень.
- Применяем алгоритм быстрого возведения в степень для вычисления значения 10^(1/-k).
- Вычисляем значение 10^(1/-k) с помощью логарифма по основанию 10.
- Логарифм по основанию 10 от 10 равен 1, а логарифм по основанию 10 от 1 равен 0.
- Используем формулу логарифма по основанию 10: log(a) = log(b) + (log(a) / log(b)) * (1 - 1/b).
- Применяем формулу логарифма по основанию 10 для вычисления значения 10^(1/-k).
- Вычисляем значение 10^(1/-k) с помощью логарифма по основанию 10.
- Получаем значение 10^(1/-k).
- Подставляем значение 10^(1/-k) в формулу x = a^(1/n).
- Вычисляем значение x = (10^(1/-k))^(1/(-k)) = 10^(1/(-k*(-1))).
- Используем формулу логарифма по основанию 10: log(a) = log(b) + (log(a) / log(b)) * (1 - 1/b).
- Применяем формулу логарифма по основанию 10 для вычисления значения 10^(1/(-k*(-1))).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д