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

Возведение в вещественную степень - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Паралельное вычисление минимального значения двух массивов http://www.cyberforum.ru/cpp-beginners/thread1210619.html
Выполнить паралельное вычисление минимального значения для двух массивов. Вывести результат через MessageBox/. Добавлено через 29 минут Выполнить паралельное вычисление минимального значения для двух массивов
C++ Разделить файл со списком людей на два по определенному признаку Дан текстовый файл в котором содержатся следующие структуры; - фамилия - возраст - кол-во детей - профессия (от А до Я) - образование (0 -неоконченное среднее. 1-среднее. 2- средне специальное. 3- высшее) Сформировать 2 бинарных файла: 1) мужчины имеющие высшее образование не старше 50 лет 2) женщины имеющие более 3 детей, имеющие средне специальное образов. Сформировать текстовый файл... http://www.cyberforum.ru/cpp-beginners/thread1210615.html
Высокоточный таймер C++
Всем привет, переписываю проект с линукс под окошки... нужен таймер, с временем срабатывания в 0,00025 секунды, в линухе то был нано, а как быть с окошками ? подскажите через че сделать, может кто уже сталкивался ? п.с. можно и аналог Sleep() какой точный :)
C++ Можно ли массив передавать как параметр?
Всем доброго дня! Короче, есть несеолько массивов, скажем два; - arrb и arrc. И есть функция типа int count();. Надо чтобы эта функция работала то с одним массивом, то - с другим. То есть как бы передавал массив в параметры функции. Подскажите как это делается. Если вообще это возможно. Спасибо.
C++ Заменить все(один) символ(ы) в Unicode строке http://www.cyberforum.ru/cpp-beginners/thread1210594.html
Здравствуйте. поиск по интернету не дал результатов. Каким образом можно заменить все вхождения символа в строке wchar_t (visual studio) или хотя бы одного, чтоб функцию сам написал? например в строке заменить \ на / без преобразования wchar_t *str=L"C:\\Temp\\folder" строка L"X" при таком подходе видимо имеет терминатор (что внезапно обрывает строку) wcscpy(&s,L"X");
C++ Работа с текстовым файлом как с базой данных привет всем. возник вот такой вопрос: есть некая база данных в текстовичке. нужно что бы с помощью программы по части известного, программа находила остальную строку с данными и выводила их на экран (запутанно...). например: база машин - вводим номер машины - находит строку данных с этим номером и добавляется остальная информация о владельце, адрес ну или что там будет. подскажите код... подробнее

Показать сообщение отдельно
Psilon
Master of Orion
Эксперт .NET
5848 / 4745 / 628
Регистрация: 10.07.2011
Сообщений: 14,285
Записей в блоге: 5
Завершенные тесты: 4
19.06.2014, 13:03     Возведение в вещественную степень
Banddk, у меня тоже такое ощущение. Но что поделать... Зато если разберешься, он прифигеет слегка

Добавлено через 5 минут
к тому же можнт у меня с математикой не лады и можно было сделать в 2 присеста через какой-нибудь хитрый ряд

Добавлено через 9 часов 9 минут
Есть чуть более простой вариант, основанный на том же разложении:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <cmath>
 
using namespace std;
 
 
double simpson(double(*f)(double), double a, double b)
{
    double result = (b - a) / 6;
    result *= f(a) + 4 * f((a + b) / 2) + f(b);
    return result;
}
 
double f(double x)
{
    return 1 / x;
}
 
double my_ln(double x)
{
    if (x == 1)
        return 0;
    if (x <= 0)
        return NAN;
    double result = 0;
    double step = (x - 1) / 100;
    for (double a = 1; a < x; a += step)
        result += simpson(f, a, a + step);
    return result;
}
 
double my_pow(double a, double b, double epsilon)
{
    double result = 1, tmp = 1;
    double m = b * my_ln(a);
    for (int i = 1; abs(tmp) >= epsilon; i++)
    {
        tmp *= m / i;
        result += tmp;
    }
    return result;
}
 
int main()
{
    cout << my_ln(15) << endl;
    cout << my_pow(2, 3, 0.001) << endl;
}
просто убираем экспоненту. По формуле http://www.cyberforum.ru/cgi-bin/latex.cgi?a^x = \sum  \frac{x^n log^n(a)}{n!}.
Соответственно, чуть покороче и попроще. Логарифм тут тоже считается с помощью определенного интеграла через формулу Симпсона (мы помним, что интеграл от 1/x это ln|x|, поэтому интегрируя 1/x можно получить значение логарифма). Другого способа найти логарифм от произвольного числа я не нашел (ряд разлагается только для x от 0 (не включая) до двух. Дальше он расходится.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru