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

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

Войти
Регистрация
Восстановить пароль
 
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
#1

Вычислить функции с использованием их разложения в степенной ряд. Функции и Перегрузка функций - C++

06.12.2013, 09:59. Просмотров 796. Ответов 8
Метки нет (Все метки)

Добрый день. Дана лабораторная работа, (см. ниже 2 скриншота) по заданию нужно вычислить функции с использованием их разложения в степенной ряд (функции с передачей параметров по значению).

Я вроде бы выполнил условия, результаты видны, но не у верен в правильности, т.к. читал немного литературы и смотрел примеры. Результат - мой код внизу. А главное, не пойму как внедрить перегрузку функций.

Пожалуйста дайте совет как лучше сделать и правильно ли я сделал.
До этого без проблем выполнил 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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <cstdlib>
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
 
unsigned long long factorial(unsigned long long i) //вычисление факториала
{
    if (i == 0) 
        return 1;
    else 
        return i * factorial (i - 1);
}
 
int main()
{ 
setlocale(LC_ALL, "Russian"); // функция локализации вызывается только один раз
double  a, b, e;
int N;
    cout<<" Данные по варианту:"<< endl;
    cout<<" Разложение в ряд функций f(x): S=1+(x/1!)+(x^2/2!)+...+(xn/n!)"<< endl;
    cout<<" Диапазон изменения аргумента: a=1 b=2"<< endl;
    cout<<" N = 15: "<< endl;
    cout<<" Функций f(x) - сумма ряда (для проверки): S=e^x"<< endl;
    cout<<" eps близкое к нулю положительное число, например, 0.1, 0.01, 0.001, 0.0001"<< endl;
    cout<<" Введите Данные:"<< endl;
do
    {
        cout<<" Введитеи интервал а:"<< endl; cin>>a;// интервал
        cout<<" Введите интервал b:"<< endl; cin>>b;// интервал
    }while(a>=b);//проверка условий 
do
    {
        cout<<" Введите N:"<< endl; cin>>N;// диапазон изменения аргумента
 
    }while(N<1);//проверка условий 
do
    {
        cout<<"Введите eps: "; //точность 
        cin>>e;
    } while(e>0.1 || e<0.0001); //0.0001 < e < 0.1
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<"x"; // таблица
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<"Sn";
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<"Se";
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<"S"<<endl;
float x,h=(b-a)/10,sn=0,se=0,t,y; //вычисление шага
int i,j;
for(x=a;x<=b;x+=h)//вычисление x
{
    sn=x;se=x; //вычисление присваиваем значение х
    for(i=1;i<=N;i++)
{
    sn+=pow(x,i)/factorial(i);//правельное ли вычисление по формуле и факториала?
};
    j=1;
do 
{
    t=pow(x,j)/factorial(j);
    j++;se+=t;
} while(t>e);
    y=exp(x);
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<x; // заполнение таблицы
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<sn;
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<se;
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<y<<endl;
}
system("PAUSE"); 
return 0;
}

Благодарю всяк входящего сюда, особенно тех кто не оставил без внимания данный пост. Вдруг кому то моя тема поможет в решение подобной задачи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2013, 09:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычислить функции с использованием их разложения в степенной ряд. Функции и Перегрузка функций (C++):

Вычисление функций с использованием их разложения в степенной ряд - C++
помогите пожалуйста закончить лабу, не правильно получается цикл SE и, если несложно, помогите с оформлением в отдельные функции Буду...

Вычисление функций с использованием их разложения в степенной ряд - C++
Вычисление функций с использованием их разложения в степенной ряд. Вычислить функцию S= f(x), используя ее разложение в степенной ряд ...

Вычисление функций с использованием их разложения в степенной ряд - C++
&quot;Вычисление функций с использованием их разложения в степенной ряд&quot; Цель: Практика в организации итерационных и арифметических...

Вычисление функций с использованием их разложения в степенной ряд - C++
Помогите пожалуйста с задачей: Постановка задачи: Для х изменяющегося от a до b с шагом (b-a)/k, где (k=10), вычислить функцию f(x),...

Вычисление функций с использованием их разложения в степенной ряд - C++ - C++
http://http://www.cyberforum.ru/cpp-beginners/thread435049.html#post2443082 В этой теме при вычислении функции с использованием её...

Вычисление функций с использованием их разложения в степенной ряд - C++
Здраствуйте, форумчане!!! У меня такая задачка!!!! Для х изменяющегося от a до b с шагом (b-a)/k, где (k=10), вычислить функцию f(x),...

8
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
06.12.2013, 19:18  [ТС] #2
Не кому подсказать?(

Добавлено через 3 часа 27 минут
Прошу Совета!
0
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
08.12.2013, 01:11  [ТС] #3
ап?
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
08.12.2013, 01:37 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
double My_exp(double x, int N)
{
   double total = 1. + x, sum = x;
 
   for (int i = 2; i <= N; i++)
   {
      sum *= x / i;
      total += sum;
   }
 
   return total;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
double My_exp(double x, double eps)
{
   double total = 1. + x, sum = x;
   int i = 2;
 
   while (sum > eps)
   {
      sum *= x / i;
      total += sum;
      i++;
    }
 
   return total;
}
1
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
08.12.2013, 15:14  [ТС] #5
Цитата Сообщение от kazak Посмотреть сообщение
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
double My_exp(double x, int N)
{
   double total = 1. + x, sum = x;
 
   for (int i = 2; i <= N; i++)
   {
      sum *= x / i;
      total += sum;
   }
 
   return total;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
double My_exp(double x, double eps)
{
   double total = 1. + x, sum = x;
   int i = 2;
 
   while (sum > eps)
   {
      sum *= x / i;
      total += sum;
      i++;
    }
 
   return total;
}


Спасибо за ответ, пока правда не понял как внедрить. Что-то голова не варит, или недостаточно теории. Сижу ломаю голову. Понял, только то, что pow(x,1) должен вроде складывать значения pow(x,n) и факториал кажется так же.
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
08.12.2013, 20:55 #6
Цитата Сообщение от о_О_Кто_здесь Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
float x,h=(b-a)/10,sn=0,se=0,t,y; //вычисление шага
int i,j;
for(x=a;x<=b;x+=h)//вычисление x
{
* * sn=x;se=x; //вычисление присваиваем значение х
* * for(i=1;i<=N;i++)
{
* * sn+=pow(x,i)/factorial(i);//правельное ли вычисление по формуле и факториала?
};
* * j=1;
do 
{
* * t=pow(x,j)/factorial(j);
* * j++;se+=t;
} while(t>e);
* * y=exp(x);
* * cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<x; // заполнение таблицы
* * cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<sn;
* * cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<se;
* * cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<y<<endl;
}
C++
1
2
3
4
5
6
7
8
float x=a,h=(b-a)/10; //вычисление шага
for(int i = 1;i<=10;i++)//вычисление x
{
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<x; // заполнение таблицы
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<Myexp(x, N);
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<Myexp(x, e);
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<exp(x)<<endl;
}
Не забудьте добавить описание функций Myexp.
1
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
08.12.2013, 21:45  [ТС] #7
Цитата Сообщение от kazak Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
float x=a,h=(b-a)/10; //вычисление шага
for(int i = 1;i<=10;i++)//вычисление x
{
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<x; // заполнение таблицы
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<Myexp(x, N);
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<Myexp(x, e);
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<exp(x)<<endl;
}
Не забудьте добавить описание функций Myexp.
Огромная благодарность Вам! Более менее моя голова чему то набирается благодаря Вам!

Только, вроде, вот тут
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
float x=a,h=(b-a)/10; //вычисление шага
for(int i = 1;i<=10;i++)//вычисление x
{
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<x; // заполнение таблицы
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<Myexp(x, N);
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<Myexp(x, e);
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<exp(x)<<endl;
}
Вычислить функции с использованием их разложения в степенной ряд. Функции и Перегрузка функций

Должно быть так?
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
h=(b-a)/10; //вычисление шага
for(x=a;x<=b;x+=h)//вычисление x
    {
        cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<x; // заполнение таблицы
        cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<My_exp(x, N);
        cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<My_exp(x, e);
        cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<exp(x)<<endl;
    }
Вычислить функции с использованием их разложения в степенной ряд. Функции и Перегрузка функций

иначе он присвоит х=а и далее не увеличивает х на шаг.
Надеюсь я ничего не путаю. Еще раз спасибо за отклик.
0
kazak
3035 / 2356 / 155
Регистрация: 11.03.2009
Сообщений: 5,402
Завершенные тесты: 1
08.12.2013, 23:03 #8
Я там забыл дописать
C++
1
2
3
4
5
6
7
8
9
float x=a,h=(b-a)/10; //вычисление шага
for(int i = 0;i<=10;i++)//вычисление x
{
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<x; // заполнение таблицы
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<Myexp(x, N);
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<Myexp(x, e);
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<exp(x)<<endl;
    x += h;
}
Цитата Сообщение от о_О_Кто_здесь Посмотреть сообщение
Должно быть так?
Так лучше не делать, так как из-за специфичного формата чисел с плавающей точкой их нельзя напрямую сравнивать на равенство. Если Вы присмотритесь к своему варианту, то можете заметить, что в таблице отсутствует результат для значения b. Более подробно узнать можно тут http://habrahabr.ru/post/112953/
1
о_О_Кто_здесь
11 / 11 / 1
Регистрация: 06.06.2011
Сообщений: 152
08.12.2013, 23:39  [ТС] #9
Цитата Сообщение от kazak Посмотреть сообщение
Я там забыл дописать
C++
1
2
3
4
5
6
7
8
9
float x=a,h=(b-a)/10; //вычисление шага
for(int i = 0;i<=10;i++)//вычисление x
{
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<x; // заполнение таблицы
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<Myexp(x, N);
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<Myexp(x, e);
    cout<<setw(15)<<setprecision(6)<<setiosflags(ios:: fixed)<<exp(x)<<endl;
    x += h;
}
Так лучше не делать, так как из-за специфичного формата чисел с плавающей точкой их нельзя напрямую сравнивать на равенство. Если Вы присмотритесь к своему варианту, то можете заметить, что в таблице отсутствует результат для значения b. Более подробно узнать можно тут http://habrahabr.ru/post/112953/
И правда. Спасибо еще раз за совет. Ссылку взял на изучение.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2013, 23:39
Привет! Вот еще темы с ответами:

Вычисление функций с использованием их разложения в степенной ряд! - C++
Условие: Для х изменяющегося от a до b с шагом (b-a)/k, где (k=10), вычислить функцию f(x), используя ее разложение в степенной ряд в...

Вычисление функций с использованием их разложения в степенной ряд - C++
Помогите пожалуйста исправить прогрограмму (С++) Для х изменяющегося от a до b с шагом (b-a)/k, где (k=10), вычислить функцию f(x),...

Вычисление функций с использованием их разложения в степенной ряд ощибки исправте пожалуйста - C++
Постановка задачи Для х, изменяющегося от a до b (интервал целиком лежит внутри интервала, указанного в третьей колонке) с шагом ,...

Вычислить функции arcctgс заданной точностью с использованием разложения в ряд - C++
Помогите довести программу до рабочего состояния. Задание. Составить схему программы и программу на языке C++ с использованием...


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

Или воспользуйтесь поиском по форуму:
9
Yandex
Объявления
08.12.2013, 23:39
Ответ Создать тему
Опции темы

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