Mira_5
Новичок
|
Помогите, пожалуйста, составить алгоритм для вычисления этой функции. Вычислить с заданной точностью э значение функции Y для каждого из 20 значений Х: Y = 1 – X / 2 + (1*3*X2) / (2*4) – (1*3*5*X3) / (2*4*6) + + (1*3*5*7*X4) / (2*4*6*8) – ... Значения Х и э ввести Плохо въезжаю, сколько тут циклов будет: 1 или 1 и ещё один вложенный? И ещё: как тут можно сформулировать условие выхода из цикла?
|
Всего сообщений: 39 | Присоединился: сентябрь 2007 | Отправлено: 19 сен. 2007 16:09 | IP
|
|
KMA
Долгожитель
|
Здесь всего 1 цикл, условием будет пока не достигнет заданной точности:
Code Sample:
Y=1; i=1; счетчик k=1; шаг (четный или нет) Sn=0; член ряда выполнять Sn=i/(i+1)*(-Sn); формула общего члена Y=Y+Sn*X[k] ; вычисляем функцию i=i+2 ; прибавляем к счетчику 2 k=k+1 ; увеличиваем шаг пока Sn>eps
При этом я понимаю, что Х это есть массив наперед заданных значений.
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 20 сен. 2007 22:28 | IP
|
|
KMA
Долгожитель
|
Ой, прости, перепутал, в общем Sn=1 вначале (на ноль умножаем, получаем всегда ноль =))
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 20 сен. 2007 22:30 | IP
|
|
Mira_5
Новичок
|
Спасибо, что ответили. Только я хотела спросить: Y=1 -- это присвоение значения иксу или что-то другое? Счётчик -- это вроде как считать, какой шаг по счёту -- там их надо 20. И ещё : как понять "шаг" и какое им. значение, чётный или нет?
|
Всего сообщений: 39 | Присоединился: сентябрь 2007 | Отправлено: 1 окт. 2007 15:06 | IP
|
|
KMA
Долгожитель
|
Спасибо, что ответили.
Всегда пожалуйста.
Только я хотела спросить: Y=1 -- это присвоение значения иксу или что-то другое?
Естественно, что это присваивание, а вообще это выходная величина, которую ты должна вычислить с точностью до eps (эпселент). Почему равно 1, потому как это начальное состояние, у тебя же начинается Y=1-... а далее члены ряда, вот эти члены ряда я и определял в цикле. Т. е. как ты могла заметить Y на каждой итерации цикла добавляется новый член ряда, который вычисляется по формуле Sn=i/(i+1)*(-Sn);.
Счётчик -- это вроде как считать, какой шаг по счёту -- там их надо 20. И ещё : как понять "шаг" и какое им. значение, чётный или нет?
Счетчик это понятие в данной задаче образное, т. е. мне нужно изменить на 2 значение счетчика, чтобы сосчитать член ряда. Шаг, это есть количество итераций. В скобочках указывается четный или нет (это моя глупость, я когда писал в листинге у меня было немного другое решение задачи, а потом я переделал, а комментарий убрать забыл). X[k] это твои x1, x2, x3, x4, x5 и т. д. просто в программировании, чтобы не задавать 20 переменных одного типа вводят понятие массива, соответственно x[1]=x1, x[2]=x2, x[3]=x3 и т. д. Чтобы понять как программа работает, я объясню 2 итерации цикла или 2 шага. Вначале выполняется: Y=1; i=1; k=1; Sn=1; шаг 1 Sn=1/(1+1)*(-1); Sn=-1/2 Y=1+Sn*X[1] ; Y=1+(-1/2)*x1 i=1+2 ; i=3 k=1+1 ; k=2 если точность не достигнута, то выполнить еще один шаг цикла: шаг 2 Sn=3/(3+1)*(-(-1/2)); Sn=3/(2*4) Y={(1-(1/2)*x1)}+(3/(2*4))*X[2] ; Y={}+(3/(2*4))*x2 i=3+2 ; i=5 k=2+1 ; k=3 если точность eps не достигнута то выполнять следующий шаг шаг 3 ... и т. д. Пока не будет достигнута заданная точность. В {} я обозначил предыдущее значение функции, чтобы удобнее было читать. Суть понятна? Если тебе больше понятнее на языке программирования, чем условная запись, скажи на каком я думаю, что смогу помочь написать. (Сообщение отредактировал KMA 3 окт. 2007 14:31)
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 3 окт. 2007 14:27 | IP
|
|
Mira_5
Новичок
|
Вообще это программа на Паскале, но у меня сейчас глаавная задача в том, чтобы составить этот алгоритм в графическом редставлении -- ну, т.е. визуальную схему. Вот сейчас суть да, понятна. Я, значит, в начале объявляю все эти переменные, потом "Процесс" -- там идёт вычисление функции -- потом я, не доходя до проверки условия, увеличиваю значение счётчика и шаг -- а потом дохожу только до проверки условия -- Sn>eps -- если условие "нет" -- возвращаюсь в начало -- к "Процессу", если условие выполняется "да" -- то вывожу резалт. То есть я поняла, что там не надо создавать ещё дополнительный цикл, чтобы вычислять каждую переменную отдельно -- ну, в смысле, х1, х2, etc... Вот мне кажется что я тут напутала -- к какому этапу должна возвращаться программма, если условие Sn>eps не выполняется? А в остальном вроде я именно так поняла
|
Всего сообщений: 39 | Присоединился: сентябрь 2007 | Отправлено: 5 окт. 2007 15:02 | IP
|
|
Mira_5
Новичок
|
кстати, я там в условии ошибку сейчас нашла. Y = 1 – X / 2 + (1*3*X2) / (2*4) – (1*3*5*X3) / (2*4*6) + + (1*3*5*7*X4) / (2*4*6*8) – ... Там так написано. Только это не X2, X3, X4 -- это x во второй степени, х в третьей, в четвёртой и т.д. Это не влияет на решение этой задачи?
|
Всего сообщений: 39 | Присоединился: сентябрь 2007 | Отправлено: 5 окт. 2007 15:06 | IP
|
|
Gr1d
Новичок
|
Дааа, прикольно
|
Всего сообщений: 1 | Присоединился: октябрь 2007 | Отправлено: 6 окт. 2007 15:40 | IP
|
|
KMA
Долгожитель
|
Там так написано. Только это не X2, X3, X4 -- это x во второй степени, х в третьей, в четвёртой и т.д. Это не влияет на решение этой задачи?
так, тяжелый случай =). А ты сама как думаешь? Вообщем тебе задание, попробуй напиши код там где у тебя степени и правильные прибавки. Выложи сюда, а потом обсудим.
|
Всего сообщений: 940 | Присоединился: декабрь 2005 | Отправлено: 16 окт. 2007 18:59 | IP
|
|
profeccor
Новичок
|
я мож не в тему а кто нить на С++ пишет
|
Всего сообщений: 24 | Присоединился: октябрь 2007 | Отправлено: 17 окт. 2007 8:04 | IP
|
|
|