58 / 62 / 34
Регистрация: 14.03.2014
Сообщений: 905
|
||||||
1 | ||||||
Циклы: вычисление синуса26.07.2014, 21:51. Показов 6631. Ответов 19
Метки нет (Все метки)
Приступил к циклам.
Задание такое: Как известно, функция sin(x) может может быть вычислена в виде ряда sin(x)= На практике при вычислении значения функции sin(x) соответствующий ряд ограничивают, т.е. рассматривают приближенное выражение sin(x)=
0
|
26.07.2014, 21:51 | |
Ответы с готовыми решениями:
19
Вычисление гиперболического синуса Неправильное вычисление синуса Задание на вычисление синуса Неправильное вычисление синуса угла |
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,237
|
|
26.07.2014, 21:57 | 2 |
Senarist, посмотрите в готовых задачах,кто-то уже синус-разложение выкладывал.
О каких именно действиях речь?Есть конкретная формула,по ней и вычисляйте.
0
|
58 / 62 / 34
Регистрация: 14.03.2014
Сообщений: 905
|
|
26.07.2014, 22:06 [ТС] | 3 |
S_el Ок. Немного по другому тогда. Пусть N=1 а не 100. по условию цикл пройдет ток 1 раз. Не могли бы вы мне показать какие действия будут происходить в теле цикла?
0
|
5 / 5 / 1
Регистрация: 25.10.2013
Сообщений: 230
|
|
26.07.2014, 22:16 | 4 |
Те же действия, но только один раз. Вообще имхо напрашивается поменять строки местами, а "s" илициализировать не нулем, а "x". Иначе получается несколько бредово: мы вычисляем еще один виток цикла, а результат используем только в следующей итерации. Проще говоря в текущем виде последняя итерация цикла бесполезна.
0
|
58 / 62 / 34
Регистрация: 14.03.2014
Сообщений: 905
|
|
26.07.2014, 22:33 [ТС] | 5 |
DarkMasterW вот это меня и вводит в заблуждение.
Допустим: for(int i=1; i<=n; i++){ s+=i } Здесь я вижу что идет суммирование натуральных чисел. Даже фигурные скобки можно упустить. А что происходит в той программе не понимаю.(
0
|
5 / 5 / 1
Регистрация: 25.10.2013
Сообщений: 230
|
|
26.07.2014, 22:41 | 6 |
Что происходит? Ну крутит он в цикле эти две строки. Вот и все что происходит. Или тебя интересует почему именно такая математика?
0
|
58 / 62 / 34
Регистрация: 14.03.2014
Сообщений: 905
|
|
26.07.2014, 22:48 [ТС] | 7 |
Если вот тут видно что for(int i=1; i<=n; i++){ s+=i } допустим n=3 то 1+2+3 а из того кода я просто не вижу что с чем. Надеюсь вы поняли что я не понял))
0
|
5 / 5 / 1
Регистрация: 25.10.2013
Сообщений: 230
|
||||||
26.07.2014, 22:57 | 8 | |||||
не понял, если честно...
q*=(-1)*x*x/(2*n)/(2*n+1); s+=q; ну счтитайте у вас не просто +i, а просто чуть более сложная формула. Поменял местами специально - так нагляднее. Почему формула такая - я не знаю и знать не хочу(имхо бесполезная вещь, кроме каких-то узких направлений). если будет:
0
|
58 / 62 / 34
Регистрация: 14.03.2014
Сообщений: 905
|
|
26.07.2014, 23:06 [ТС] | 9 |
DarkMasterW вот так да. А в том коде, как написано в учебнике сделано для того чтобы избежать больших значений в частности и
Для этого использовали
0
|
5 / 5 / 1
Регистрация: 25.10.2013
Сообщений: 230
|
|
26.07.2014, 23:15 | 10 |
Примите как данность и не заморачивайтесь.Ну либо подробно разбирайте математические преобразования. Смысл в этом копаться какой? Я в школьные годы тоже докапывался для преподов с просьбами вывести формулу, а не предоставлять, как данность. Ну любопытно было. Практического смыла не было. Объяснить эту математику я вам не в состоянии - я всю ее забыл, как страшный сон и не жалею. Для практический целей дальше синусов уходить обычно не приходится, да и синусы редкость, а ряды... Ну хотите - учите, узнавайте все досканально, если желание есть - это в плюс пойдет.
0
|
58 / 62 / 34
Регистрация: 14.03.2014
Сообщений: 905
|
|
26.07.2014, 23:20 [ТС] | 11 |
DarkMasterW да по самим вычислениям вопросов нет, хотя на семестровую с рядами и разложениями в ряд много времени потратил)) Меня интересует сам код. Даже если поменять эти две строчки в теле цикла местами то результаты разные.
0
|
5 / 5 / 1
Регистрация: 25.10.2013
Сообщений: 230
|
||||||
26.07.2014, 23:34 | 12 | |||||
естественно разные.
Давайте по-дубовому
Вы можете конретизировать, что именно вам не понятно? Тут 2 строчки математики и все...
0
|
58 / 62 / 34
Регистрация: 14.03.2014
Сообщений: 905
|
|
26.07.2014, 23:40 [ТС] | 13 |
DarkMasterW это я понял. Я поэтому и не понял как вычисляется результат. Ведь исходя из моего первого представленного кода все так как и у вас.
0
|
5 / 5 / 1
Регистрация: 25.10.2013
Сообщений: 230
|
||||||
26.07.2014, 23:55 | 14 | |||||
результат не вычисляется в пределах одного цикла. Точнее он вычисляется, но не присваивается. Он просто выкидывается.
Добавлено через 2 минуты
s+=q; из первого цикла наружу до начала for. А дальше уже можно спокойно проводит вычисления и сразу присваивать результат. Добавлено через 4 минуты Результат должен быть идентичен вашему варианту кода, но только при условии, если в вашем коде будет выполнено на 1 итерацию больше.
0
|
58 / 62 / 34
Регистрация: 14.03.2014
Сообщений: 905
|
||||||
27.07.2014, 00:03 [ТС] | 15 | |||||
Вот теперь понятно, только из каких соображений добавлено это:
0
|
5 / 5 / 1
Регистрация: 25.10.2013
Сообщений: 230
|
|
27.07.2014, 00:32 | 16 |
чтобы сохранить порядок вычислений. у нас самое первое вычисление в цикле было:
s+=q; q при этом равнялось x, s=0. Если мы просто выкинем эту строку, то у нас соответственно "поедут" вычисления. Можно было написать не: s=q; а все то же: s+=q; Но имхо оно как-то адекватнее выглядит в текущем коде. Грубо говоря я половину первой итерации старого цикла выполняю до вступления в цикл. Это необходимо из-за смены строк. Вообще прокрутите в голове порядок вычислений. Столбик в голове представьте. И поймете, что мы его полностью сохранили, только в конце добавили присвоение результата.
1
|
58 / 62 / 34
Регистрация: 14.03.2014
Сообщений: 905
|
|
27.07.2014, 00:39 [ТС] | 17 |
DarkMasterW все дошло! Пока вопросов нет.
0
|
Модератор
13502 / 10754 / 6409
Регистрация: 18.12.2011
Сообщений: 28,700
|
||||||
27.07.2014, 08:20 | 18 | |||||
Замечание.
Вычисление до заданного N лишено смысла, т.к. ничего нельзя сказать о точности результата. Суммирование надо вести до тех пор, пока очередной член ряда не станет достаточно малым
0
|
58 / 62 / 34
Регистрация: 14.03.2014
Сообщений: 905
|
|
28.07.2014, 21:51 [ТС] | 19 |
zss может Вы мне подскажете как была подсчитана данная добавка: (-1)*/(2n)(2n+1)
если так: то наверное я неправильно считаю.
0
|
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,237
|
|
29.07.2014, 21:11 | 20 |
Senarist, "разверните" общую формулу и сравните с исходной,если совпало,сверьте внимательно с кодом.Если все совпало и там,возьмите с форума готовое разложение и сравнивайте.
0
|
29.07.2014, 21:11 | |
29.07.2014, 21:11 | |
Помогаю со студенческими работами здесь
20
вычисление погрешности - циклы. Вычисление синуса Вычисление синуса Вычисление синуса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |