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

Мат функция - C++

Восстановить пароль Регистрация
 
LTony
0 / 0 / 0
Регистрация: 23.01.2012
Сообщений: 21
07.02.2012, 18:49     Мат функция #1
Дано действительное число x. Вычислить значене y с помощью стандартной функции и с помошью ряда с точностью 0,0001

http://www.cyberforum.ru/cgi-bin/latex.cgi?y=cosx=1-\frac{{x}^{2}}{2!}+\frac{{x}^{4}}{4!}-...+{(-1)}^{n}\frac{{x}^{2n}}{(2n)!}+...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2012, 18:49     Мат функция
Посмотрите здесь:

C++ Мат. функция
C++ Мат. вычисления
C++ Мат. функция
C++ мат. логика C++
C++ Мат в шахматах.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
08.02.2012, 18:50     Мат функция #2
Цитата Сообщение от LTony Посмотреть сообщение
Дано действительное число x. Вычислить значене y с помощью стандартной функции и с помошью ряда с точностью 0,0001

http://www.cyberforum.ru/cgi-bin/latex.cgi?y=cosx=1-\frac{{x}^{2}}{2!}+\frac{{x}^{4}}{4!}-...+{(-1)}^{n}\frac{{x}^{2n}}{(2n)!}+...
- см сюда
http://www.cyberforum.ru/faq/thread4...ml#post2452211
и сюда arctg(x) с помощью разложения
LTony
0 / 0 / 0
Регистрация: 23.01.2012
Сообщений: 21
10.02.2012, 03:11  [ТС]     Мат функция #3
Врядли мне это поможет т.к язык С++ не знаю
odip
Эксперт C++
 Аватар для odip
7224 / 3286 / 58
Регистрация: 17.06.2009
Сообщений: 14,165
10.02.2012, 10:32     Мат функция #4
Да там такой C++ который в C переделать нетрудно
-=ЮрА=-
Заблокирован
Автор FAQ
10.02.2012, 11:22     Мат функция #5
Цитата Сообщение от LTony Посмотреть сообщение
т.к язык С++ не знаю
LTony, коды даны в Си, если сложно разделить a[n + 1] на a[n] тогда изволь так и писать - мне надо код для копипаста...

Итак
http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{n} = {(-1)}^{n}*\frac{{x}^{2*n}}{(2n)!}
http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{n + 1} = {(-1)}^{(n + 1)}*\frac{{x}^{2*(n + 1)}}{(2*(n + 1))!}
Находим рекуррентный сомножитель
[http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{{a}_{n + 1}}{{a}_{n}} = \frac{{(-1)}^{(n + 1)}*\frac{{x}^{2*(n + 1)}}{(2*(n + 1))!}}{{(-1)}^{n}*\frac{{x}^{2*n}}{(2n)!}} = (-1)*{x}^{2}*\frac{2n!}{2*n!*(n + 1)*(n + 2)} = \frac{(-1)*{x}^{2}}{(n + 1)*(n + 2)}

Теперь идём в этот топик
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
arctg(x) с помощью разложения
и корректируем double S(double x, double e)
Она будет выглядеть вот так
C
1
2
3
4
5
6
7
8
9
10
11
12
double S(double x, double e)
{
    double ak = x, sum = 0;
    long k = 0;
    while(e < fabs(ak))//Âîò Г®Г*Г® óñëîâèå îêîГ*Г·Г*Г*ГЁГї ГЁГІГҐГ°Г*öèîГ*Г*îãî ïðîöåññГ*
    {
        sum += ak;
        ak  *= (-1)*x*x/((k + 1)*(k + 2));
        k   = k + 1;
    }
    return sum;
}
Затем заменяем double S(double x, double e) здесь
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
http://www.cyberforum.ru/faq/thread4...ml#post2452211
И получаем весь алгоритм в целом
-=ЮрА=-
Заблокирован
Автор FAQ
10.02.2012, 11:25     Мат функция #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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
//Ïðîòîòèï ГЅГІГ*ëëîГ*îé ГґГіГ*êöèè ïîëüçîâГ*òåëÿ
//âîçâðГ*Г№Г*åìîå Г§Г*Г*Г·ГҐГ*ГЁГҐ - Г§Г*Г*Г·ГҐГ*ГЁГҐ cos(x) Гў òî÷êå Гµ
double Y(double x)
{
    return cos(x);
}
 
double S(double x, double e)
{
    double ak = 1, sum = 0;
    long k = 0;
    while(e < fabs(ak))//Âîò Г®Г*Г® óñëîâèå îêîГ*Г·Г*Г*ГЁГї ГЁГІГҐГ°Г*öèîГ*Г*îãî ïðîöåññГ*
    {
        sum += ak;
        ak  *= (-1)*x*x/((k + 1)*(k + 2));
        k   = k + 1;
    }
    return sum;
}
 
int main()
{
    double e = 0, x = 0;
    while(true)//ÄåëГ*Гѕ ГЎГҐГ±ГЄГ®Г*ГҐГ·Г*ûé ââîä
    //äëÿ Г§Г*âåðøåГ*ГЁГї Г°Г*áîòû ïðîñòî Г§Г*êðûâГ*ГҐГ¬ îêГ*Г® ГЄГ®Г*ñîëè
    {
        printf("Enter x : ");scanf("%lf",&x);
        printf("Enter e : ");scanf("%lf",&e);
        printf("Y(x) = %lf\n",Y(x));
        printf("S(x) = %lf\n",S(x,e));
        //ÏîñëåäГ*ГЁГҐ 2 ГґГіГ*êöèè system ìîæГ*Г® Г*ГҐ ïðèìåГ*ГїГІГј
        system("pause");//Ñòîï-òî÷êГ* ïåðåä Г*Г*Г·Г*ëîì Г*îâîãî ââîäГ*
        system("cls");//Г—ГЁГ±ГІГЄГ* ГЅГЄГ°Г*Г*Г*
    }
    return 0;
}
PS:LTony, мой ответ в данном топике с выкладками и описанием занял 10 мин, неужели так сложно было это всё сделать самому???
Миниатюры
Мат функция  
-=ЮрА=-
Заблокирован
Автор FAQ
10.02.2012, 11:34     Мат функция #7
А и да, всем тем кто усомниться в точности разложения, т.к.
0,880100 - 0,877583 = 0,002517 отвечу
Во первых: под точностью понимается относительная погрешность разложения
http://www.cyberforum.ru/cgi-bin/latex.cgi?\varepsilon = |\frac{0.880100 - 0.877583}{0.880100}| = 0.0029
И наверное опять возникает вопрос, а почему задали с 4-мя нулями, а получили с 2-мя??
Отвечаю:
Во вторых: разложение в ряд также даёт погрешность для разных значений х
(чем меньше значение х тем точнее значение функции описывает ряд - см скрин)
Миниатюры
Мат функция  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2012, 11:59     Мат функция
Еще ссылки по теме:

C++ Шах и Мат
C++ мат.моделирование
C++ Мат. действия в цикле for

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

Или воспользуйтесь поиском по форуму:
LTony
0 / 0 / 0
Регистрация: 23.01.2012
Сообщений: 21
10.02.2012, 11:59  [ТС]     Мат функция #8
Огромное спасибо!!)
Yandex
Объявления
10.02.2012, 11:59     Мат функция
Ответ Создать тему
Опции темы

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