Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2013, 16:47   #1
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию Ряд Тейлора

Правильно ли написан код для данного примера во вложении?


Код:
#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
float x,s,a,y1,y2;
int n,i;

s=a;
a=x;

cout<<"Vvedite n: ";
cin>>n;

cout<<"Vvedite x: ";
cin>>x;

for(i=1; i<=n; i++)
{
a=(a*(x+2))/2;
s=s+a;
}
y1=-0.5*s;
y2=1/x;
cout<<"y1= "<<y1<<endl<<"y2= "<<y2<<endl;
cin>>s;

return 0;

system("PAUSE");

}
Изображения
Тип файла: jpg ghbvth.jpg (32.4 Кб, 9 просмотров)
Diana528 вне форума Ответить с цитированием
Старый 07.09.2013, 18:44   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Зачем это:
Код:
s=a;
a=x;
На рисунке с нуля начинается, а Вы пишите:
Код:
for(i=1; i<=n; i++)
Теперь эта строчка:
Код:
a=(a*(x+2))/2;
У Вас переменная a неинициализирована.

Исправьте эти ошибки. Дальше продолжим.

Последний раз редактировалось 8Observer8; 07.09.2013 в 19:15.
8Observer8 вне форума Ответить с цитированием
Старый 07.09.2013, 19:11   #3
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию

я уже поняла что это не надо)

все равно не выходит

Последний раз редактировалось Stilet; 07.09.2013 в 21:29.
Diana528 вне форума Ответить с цитированием
Старый 07.09.2013, 19:17   #4
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Вы исправили. Что теперь говорит компилятор? Какие ошибки?

Что такое "а"?

Код:
a=(a*(x+2))/2;
Почему Вы умножаете? Вам же в степень нужно возводить.

Последний раз редактировалось 8Observer8; 07.09.2013 в 19:21.
8Observer8 вне форума Ответить с цитированием
Старый 07.09.2013, 19:28   #5
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию

Ошибок нет, но ответы не сходятся, а ведь они должны быть одинаковыми. а - это то число которое и будет увеличиваться...вот здесь мне немного непонятно
Diana528 вне форума Ответить с цитированием
Старый 07.09.2013, 19:32   #6
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Цитата:
Сообщение от Diana528 Посмотреть сообщение
Ошибок нет
Давайте Ваш новый код, который без ошибок.

Цитата:
Сообщение от Diana528 Посмотреть сообщение
но ответы не сходятся, а ведь они должны быть одинаковыми.
Сюда ответ. Как вы его считаете?

Цитата:
Сообщение от Diana528 Посмотреть сообщение
а - это то число которое и будет увеличиваться...вот здесь мне немного непонятно
Я не вижу где у Вас возведение в степень? Давайте новый код сюда.
8Observer8 вне форума Ответить с цитированием
Старый 07.09.2013, 19:38   #7
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию

Код:
#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
float x,s,a,y1,y2;
int n,i;

s=0;
a=0;

cout<<"Vvedite n: ";
cin>>n;

cout<<"Vvedite x: ";
cin>>x;

for(i=0; i<=n; i++)
{
a=(a*(x+2))/2;
s=s+a;
}
y1=-0.5*s;
y2=1/x;
cout<<"y1= "<<y1<<endl<<"y2= "<<y2<<endl;
cin>>s;

return 0;

system("PAUSE");

}
Diana528 вне форума Ответить с цитированием
Старый 07.09.2013, 20:31   #8
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Если x будет равен 0, то у Вас будет деление на 0 в строке:
Код:
y2=1/x;
Т.е нужно прикрутить проверку X на нуль.
Далее, в коде есть "магические числа". Т.е все неименованные константы - 0.5, 1, и т.д.
Далее, я, как и 8Observer8, не вижу у вас возведения в степень, хотя в задании такая операция присутствует.

Если x будет равен 0, то у Вас будет деление на 0 в строке:
Код:
y2=1/x;
Т.е нужно прикрутить проверку X на нуль.
Далее, в коде есть "магические числа". Т.е все неименованые константы (литералы, т.е ссылаться на них нельзя) - 0.5, 1, и т.д. Это порождает массу вопросов + при изменении программы (или условия) Вам придется везде, в коде, изменять данные числа.
Далее, я, как и 8Observer8, не вижу у Вас возведения в степень, хотя в задании такая операция присутствует.

P.S - Прошу прощения - Два раза добавил сообщение, нечаянно нажал конопку "Отправить" несколько раз.

Последний раз редактировалось Stilet; 07.09.2013 в 21:32.
Igor95 вне форума Ответить с цитированием
Старый 07.09.2013, 20:48   #9
Diana528
Форумчанин
 
Регистрация: 13.02.2013
Сообщений: 221
По умолчанию

Код:
a=a*(pow((x+2)),n))/pow(2,n);
верно?

Последний раз редактировалось Diana528; 07.09.2013 в 20:54.
Diana528 вне форума Ответить с цитированием
Старый 07.09.2013, 20:54   #10
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Цитата:
Сообщение от Diana528 Посмотреть сообщение
Код:
a=pow((a*(x+2)),n)/pow(2,n);
верно?
Неопределённость, по-моему, 0 в степени 1.. или нет... Надо почитать

Последний раз редактировалось 8Observer8; 07.09.2013 в 20:58.
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ряд Тейлора misery24-7 Паскаль, Turbo Pascal, PascalABC.NET 5 20.06.2012 19:57
Ряд Тейлора fpm.altyev Помощь студентам 0 19.06.2012 17:08
Ряд Тейлора(C++) GUWK_Lammer Помощь студентам 0 09.02.2012 20:52
вычислить функцию с по-щью разложения в ряд.(Ряд Тейлора) feelstor Помощь студентам 2 26.12.2011 03:44
Ряд Тейлора siriusz Общие вопросы C/C++ 6 06.02.2009 20:26