Консультация № 173753
27.10.2009, 14:50
0.00 руб.
0 17 1
Народ помогите не как не могу написать аттестационную работу по с++ с помощью 3 циклов. Вычислить и вывести на экран
S=(_k=1^k)∑*e^(-kx/2)/k! при |x|<1; x вывеси с клавиатуры, к определить из условия |ak|<0.001

Обсуждение

давно
Посетитель
7438
7205
27.10.2009, 15:21
общий
S=(_k=1^k)∑*e(-kx/2)/k! при |x|<1; x ввести с клавиатуры, к определить из условия |ak|<0.001
Уточните, пожалуйста, что значит:
1) (_k=1^k)
2) ∑*
3) |ak| ( что за 'а'?)
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
27.10.2009, 15:24
общий
Как раз хотел задать те же вопросы, что и Лысков Игорь Витальевич. Для надежности еще можно вставить формулу как картинку (например, набрать в Word и скопировать с экрана).
давно
Старший Модератор
17042
808
27.10.2009, 15:59
общий
amnick:
Как раз-таки формулу как картинку в вопрос вставлять не рекомендуется. Если вопрошающий не сможет внятно объяснить, что значит формула, то и картинка не поможет...
Об авторе:
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014
Неизвестный
27.10.2009, 16:19
общий
1 к сверху знака сумма к=1 под знаком суммы
2 сумма умноженная на дробь
3 вроде как одно из чисел используемое при домножение
давно
Посетитель
7438
7205
27.10.2009, 16:43
общий
1) Как это снизу k=1, а сверху тоже k? Сумма по k, от 1 до k... Может от 1 до какого-то n, при котором |ak|<0.001 ?
2) Как это "сумма умноженная на дробь"? Вы хоть немного представляете себе, что такое ряды? Полагаю, надо найти сумму вот таких величин: e(-kx/2)/k! Я не прав?
3) |ak|<0.001 случайно не означает |ak|<0.001, т.е. сравниваем с 0.001 очередной элемент суммирования ak ?
Почему мы должны за Вас вникать в условие Вашего задания?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Неизвестный
27.10.2009, 16:50
общий
http://dump.ru/file/3657396 вот ссылка на формулу представленную к задаче
по поводу 3 пункта да вы правы ошибся при написание
давно
Старший Модератор
17042
808
27.10.2009, 17:23
общий
Яшин Дмитирий Вадимович:
В принципе формула понятна. Но по поводу |ak| < 0.001 хотелось бы увидеть пояснения.
Об авторе:
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014
Неизвестный
27.10.2009, 17:30
общий
Цитата: Лысков Игорь Витальевич
|ak|<0.001 случайно не означает |ak|<0.001, т.е. сравниваем с 0.001 очередной элемент суммирования ak

Кокраз как вы и написали так и есть.
давно
Профессор
230118
3054
27.10.2009, 18:21
общий
amnick:
Если вы уже пишете ответ, скажите, чтобы не писать зря.
давно
Профессор
230118
3054
27.10.2009, 18:26
общий
Яшин Дмитирий Вадимович:
Все равно формула неправильная, после знака суммы умножение не ставится.
Неизвестный
27.10.2009, 18:55
общий
Ashotn:
Если хотите, то пишите. Сумма ряда (если я правильно понял эту корявую запись ∑*) — тривиальная задача. Я, если никто не ответит, напишу вечером.
давно
Профессор
230118
3054
27.10.2009, 19:15
общий
это ответ
Здравствуйте, Яшин Дмитирий Вадимович.
Вот программа.


#include <iostream>
#include <math.h>

#define EPS 0.001


using namespace std;

int main(int argc, char* argv[])
{
double x;
int k=1;
int fac=1;
double member=1,stepen;

double sum=0;

cin >> x;
if(abs(x)>=1)
{
cout<< "Wrong parameter" <<endl;
exit(1);
}
while(member>EPS)
{
stepen=(-x*k)/2;
member=exp(stepen)/fac;
fac=fac*(++k); //increment k and calculate factorial in 1 line
sum+=member;
}
cout << sum;
return 0;
}
2
При вводе любого числа хоть положительное хоть отрицательное пишет что не правильный параметр и закрывает после исправление этого при вводе любого знака каким то обзором считает и выдает ответ и ведется только вычисление основой формулы, а не нахождение числа домноженный.
давно
Профессор
230118
3054
28.10.2009, 23:05
общий
Яшин Дмитирий Вадимович:
Сколько тут обсуждали задачу, говорилось, что нужно вывести сумму ряда. Если нужно число членов, сказали бы об этом. Это не проблема, оно хранится в переменной k. Зато в условии сказано |x|<1, значит, при вводе числа 2 например, программа не должна работать, и это правильно. Так что исправьте оценку.
Неизвестный
28.10.2009, 23:39
общий
Скажете как исправлю может я и не прав и если есть возможность то это же с помошью for и do while сделать.
давно
Профессор
230118
3054
28.10.2009, 23:59
общий
С использованием for
#include <iostream>
#include <math.h>

#define EPS 0.001


using namespace std;

int main(int argc, char* argv[])
{
double x;
int k=1;
int fac=1;
double member=1,stepen;

double sum=0;
cout << "enter parameter" ;
cin >> x;
if(abs(x)>=1)
{
cout<< "Wrong parameter" <<endl;
exit(1);
}

for(k=1;member>EPS;k++)
{
stepen=(-x*k)/2;
member=exp(stepen)/fac;
fac=fac*(k+1);
sum+=member;
};


cout << "k=" << k <<endl;
cout << "sum is =" << sum;
return 0;
}

C использованием do (только цикл, остальное так же)

do
{
stepen=(-x*k)/2;
member=exp(stepen)/fac;
fac=fac*(++k); //increment k and calculate factorial in 1 line
sum+=member;
}
Неизвестный
29.10.2009, 00:16
общий
Большое спасибо скажите как исправить оценку исправлю
давно
Посетитель
7438
7205
29.10.2009, 03:35
общий
Увы, оценку исправить уже нельзя...
Зачем же было рубить с плеча...
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа