Форум программистов, компьютерный форум CyberForum.ru

С++ Функция приближённого вычисления квадратного корня - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.62
Jgo Gankster
0 / 0 / 0
Регистрация: 27.12.2011
Сообщений: 24
01.03.2012, 22:51     С++ Функция приближённого вычисления квадратного корня #1
Написать функцию приближённого вычисления квадратного корня по формуле http://www.cyberforum.ru/cgi-bin/latex.cgi?{x}_{n}=x/2+a/2*x, http://www.cyberforum.ru/cgi-bin/latex.cgi?{x}_{1}=1, http://www.cyberforum.ru/cgi-bin/latex.cgi?x \rightarrow \sqrt{a}.
Вот попробовал написать но что-то функция не работает, подскажите в чём проблема плиз

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <math.h>
 
using namespace std;
 
int funk(int b)
{
    float x;
    x=sqrt(b)/2+b/2*sqrt(b);
}
 
int main()
{
    funk(455);
    cout << x << endl;
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2012, 22:51     С++ Функция приближённого вычисления квадратного корня
Посмотрите здесь:

C++ Функция для приближённого вычисления Log x по основанию 2 с помощью многочлена наилучшего приближения
C++ алгоритм для вычисления квадратного корня x из вещественного числа y.
вычисления квадратного корня C++
C++ C++ Функция вычисления квадратного корня
Придумать алгоритм вычисления квадратного корня, не использую функции возведения в степень C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
miriganua
129 / 100 / 4
Регистрация: 05.02.2012
Сообщений: 241
01.03.2012, 23:00     С++ Функция приближённого вычисления квадратного корня #2
Функция должна возвращать значение.

Добавлено через 1 минуту
И если честно не понятно, в функции вычисления квадратного корня ты дважды используешь библиотечную функцию нахождения квадратного корня.
Arnaulf
15 / 15 / 1
Регистрация: 22.12.2008
Сообщений: 69
01.03.2012, 23:00     С++ Функция приближённого вычисления квадратного корня #3
Цитата Сообщение от Jgo Gankster Посмотреть сообщение
Написать функцию приближённого вычисления квадратного корня по формуле http://www.cyberforum.ru/cgi-bin/latex.cgi?{x}_{n}=x/2+a/2*x, http://www.cyberforum.ru/cgi-bin/latex.cgi?{x}_{1}=1, http://www.cyberforum.ru/cgi-bin/latex.cgi?x \rightarrow \sqrt{a}.
Вот попробовал написать но что-то функция не работает, подскажите в чём проблема плиз

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <math.h>
 
using namespace std;
 
int funk(int b)
{
    float x;
    x=sqrt(b)/2+b/2*sqrt(b);
}
 
int main()
{
    funk(455);
    cout << x << endl;
    return 0;
}
Не правильная работа с переменными. Твоя функция ничего не возвращала.
Можно так написать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <math.h>
 
using namespace std;
float x;
 
float funk(int b)
{
    return sqrt(b)/2+b/2*sqrt(b);
}
 
int main()
{
    x = funk(455);
    cout << x << endl;
    return 0;
}
или так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <math.h>
 
using namespace std;
 
float funk(int b)
{
    float x;
    x=sqrt(b)/2+b/2*sqrt(b);
    return x;
}
 
int main()
{
    cout << funk(455) << endl;
    return 0;
}
Jgo Gankster
0 / 0 / 0
Регистрация: 27.12.2011
Сообщений: 24
01.03.2012, 23:10  [ТС]     С++ Функция приближённого вычисления квадратного корня #4
почему-то считает не правильно, даже если в сокращённом виде
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <math.h>
 
using namespace std;
 
int main()
{
    float x;
    int b=9;
    x=sqrt(b)/2+b/2*sqrt(b);
    cout << x << endl;
    return 0;
}
при b= 9 выдаёт x=13,5
при b=1 выдаёт х=0,5
Arnaulf
15 / 15 / 1
Регистрация: 22.12.2008
Сообщений: 69
01.03.2012, 23:32     С++ Функция приближённого вычисления квадратного корня #5
Цитата Сообщение от Jgo Gankster Посмотреть сообщение
почему-то считает не правильно, даже если в сокращённом виде
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <math.h>
 
using namespace std;
 
int main()
{
    float x;
    int b=9;
    x=sqrt(b)/2+b/2*sqrt(b);
    cout << x << endl;
    return 0;
}
при b= 9 выдаёт x=13,5
при b=1 выдаёт х=0,5
Попробуй b тоже float cделать.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
01.03.2012, 23:55     С++ Функция приближённого вычисления квадратного корня #6
Господа, а Вас не смущает то, что формула итерационная?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <cmath>
 
using namespace std;
 
double mySqr (double x)
{
   double y1 , y2;
 
   y2 = x;
   do
   {
      y1 = y2;
      y2 = (y1 + x/y1)/2;
   }while (fabs(y1 - y2) > 0.001);
   return y2;
}
int main(int argc, char* argv[])
{
 
   cout << mySqr(12.) << ' ' << sqrt(12.) << endl;
 
   system("pause");
   return 0;
}
Jgo Gankster
0 / 0 / 0
Регистрация: 27.12.2011
Сообщений: 24
02.03.2012, 00:01  [ТС]     С++ Функция приближённого вычисления квадратного корня #7
Цитата Сообщение от kazak Посмотреть сообщение
Господа, а Вас не смущает то, что формула итерационная?
Что значит итерационная формула?
Whiteha
Программист
33 / 33 / 4
Регистрация: 08.07.2011
Сообщений: 190
Записей в блоге: 1
02.03.2012, 00:09     С++ Функция приближённого вычисления квадратного корня #8
Это значит что вычисления происходят до тех пор, пока результат не будет иметь погрешность меньше эпсилон(в примере который вам привели это 0.001).
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
02.03.2012, 00:14     С++ Функция приближённого вычисления квадратного корня #9
Это значит, что формула выполняется за несколько итераций (шагов). Сначала вычисляется формула с начальным аргументом, который задается функцией, получаем первое значение функции. Дальше вычисляем формулу с полученным значение в качестве аргумента, получаем второе значение, и т.д. И так повторяем до тех пор, пока разность значений между соседними итерациями не станет меньше некоторого порога.
IFree Host
Заблокирован
02.03.2012, 00:29     С++ Функция приближённого вычисления квадратного корня #10
Итерация в широком смысле слова — термин, обозначающий повторение какого-либо действия, явления или процесса.

итерационная функция в противоположность рекурсивной выполняет прямой или поступательный порядок действий.
Jgo Gankster
0 / 0 / 0
Регистрация: 27.12.2011
Сообщений: 24
02.03.2012, 00:41  [ТС]     С++ Функция приближённого вычисления квадратного корня #11
Цитата Сообщение от kazak Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <cmath>
 
using namespace std;
 
double mySqr (double x)
{
   double y1 , y2;
 
   y2 = x;
   do
   {
      y1 = y2;
      y2 = (y1 + x/y1)/2;
   }while (fabs(y1 - y2) > 0.001);
   return y2;
}
int main(int argc, char* argv[])
{
 
   cout << mySqr(12.) << ' ' << sqrt(12.) << endl;
 
   system("pause");
   return 0;
}
А зачем в 18 строчке вот эти обозначения (int argc, char* argv[])? Ведь они нигде не используются
Whiteha
Программист
33 / 33 / 4
Регистрация: 08.07.2011
Сообщений: 190
Записей в блоге: 1
02.03.2012, 00:51     С++ Функция приближённого вычисления квадратного корня #12
Можешь их и убрать, они нужны для запуска программы с некими начальными параметрами(это делается через командную строку)

int argc - число переданных программе аргументов(вычисляется автоматически);
char* argv[] - массив строк, которые являются аргументами, иными словами - параметрами, с которыми запускается программа(эти параметры задаются в командной строке так(пример): "D:\my_programm.exe Hello World").
Jgo Gankster
0 / 0 / 0
Регистрация: 27.12.2011
Сообщений: 24
02.03.2012, 02:15  [ТС]     С++ Функция приближённого вычисления квадратного корня #13
Что такое fabs в 15 строке?

Добавлено через 5 минут
Кстати с командой system("pause") в строке 23 прога не запускается, выдаёт ошибку:
С++ Функция приближённого вычисления квадратного корня

без этой строки прога нормально запускается и работает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.03.2012, 03:21     С++ Функция приближённого вычисления квадратного корня
Еще ссылки по теме:

C++ Программа для вычисления квадратного корня. Ошибка компиляции в аргументе функции
C++ Прототип и тело функции. Алгоритм вычисления квадратного корня
Функция приближённого вычисления квад- ратного корня по формуле C++

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

Или воспользуйтесь поиском по форуму:
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
02.03.2012, 03:21     С++ Функция приближённого вычисления квадратного корня #14
fabs возвращает модуль вещественного числа.
Yandex
Объявления
02.03.2012, 03:21     С++ Функция приближённого вычисления квадратного корня
Ответ Создать тему
Опции темы

Текущее время: 00:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru