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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Аркалык
18 / 18 / 7
Регистрация: 24.09.2013
Сообщений: 156
#1

Вычисления таблицы значений суммы S(x) (не вычисляется логарифм) - C++

03.12.2013, 16:59. Просмотров 231. Ответов 7
Метки нет (Все метки)

Составить программу вычисления таблицы значений суммы S(x):
http://www.cyberforum.ru/cgi-bin/latex.cgi?S(x)=\sum_{k=0}^{n}\frac{{\ln}^{k}3}{k!}{x}^{k}
Еще одна схожая задача, но тут не читается логарифм (ln). Нужен совет программист-математиков.
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
#include<iostream>
#include<cmath>
#define n 10
using namespace std;
 
int fact(int x)
{
    if(x<=1) return 1;
    return x*fact(x-1);
}
int main()
{
    int x, k=0;
    float s=0,y;
    cout<<"Vvedite x: "<<endl;
    cin>>x;
    do
    {
           y=pow(ln,k)*3/fact(k)*pow(x,k);
           s+=y;
           k++;
           }
    while(y>n);
    cout<<s<<endl;
    system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2013, 16:59     Вычисления таблицы значений суммы S(x) (не вычисляется логарифм)
Посмотрите здесь:

C++ Разработать программу табулирования (вычисления таблицы значений) функции
C++ Составить программы вычисления значений суммы и произведений ряда
Составить программу вычисления и печати таблицы значений функции, которая является суммой бесконечного ряда C++
Составить программу вычисления и печати таблицы значений функции при заданных значениях параметров C++
вычисления таблицы значений суммы S(x) C++
C++ Составить программу вычисления и печати таблицы значений функции, которая является суммой бесконечного ряда
C++ Составить программу вычисления и печати таблицы значений функции при заданных значениях параметров
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт С++
4956 / 3032 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
03.12.2013, 20:29     Вычисления таблицы значений суммы S(x) (не вычисляется логарифм) #2
Цитата Сообщение от Аркалык Посмотреть сообщение
Нужен совет программист-математиков.
Да нет, тут достаточно знать школьную программу. Знай вы её, вы бы знали, что логарифм - это функция, и вычисляется она от некоторого аргумента. А в степень возводится уже результат её вычисления.
C++
1
y=pow(log(3.0), k) / fact(k) * pow(x, k);
Аркалык
18 / 18 / 7
Регистрация: 24.09.2013
Сообщений: 156
03.12.2013, 20:33  [ТС]     Вычисления таблицы значений суммы S(x) (не вычисляется логарифм) #3
silent_1991, Спасибо большое!!!
silent_1991
03.12.2013, 20:35
  #4
 Комментарий модератора 
Аркалык, на будущее: пункт 5.16 правил: Запрещено создавать темы с множеством вопросов во всех разделах, кроме разделов платных услуг. Один вопрос - одна тема.
Аркалык
18 / 18 / 7
Регистрация: 24.09.2013
Сообщений: 156
03.12.2013, 20:59  [ТС]     Вычисления таблицы значений суммы S(x) (не вычисляется логарифм) #5
silent_1991, Все так же, не компилируется код.
zss
Модератор
Эксперт С++
6245 / 5848 / 1891
Регистрация: 18.12.2011
Сообщений: 14,982
Завершенные тесты: 1
03.12.2013, 21:09     Вычисления таблицы значений суммы S(x) (не вычисляется логарифм) #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
#include<iostream>
#include<cmath>
sing namespace std;
 
int main()
{
    int k,n;
    double s,a,x;
    cout<<"Vvedite x: "<<endl;
    cin>>x;
    cout<<"Vvedite n: "<<endl;
    cin>>n;
    a=1;
    s=a;
    double L3=log(3.0);
    for(k=0;k<=n;k++)
    {
           a*=L3*x/(k+1);
           s+=a;
    }
    cout<<s<<endl;
    system("pause");
}
Аркалык
18 / 18 / 7
Регистрация: 24.09.2013
Сообщений: 156
03.12.2013, 21:17  [ТС]     Вычисления таблицы значений суммы S(x) (не вычисляется логарифм) #7
zss, Что-то вы перемудрили. Но, конечно Спасибо Большое!!!
А где мой факториал?
Можно решить просто так? У меня так выходит.
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
#include<iostream>
#include<cmath>
#define n 10
using namespace std;
 
int fact(int x)
{
    if(x<=1) return 1;
    return x*fact(x-1);
}
int main()
{
    int k=0;
    float s=0,y;
    double L3=log(3.0),x;
    cout<<"Vvedite x: "<<endl;
    cin>>x;
    do
    {
           y=pow(L3,x)/fact(k)*pow(x,k);
           s+=y;
           k++;
           }
    while(y>n);
    cout<<s<<endl;
    system("pause");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.12.2013, 21:35     Вычисления таблицы значений суммы S(x) (не вычисляется логарифм)
Еще ссылки по теме:

Функция вычисления таблицы значений математического выражения C++
C++ Разработать класс «Интеграл» для вычисления таблицы значений интеграла (ООП)
Составить программу для вычисления таблицы значений заданной функции (циклические алгоритмы) C++
Создать программы для вычисления значений функции и суммы ряда! C++

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт С++
4956 / 3032 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
03.12.2013, 21:35     Вычисления таблицы значений суммы S(x) (не вычисляется логарифм) #8
Цитата Сообщение от Аркалык Посмотреть сообщение
Что-то вы перемудрили
Никто ничего не перемудрил. Рассказываю:
1. Нет смысла вычислять логарифм на каждой итерации, поскольку ln(3) - константа.
2. Нет смысла вычислять факториал каждый раз, потому что на очередной итерации вычисляется факториал числа, на единицу большего того, что было на предыдущей итерации. Таким образом, достаточно результат вычисления предыдущего факториала умножить на очередной член. Предыдущий факториал естественным образом вычисляется из предыдущего по отношению к нему по той же логике, и так до элементарного случая 0!.
3. Нет смысла вычислять степени на каждой итерации по тем же причинам, по которым нет смысла в вычислении факториала каждый раз.
А вообще, это рекуррентная последовательность. Чтобы вичислить её множитель, надо (k+1)-й член разделить на k-й:
http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{k}=\frac{{\ln}^{k}3}{k!}{x}^{k}
http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{k+1}=\frac{{\ln}^{k+1}3}{(k+1)!}{x}^{k+1}=\frac{{\ln}^{k}3 \cdot \ln 3}{k!(k+1)}{x}^{k} \cdot x
http://www.cyberforum.ru/cgi-bin/latex.cgi?a=\frac{{\ln}^{k}3 \cdot \ln 3 \cdot {x}^{k} \cdot x}{k!(k+1)}\cdot \frac{k!}{{\ln}^{k}3 \cdot {x}^{k}}=\frac{\ln 3}{k+1}x
Что и получилось у zss. Стандартный приём, к тому же, позволяющий значительно оптимизировать вычисления.
Yandex
Объявления
03.12.2013, 21:35     Вычисления таблицы значений суммы S(x) (не вычисляется логарифм)
Ответ Создать тему
Опции темы

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