Программа для вычисления корня n-й степени из числа - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Есть программа для вычисления корня n-й степени из числа х, с заданой точностью с помощью итерационных формул. Но программа работает только для положительного корня n-й степени. Также задача стоит так, чтобы не использовать стандартную функцию pow(); Как доделать чтобы она вычисляла и отрицательный корень?
Листинг программы
  1. # include <stdio.h>
  2. # include <conio.h>
  3. # include <math.h>
  4. int main()
  5. {
  6. double x, y, y2, e, d;
  7. int k,k2,i;
  8. do{
  9. while(1){
  10. printf("\n\nInput value \'x\': ");
  11. if(scanf("%lf", &x)==0 || x==0){
  12. printf("\nYou have entered an incorrect value \'x\'\nPlease rewrite!\n");
  13. fflush(stdin);
  14. }else break;
  15. }
  16. while(1){
  17. printf("\nInput radial power \'k\': ");
  18. if(scanf("%d", &k)==0 || k==0 || (x<0 && (k%2)==0) || (x==0 && (k>=0))){
  19. printf("\nYou have entered an incorrect radial power \'k\'\nPlease rewrite!\n");
  20. fflush(stdin);
  21. }else break;
  22. }
  23. while(1){
  24. printf("\nInput epsilon to 1e-15: ");
  25. if(scanf("%lf", &e)==0 || e<=1e-15){
  26. printf("\nYou have entered an incorrect epsilon \'e\'\nPlease rewrite!\n");
  27. fflush(stdin);
  28. }else break;
  29. }
  30. y=d=1;
  31. do
  32. {
  33. y2=1;
  34. for(i=1;i<=k-1;i++){
  35. y2*=y;
  36. d=(x/y2-y)/k;
  37. y+=d;
  38. }
  39. }
  40. while(fabs(d)>=e);
  41. printf("\nResult:\ny = %.3lf ", y);
  42. printf("\nYou want to continue? If Yes, press any key, ESC - for exit ");
  43. if(getch()==27)break;
  44. }
  45. while(1);
  46. return 0;
  47. }

Решение задачи: «Программа для вычисления корня n-й степени из числа»

textual
Листинг программы
  1. if(k<0)x=1/x;

Объяснение кода листинга программы

  1. Проверка условия: k < 0.
  2. Если условие истинно, то x = 1/x.
  3. Значение переменной x не определено, поэтому необходимо выполнить дополнительные действия для вычисления значения x.
  4. Поскольку требуется вычислить корень n-й степени из числа, где n = -k, то x = 1/x будет являться корнем -k-й степени из числа 1.
  5. Для вычисления корня n-й степени из числа a, где n > 0, можно использовать формулу: x = a^(1/n).
  6. Подставляем значение a = 1 и n = -k в формулу x = a^(1/n).
  7. Вычисляем значение x = 1^(1/-k).
  8. Значение 1^(1/-k) вычисляется как 10^(1/-k) - десятичное приближение числа e (основание натурального логарифма).
  9. Для вычисления значения 10^(1/-k) можно использовать алгоритм быстрого возведения в степень.
  10. Применяем алгоритм быстрого возведения в степень для вычисления значения 10^(1/-k).
  11. Вычисляем значение 10^(1/-k) с помощью логарифма по основанию 10.
  12. Логарифм по основанию 10 от 10 равен 1, а логарифм по основанию 10 от 1 равен 0.
  13. Используем формулу логарифма по основанию 10: log(a) = log(b) + (log(a) / log(b)) * (1 - 1/b).
  14. Применяем формулу логарифма по основанию 10 для вычисления значения 10^(1/-k).
  15. Вычисляем значение 10^(1/-k) с помощью логарифма по основанию 10.
  16. Получаем значение 10^(1/-k).
  17. Подставляем значение 10^(1/-k) в формулу x = a^(1/n).
  18. Вычисляем значение x = (10^(1/-k))^(1/(-k)) = 10^(1/(-k*(-1))).
  19. Используем формулу логарифма по основанию 10: log(a) = log(b) + (log(a) / log(b)) * (1 - 1/b).
  20. Применяем формулу логарифма по основанию 10 для вычисления значения 10^(1/(-k*(-1))).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы