С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 36, средняя оценка - 4.75
Feuer
73 / 73 / 1
Регистрация: 13.10.2008
Сообщений: 144
#1

Нахождение корня без sqrt() - C++

12.11.2008, 01:51. Просмотров 5314. Ответов 8
Метки нет (Все метки)

Здравствуйте. Ну как вы наверно поняли нужно написать собственную функцию нахождения корня.
вот что я наваял:
C++
1
2
3
4
5
6
7
8
const double eps=0.0001;
double sqrt=0;
double n;
cin>>n;
while(sqrt*sqrt <n){
    sqrt+=eps;
};
cout<<"sqrt("<<n<<") = "<<sqrt;
Вроде правильно и вроде все работает, но
При вводе 16 генерирует 4, а при вводе, скажем, 100 - 10.0001.. Никак не могу понять почему, т.е. несмотря на то что уже получено число 10 он все равно считает его квадрат меньшим 100 и добавляет eps.. Помогите, пожалуйста..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2008, 01:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нахождение корня без sqrt() (C++):

Цикл: Для числа N вычислить значение следующего выражения: sqrt((1) + sqrt((2) + ... + sqrt(2 * N))) - C++
Как это решить? sqrt((1)+sqrt((2)+..+sqrt(2n)))

Вычислить значение выражения sqrt (2 + sqrt (2 + sqrt (2 ... sqrt2))), (n-слагаемых) - C++
Вычислить значение выражения sqrt (2 + sqrt (2 + sqrt (2 ... sqrt2))), (n-слагаемых),с помощью iostream, stdio.С помощью цикла for або while

Рекурсия: вычислить значение выражения sqrt(1+sqrt(2+...sqrt(n))) - C++
Вычислить с помощью рекурсии и без нее - y(n) = sqrt(1+sqrt(2+...sqrt(n).. Как выполнить задание с помощью рекурсии? #include...

Дано натуральное число n. Вычислить sqrt(2+ sqrt(5 + sqrt(7...)) - C++
Дано натуральное число n.Вычислить sqrt(2+ sqrt(5 + sqrt(7...)). Под корнями располагается n первых простых чисел. Написал как находить...

Нахождение квадратного корня - C++
3 задание. Си знаю на самом простом уровне, написал код для решения задачи, но не совсем уверен в его правильности, потому прошу знатоков...

Нахождение корня уравнения - C++
Составить программу для вычисления

8
УЫЕУЕ
2 / 2 / 0
Регистрация: 04.11.2008
Сообщений: 37
12.11.2008, 03:24 #2
http://guidoscope.com/ru/Извлечение_квадратного_корня_столбиком.
0
greshnikk
31 / 31 / 0
Регистрация: 05.11.2008
Сообщений: 162
12.11.2008, 08:10 #3
хммм... я правильно понял - тебе надо написать функцию нахождения корня, но при етом ты в етой функции используешь нахождение корня...
Тебе надо использовать ряд Тейлора.
0
Feuer
73 / 73 / 1
Регистрация: 13.10.2008
Сообщений: 144
12.11.2008, 15:04  [ТС] #4
Цитата Сообщение от greshnikk Посмотреть сообщение
хммм... я правильно понял - тебе надо написать функцию нахождения корня, но при етом ты в етой функции используешь нахождение корня...
Тебе надо использовать ряд Тейлора.
нужно найти корень без использование библиотечных функций(sqrt() ну и pow()) я их не применял... Может тебе показалось.. -в моем случае sqrt - это просто переменная.
0
greshnikk
31 / 31 / 0
Регистрация: 05.11.2008
Сообщений: 162
12.11.2008, 15:10 #5
тьфу... затормозил
Попробуй введи значение не 100, а 100.0000000
0
Feuer
73 / 73 / 1
Регистрация: 13.10.2008
Сообщений: 144
12.11.2008, 18:11  [ТС] #6
Цитата Сообщение от greshnikk Посмотреть сообщение
Попробуй введи значение не 100, а 100.0000000
тот же результат... ума не приложу, в чем тут может быть дело....
0
Varlock
365 / 68 / 2
Регистрация: 25.09.2008
Сообщений: 401
12.11.2008, 18:31 #7
Feuer, введи может ещё каких-нить чисел, кроме 100 и 16 +)
чтобы чуть больше статистики и результаты сюда +)) как минимум стоит проверить все целые корни между ними, а так же хотябы 1 число больше 100... можно больше... возможно это даст чуть больше соображений, почему может неработать... +)
0
qwone
9 / 9 / 1
Регистрация: 18.08.2008
Сообщений: 127
13.11.2008, 20:41 #8
А что метод дихотомии(метод Ньютона) , деления отрезка пополам отменили . ?
0
seravr
1 / 1 / 0
Регистрация: 11.11.2008
Сообщений: 34
13.11.2008, 20:59 #9
При отладке очень интересная вещь полдучается, автор, посмотрите внимательно в отладке при последней итерации что находиться в переменной sqrt!! C чем это связано, пока не понятно, надо поглубже поискать причину, ну а пока вот код на Си, просто задайте точность после запятой при помощи модификатора, и программа все очень даже хорошо считает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<stdio.h>
#include<conio.h>
 
void main()
{
    const double eps=0.000001;
    double sqrt=0,n,root=0;
    printf("Input number=\t");
    scanf("%lf",&n);
 
    while(sqrt<n)
    {
        root+=eps;
        sqrt=root*root;
    }
 
    printf("\nSquare root of the number=\t%6.5lf",root);
 
    getch();
 
}
0
13.11.2008, 20:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2008, 20:59
Привет! Вот еще темы с ответами:

нахождение корня на интервале - C++
дано x^2-4x-8,75. найти корень уравнения f(x)=0 на интервале (A,B) c точностью E. использовать метод хорд. где A=5,5 B=6,5 E=10^-4....

Нахождение корня уравнения - C++
Составить программу для вычисления действительных корней уравнения любым способом точность 10^-5 x^3+3x^2-9x+5=0

Нахождение квадратного корня - C++
Нужно написать функцию нахождения квадратного корня не используя cmath. Решил реализовать итерационную формулу Герона, при компилировании...

Нахождение корня методом хорд - C++
Помогите дописать программу, Билдер в 5-ой строке выдаёт синтаксическую ошибку: #include&lt;iostream.h&gt; #include&lt;conio.h&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.