Форум программистов, компьютерный форум 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
 Аватар для Psilon
5738 / 4686 / 619
Регистрация: 10.07.2011
Сообщений: 14,160
Записей в блоге: 5
Завершенные тесты: 4
18.06.2014, 11:05     Возведение в вещественную степень
Banddk, можно попробовать через гамма-функцию. Хотя как-то сложно получается

Добавлено через 20 минут
Banddk, хотя, может, проще будет посчитать
http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}^{b} = {a}^{n}{a}^{f}, n \in Z, f \in (0..1)
после этого можно воспользоваться формулой .
http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}^{f} = {e}^{f*ln(a)}
при этом ряды тейлора для логарифма и экспоненты довольно простые.

Добавлено через 18 минут
Хотя не, логарифм нормально считается только для a in (-1..1)

Добавлено через 2 минуты
Блин, точно. Логарифм можно посчитать через интеграл же.

Добавлено через 20 минут
Короче, держи
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
49
50
51
52
53
54
55
56
57
58
59
60
#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_exp(double x, double epsilon)
{
    double result = 1;
    double m = x;
    for (int i = 2; abs(m) >= epsilon; i++)
    {
        result += m;
        m *= x / i;
    }
    return result;
}
 
double my_pow(double a, double b, double epsilon)
{
    if (b < 0)
        return my_pow(1 / a, -b, epsilon);
    int div = (int)b;
    double integerPart = 1;
    for (int i = 0; i < div; i++)
        integerPart *= a;
    return integerPart * my_exp((b - div) * my_ln(a), epsilon);
}
 
int main()
{   
    cout << my_ln(15) << endl;
    cout << my_exp(3, 0.001) << endl;
    cout << my_pow(2, 3, 0.001) << endl;
}
если нужны пояснения - обращайся.
 
Текущее время: 09:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru