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

Переделать код в рядах Тейлора - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ как сделать через функцию пользователя и чтобы размер мог вводить пользователь ? http://www.cyberforum.ru/cpp-beginners/thread898955.html
#include <iostream> #include <stdlib.h> #include <time.h> #include <math.h> #include <conio.h> using namespace std; int main()
C++ Ханойская башня (итеративно) Люди, кто может проверить мой быдлокод на правильность... #include "iostream" #include "stdlib.h" #include "time.h" int main() { http://www.cyberforum.ru/cpp-beginners/thread898952.html
Ошибка с fstream C++
При создании исполняемого файла (т.е release версии) вылезает ошибка: raised exception class EAccessViolation with message 'Access violation at address 004375E1. Read of address 00000000'.Process...
C++ Функция, возвращающая количество столбцов без нулей
Задание: программа, обладающая двумя функциями, одна из которых находит количество столбцов, введенной с клавиатуры прямоугольной матрицы, в которых нет нулевых элементов, вторая должна сортировкой...
C++ Map из самописных классов http://www.cyberforum.ru/cpp-beginners/thread898945.html
Доброго всем вечера! Возник вопрос по созданию карты между двумя самописными классами Author и Book (автор отображается в книгу). Объекты класса содержат разные методы. Для создания карты ключем в...
C++ Циклы и их оптимизация Доброго времени суток! Имеется код программы, необходимо оптимизировать вложенный цикл чтобы время потраченное на выполнение программы уменьшилось после оптимизации на заметное число >1 секунды.... подробнее

Показать сообщение отдельно
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,929
12.06.2013, 04:15
Цитата Сообщение от Wolkodav Посмотреть сообщение
for(double x=xstart;x <= xend; x+=xdelta)
{
if (x>0)
continue;
наверное можно и break; да и вообще описать в условии

С кубическим синусом:
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
#include <iostream>
#include <iomanip>
#include <cmath>
 
// формула вычисления факториала
unsigned long long fact(const int n)
{
    return n == 1 ? 1 : n * fact(n-1);
}
 
// sum - результат
// n - текущий номер последовательности
// x - собственно аргумент функции sin^3(x)
// eps - точность
double f(double sum, const int n, const double x, const double eps)
{
    double var = pow(3, 2*n+1) - 3; // 3^(2n+1) - 3) *
    if (n % 2 == 0)                 // (-1)^(n+1)    *
        var *= -1;
    var *= pow(x, (2*n+1));         // x^(2n+1)      /
    var /= (4*fact(2*n+1));         // 4*(2n+1)!
    sum += var; // добавляем к сумме ряда очередной элемент
    if (fabs(var) >= eps)
        return f(sum, n+1, x, eps);
    else
        return sum;
}
 
int main()
{
    double step, min, max, eps;
    std::cout << "Enter Xbegin: ";
    std::cin >> min;
    do
    {
        std::cout << "Enter Xend: ";
        std::cin >> max;
    } while (max < min);
    do
    {
        std::cout << "Enter Xdelta: ";
        std::cin >> step;
    } while (step <= 0);
    do
    {
        std::cout << "Enter eps: ";
        std::cin >> eps;
    } while (eps < 0 || eps > 1);
 
    for (double x = min; x <= max; x += step)
    {
        std::cout << "sin^3(" << std::fixed
            << std::setprecision(log10(1/step)) << x << ") = "
            << std::setprecision(log10(1/eps) + 1) << pow(sin(x), 3) << " == "
            << f(0, 1, x, eps) << std::endl;
    }
}
эх, сделал сначала через вычисление следующего члена через предыдущий, а потом потер

Добавлено через 27 минут
С логарифмом
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
#include <iostream>
#include <iomanip>
#include <cmath>
 
// sum - результат
// nom - числитель последнего члена последовательности
// n - текущий номер последовательности
// x - собственно аргумент функции sin^3(x)
// eps - точность
double calc(double sum, double nom, const int n, const double x, const double eps)
{
    nom *= (1-x);
    sum += nom / n;
    if (fabs(nom/n) >= eps)
        return calc(sum, nom, n+1, x, eps);
    else
        return sum;
}
 
// функция для принятия аргументов и передачи их рекурсивной функции с заданными
// числовыми значениями для начальных вспомогательных параметров
double f(const double x, const double eps)
{
    return calc(0, -1, 1, x, eps);
}
 
int main()
{
    double step, min, max, eps;
    std::cout << "Enter Xbegin: ";
    std::cin >> min;
    do
    {
        std::cout << "Enter Xend: ";
        std::cin >> max;
    } while (max < min);
    do
    {
        std::cout << "Enter Xdelta: ";
        std::cin >> step;
    } while (step <= 0);
    do
    {
        std::cout << "Enter eps: ";
        std::cin >> eps;
    } while (eps < 0 || eps > 1);
 
    for (double x = min; x <= max; x += step)
    {
        std::cout << "ln(" << std::fixed
            << std::setprecision(log10(1/step)) << x << ") = "
            << std::setprecision(log10(1/eps) + 1) << log(x) << " == "
            << f(x, eps) << std::endl;
    }
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru