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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Вопрос о перегрузке ++/-- http://www.cyberforum.ru/cpp-beginners/thread432543.html
Рассмотрим простой пример постфиксной и префиксной операции инкремента: int main() { int i=0; cout<< i++; cout<< ++i; _getch(); return 0; }
C++ Можно ли это написать как то проще #include <cstdlib> #include <iostream> #include <stdlib.h> #include <math.h> using namespace std; /* В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) количество... http://www.cyberforum.ru/cpp-beginners/thread432541.html
Файл структур: сортировка по выбираемому пользователем полю C++
Имеется файл, состоящий из отдельных строк структуры. Нужно написать сортировку по выбираемому пользователем полю В файле 5 полей: 1-Фамилия 2-Имя 3-Отчество 4-Группа 5-Оценка
C++ Хелп с POST на C++
Друзья. Помогите переписать код на C++ $sDomain = 'ХХХ.ХХХ.ХХХ.50' ;домен или ip-адрес $iPort = 80 ;порт $sParameters =...
C++ Загвостка с функцией Y=f(xi) http://www.cyberforum.ru/cpp-beginners/thread432526.html
Помогите ,пожалуйста ,закончить код. Начальная задача-Составить и выполнить программы циклической структуры расчета Y=f(xi), где xi еX код ,который нужно исправить #define _USE_MATH_DEFINES...
C++ Интересный Экзамен(наследование и ООП) вот такие задачки, просто совсем не понятно как подступить....шаблоны STL и контейнеры не знаю,хотел без нихх...понял что функции,будет базовый класс и два наследника....но как,что,где...( подробнее

Показать сообщение отдельно
Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
22.01.2012, 00:55
Очень интересное первое задание.
Вот мои мысли.
1) Не указано количество шагов ( указана бесконечность ) - значит считаем с точностью 10^-4, а это 0.0001.
2) Но тут мы видим, что очередной сомножитель считается по формуле, в которой к результату деления всегда прибавляется единица.
3) Вывод - таким образом очередной сомножитель по модулю будет всегда больше точности 10^-4, кроме случая, когда результат деления будет отрицательным и разность этого результата с единицей будет по модулю меньше точности 10^-4.
4) И чтобы достичь этого случая x должен быть равен близко к 3 / 2 pi и k должен быть равен единице.
А это единственный случай в цикле - первая его итерация, когда k равно единице, при условии, что x будет иметь значение близкое к 3/2 pi.

Вот код программы. Если при запуске ввести x равное 4.71225 или очень близкое к этому значение, то выполнится всего одна итерация цикла. Если ввести значение отличающиеся от 4.71225 буквально на 0.15 - 0.2, то произойдет зацикливание.
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
#include <iostream>
#include <cmath>
using namespace std;
 
#define EPS 1E-4
 
unsigned int factorial( unsigned int n ) {
    if ( n <= 1 )
        return 1;
    return ( n * factorial( n - 1 ) );
}
 
double calc_func( double x ){
    double curr = 1.0, func = 1.0;
    unsigned int k = 1;
 
    while ( fabs(curr) >= EPS ) {
        curr =  1 + sin( k * x ) / factorial( k );
        func *= curr;
        ++k;
    }
    return func;
}
 
int main() {
    double x;
 
    cout << "Введите x" << endl;
    cin >> x;
    cout << "Значение функции равно " << calc_func( x ) << endl;
 
    return 0;
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru