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

Вычисление ln(1 + x) разложением в ряд - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 48, средняя оценка - 4.96
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
01.11.2010, 22:01     Вычисление ln(1 + x) разложением в ряд #1
Всем доброго время суток бьюсь никак не могу въехать как написать программу вычисления ln(1 + x) разложением в ряд в книге дана формула:
ln(1 + x) = x – x^3/3 + x^5/5 +… = ∑((-1)^n * x ^(2n + 1))/(2n + 1)
Как программа будет выглядеть на C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DAgot_
 Аватар для DAgot_
22 / 22 / 1
Регистрация: 03.01.2010
Сообщений: 68
01.11.2010, 22:20     Вычисление ln(1 + x) разложением в ряд #2
C++
1
2
3
double ln(int _x, int _n){
    return (pow(-1, _n) * pow(_x, (2 * n) + 1)) / ((2 * n) + 1);
}
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
01.11.2010, 22:31  [ТС]     Вычисление ln(1 + x) разложением в ряд #3
А для │x│ < 1 она тоже верна?
DAgot_
 Аватар для DAgot_
22 / 22 / 1
Регистрация: 03.01.2010
Сообщений: 68
01.11.2010, 22:44     Вычисление ln(1 + x) разложением в ряд #4
Тогда так:
C++
1
2
3
double ln(double _x, int _n){
    return (pow(-1, _n) * pow(_x, (2 * _n) + 1)) / ((2 * _n) + 1);
}
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
01.11.2010, 22:56  [ТС]     Вычисление ln(1 + x) разложением в ряд #5
Не понятно, а разве не используется итерационное соотношение
aferook
3 / 3 / 0
Регистрация: 31.10.2010
Сообщений: 13
01.11.2010, 22:59     Вычисление ln(1 + x) разложением в ряд #6
Насколько я понимаю это разложение в ряд. Где ты взял формулу?

Для ln(1+x) формула разложения в ряд имеет вид: ∑((((-1)^n+1) * x ^n )/n) = ∑(((-1)^n * x ^(n+1))/(n+1))

Для формулы, которую я написал это выглядит так:


C++
1
2
3
4
5
6
double ln(double x,int threshold){
    double result=0;
    for (int i=1;i<threshold;i++)
        result += (i%2==0?-1:1) * pow(x,i)/i;
    return result;
}
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
02.11.2010, 00:19  [ТС]     Вычисление ln(1 + x) разложением в ряд #7
Нужно как то через итерационное соотношение, но я не знаю какое??? Помогите кто-нибудь
aferook
3 / 3 / 0
Регистрация: 31.10.2010
Сообщений: 13
02.11.2010, 09:46     Вычисление ln(1 + x) разложением в ряд #8
Цитата Сообщение от isaak Посмотреть сообщение
Нужно как то через итерационное соотношение, но я не знаю какое??? Помогите кто-нибудь
Поведай мне что ты понимаешь под "итерационным соотношением".
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
02.11.2010, 11:49  [ТС]     Вычисление ln(1 + x) разложением в ряд #9
Вот точное задание:написать программу вычисления ln(1 + x) разложением в ряд
ln(1 + x) = x – x^3/3 + x^5/5 +… = ∑((-1)^n * x ^(2n + 1))/(2n + 1), где │x│ < 1 вводится пользователем с клавиатуры, а граница ряда определяется как константа. Как будет программа выглядеть на C++? Заранее огромное спасибо.
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
02.11.2010, 14:21  [ТС]     Вычисление ln(1 + x) разложением в ряд #10
Вот попытался сам че то сделать, но все таки не правильно:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;
double main ()
{
double ln(double x,int threshold){
        double result=0;
        for (int i=1;i<threshold;i++)
                result += (i%2==0?-1:1) * pow(x,i)/i;
        return result;
}
Кто-нибудь направте наверный путь пожалуйста
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
02.11.2010, 18:10     Вычисление ln(1 + x) разложением в ряд #11
isaak, функции необходимо описывать за пределами main
DAgot_
 Аватар для DAgot_
22 / 22 / 1
Регистрация: 03.01.2010
Сообщений: 68
02.11.2010, 20:27     Вычисление ln(1 + x) разложением в ряд #12
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>
 
double ln(double x, int threshold){
        double result=0;
        for (int i=1;i<threshold;i++)
                result += (i%2==0?-1:1) * pow(x,i)/i;
        return result;
 
int main (){
 
    double x;
    int n;
 
    std::cout << "Input x: ";
    std::cin >> x;
 
    std::cout << "\nInput n: ";
    std::cin >> n;
 
    std::cout << "\n\nln = " << ln(x,n);
 
    return 0;
}
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
02.11.2010, 21:35  [ТС]     Вычисление ln(1 + x) разложением в ряд #13
Спасибо за ответ DAgot, но, что-то не правильно:

Error 1 error C3861: 'pow': identifier not found c:\users\администратор\documents\visual studio 2008\projects\c++\console\p645\p645\p645.cpp 6 p645
Error 2 error C2601: 'main' : local function definitions are illegal c:\users\администратор\documents\visual studio 2008\projects\c++\console\p645\p645\p645.cpp 9 p645
Error 3 fatal error C1075: end of file found before the left brace '{' at 'c:\users\администратор\documents\visual studio 2008\projects\c++\console\p645\p645\p645.cpp(3)' was matched c:\users\администратор\documents\visual studio 2008\projects\c++\console\p645\p645\p645.cpp 24 p645

M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
02.11.2010, 21:48     Вычисление ln(1 + x) разложением в ряд #14
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
#include <iostream>
#include <cmath> 
 
double ln(double x, int threshold){
        double result=0;
        for (int i=1;i<threshold;i++)
                result += (i%2==0?-1:1) * pow(x,i)/i;
        return result;
}
int main (){
 
    double x;
    int n;
 
    std::cout << "Input x: ";
    std::cin >> x;
 
    std::cout << "\nInput n: ";
    std::cin >> n;
 
    std::cout << "\n\nln = " << ln(x,n);
 
    return 0;
}
DAgot_
 Аватар для DAgot_
22 / 22 / 1
Регистрация: 03.01.2010
Сообщений: 68
02.11.2010, 21:49     Вычисление ln(1 + x) разложением в ряд #15
Только собрался исправить и уже опередили
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2010, 10:15     Вычисление ln(1 + x) разложением в ряд
Еще ссылки по теме:

Вычисление cosh разложением в ряд Тейлора C++
Вычисление функции разложением в ряд Тейлора C++
C++ Вычисление функций разложением в ряд

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

Или воспользуйтесь поиском по форуму:
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
03.11.2010, 10:15  [ТС]     Вычисление ln(1 + x) разложением в ряд #16
Огромное спасибо M128K145, очень помог
Yandex
Объявления
03.11.2010, 10:15     Вычисление ln(1 + x) разложением в ряд
Ответ Создать тему
Опции темы

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