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

Вычисление функции log(1+x) разложением в ряд Тейлора - C++

Восстановить пароль Регистрация
 
MegaRoks
 Аватар для MegaRoks
1 / 1 / 0
Регистрация: 25.12.2014
Сообщений: 133
03.10.2015, 13:06     Вычисление функции log(1+x) разложением в ряд Тейлора #1
Помогите запихать сие деянии в цикл ln(1 + x) = x −x^2/2 + x^3/3 −x^4/4+ . . . , |x| < 1
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5956 / 5561 / 1788
Регистрация: 18.12.2011
Сообщений: 14,210
Завершенные тесты: 1
03.10.2015, 13:12     Вычисление функции log(1+x) разложением в ряд Тейлора #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
double my_ln (double x)
{
    const double eps=1e-6;
    const double lnln=M_LN2; //ln2
    int k=0;
    while(x>2.0)
    { 
        x/=2.0;
        k++;
    }
    x-=1.;
    double s=0;
    int n=1;
    double an=x;
    while (fabs(an)>eps)
    {
        s+=an;
        ++n;
        an*=-x*(n-1)/n;
    }
    s+=k*lnln;
    return s;
}
MegaRoks
 Аватар для MegaRoks
1 / 1 / 0
Регистрация: 25.12.2014
Сообщений: 133
03.10.2015, 15:44  [ТС]     Вычисление функции log(1+x) разложением в ряд Тейлора #3
C++ (Qt)
1
2
3
4
5
6
7
[quote="zss;8145430"]while (fabs(an)>eps)
* * {
* * * * s+=an;
* * * * ++n;
* * * * an*=-x*(n-1)/n;
* * }
* * s+=k*lnln;[/quote]
Вот что то мне надо же??

Добавлено через 1 час 50 минут
Что такое lnln? у меня не выходит

Добавлено через 26 минут
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <conio.h>
#include <locale.h>
 
int main ()
{
    setlocale(LC_ALL, "Russian_Russia.1251");
    float s = 0, r;
    int i,n;
    printf ("Введите N ");
    scanf ("%d",&N);
    for ( i=1; i<=n; i++ )
        {   
 
        }
    printf ("Сумма= %6.2f\n ",s);
    getch();
}
Не могу запихать суда это
zss
Модератор
Эксперт С++
 Аватар для zss
5956 / 5561 / 1788
Регистрация: 18.12.2011
Сообщений: 14,210
Завершенные тесты: 1
03.10.2015, 15:58     Вычисление функции log(1+x) разложением в ряд Тейлора #4
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
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#define _USE_MATH_DEFINES
#include <math.h>
// вычисление ln(x) разложением в ряд Тейлора в точке x=1
double my_ln (double x)
{
    const double eps=1e-9;
    const double lnln=M_LN2; //ln2
    int k=0;
    while(x>2.0)
    { 
        x/=2.0;
        k++;
    }
    x-=1.;
    double s=0;
    int n=1;
    double an=x;
    while (fabs(an)>eps)
    {
        s+=an;
        an*=-x*n/(n+1);
        ++n;
   }
    s+=k*lnln;
    return s;
} 
int main ()
{
    setlocale(LC_ALL, "Russian_Russia.1251");
    double y1,y2,x;
    printf ("Введите  x:");
    scanf ("%lf",&x);
    y1=log(x);
    y2=my_ln(x);
  
    printf ("x= %6.2lf log(x)=%lf моя функция=%lf\n ",x,y1,y2);
    getch();
    return 0;
}
MegaRoks
 Аватар для MegaRoks
1 / 1 / 0
Регистрация: 25.12.2014
Сообщений: 133
03.10.2015, 16:07  [ТС]     Вычисление функции log(1+x) разложением в ряд Тейлора #5
Для заданных с клавиатуры значений переменных x и n вычислить: Z = LN(1+x) = x - x2/2 + x3/3 - ... + (-1)n-1 xn/n + ... (|x|<1).

Вот по этому
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <conio.h>
void main ()
{
 float s = 0, r;
 int i,N;
 clrscr();      //очистка экрана
 printf ("\n Введите N ");
 scanf ("%d",&N);
 for ( i=1; i<=N; i++ )
  { 
     r = 1.0/ (i*i);
     s+ = r; // s = s + r
  }
printf ("Сумма = %6.2f\n ",s);
getch();
}
я не могу рассказать это учителю
zss
Модератор
Эксперт С++
 Аватар для zss
5956 / 5561 / 1788
Регистрация: 18.12.2011
Сообщений: 14,210
Завершенные тесты: 1
03.10.2015, 16:53     Вычисление функции log(1+x) разложением в ряд Тейлора #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int main ()
{
    setlocale(LC_ALL, "Russian_Russia.1251");
    printf ("Введите  0<x<1:");
    double x;scanf ("%lf",&x);
    printf ("\n Введите N ");
    int N; scanf ("%d",&N);
    double s=0;
    int n=1;
    double an=x;
    while (n<=N)
    {
        s+=an;
        an*=-x*n/(n+1);
        ++n;
   }
  
    printf ("x= %6.2lf log(1+x)=%lf моя функция=%lf\n ",x,log(1+x),s);
    getch();
    return 0;
}
Yandex
Объявления
03.10.2015, 16:53     Вычисление функции log(1+x) разложением в ряд Тейлора
Ответ Создать тему
Опции темы

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