![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Account |
![]()
Сообщение
#1
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
Задание
![]() Мой код
Вот с точностью 0,1 он вычисляет, если сменить поставить точность выше, при этом соответсвенно и шаг нужно уменьшить допусти 0,01 сделать его, то все программа не пашет, я так понялне хватает размераности типов данных, переменная j обнуляется, а еще заметил i выходит за пределы и становится равной -1. Правильные ли у меня вычисления и как сделать чтоб вычислить с более высокой точностью? |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата как сделать чтоб вычислить с более высокой точностью? Не надо постоянно вычислять Xn, просто домножай очередной член ряда на X:var next: double; |
Account |
![]()
Сообщение
#3
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
При замени уже на 0,01 вылетает ошибка операции с плавующей точкой(
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
|
Account |
![]()
Сообщение
#5
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo, а как у тебя знак последующего множителя в ряде определяется не пойму?
Все понял, звиняй за тупой вопрос)) Сообщение отредактировано: Account - 17.01.2009 13:42 |
Account |
![]()
Сообщение
#6
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo, огромное спасибо, очередной раз убеждаюсь что ты просто гений)))
![]() По твоему примеру решаю и другие подобные задачи)))) Добавлено через 8 мин. volvo, а вот только не пойму у тебя ведь переменная x не меняется? а для нее ведь тоже указана область значание? Сообщение отредактировано: Account - 17.01.2009 14:10 |
Account |
![]()
Сообщение
#7
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
Задача таже только другой ряд
![]() Вот код, сделанный на основе предложенного выше vovlo uses crt; Работае, толко вот при постановке точности (сравнивается значение введенной точности с разницей между сумой членов ряда и арктангенсом) в 0,001 он пролетает, ранее найденные значения при меньшей точности. x уходит соотвественно в минус и арктангенс тоже а сумма ряда то нет, как повысить опять же точность? Сообщение отредактировано: Account - 17.01.2009 15:29 |
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата а вот только не пойму у тебя ведь переменная x не меняется? а для нее ведь тоже указана область значание? А что, где-то указано, что она должна меняться? Переменная попадает в допустимый интервал, |0.9| < 1, для этого значения и вычисляется ряд...Цитата Вот код, сделанный на основе предложенного выше Ни разу не по моему методу ![]() Вот тут я выкладывал реализацию arctan: Вычисление значений тригонометрических функций на основе разложения в ряд Маклорена , соответственно по моему методу вычисление будет вот таким: x := 0.9;У тебя опять та же ошибка: во время вычисления суммы ряда X не должно меняться, ты же вычисляешь arctan(X), а не arctan(X - delta .. X + delta)... Если тебе надо вычислить ряд для нескольких разных значений X, то оберни это еще одним циклом, в котором меняй аргумент. Но во время самого вычисления суммы ряда значение X для тебя должно оставаться неприкосновенным. |
Account |
![]()
Сообщение
#9
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот шапка задания из таблицы
![]() отсюда я и изменяю аргумет x. Метод я имел ввиду по вычислению ряда а не арктангенса ![]() Я думал что x тоже должна менятся( поэтому так и сделал, буду править) Сообщение отредактировано: Account - 17.01.2009 15:59 |
Account |
![]()
Сообщение
#10
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo
Вот сделал для каждого x
В условии по while стоит abs(x)<1 а он всеравно захватывает x=-1, почему? (странно при этом значении должно ведь выходить из цикла) Пришлось сделать через постусловие и поставить 0,9 границу. Сообщение отредактировано: Account - 17.01.2009 16:50 |
volvo |
![]()
Сообщение
#11
|
Гость ![]() |
Цитата В условии по while стоит abs(x)<1 а он всеравно захватывает x=-1, почему? А ты отладчиком пробегись, и посмотри, чему в действительности равен Х... У меня на последней итерации отладчик показываетx = -0.99999999999999967 , а при выводе значение округляется до -1. То есть, фактически все верно, модуль значения меньше 1, и цикл продолжается. Чтобы поправить: while abs(x) < (1.0 - e / 10) do begin Да, кстати. Проверь задание. Ты сравниваешь результаты вычисления суммы ряда с ArcTan, а вычисляется совсем не арктангенс. У арктангенса ряд - знакопеременный, чередуются +/-/+/-, а у тебя только первый минус, потом все плюсы. Поэтому такая большая разность и выходит... |
Account |
![]()
Сообщение
#12
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
За поправку спасибо.
Цитата Да, кстати. Проверь задание. Ты сравниваешь результаты вычисления суммы ряда с ArcTan, а вычисляется совсем не арктангенс. У арктангенса ряд - знакопеременный, чередуются +/-/+/-, а у тебя только первый минус, потом все плюсы. Поэтому такая большая разность и выходит... Возьму на заметку, хорошо что ты заметил, но понимаешь задание только на картинке, больше узнать не где, там вот не указана переменность знака поэтому так вычисляю. Делаю тоже не для себя. (Берусь так сказать помочь знакомым, чтоб вещество серое не засохло;). p.s. Попробовал знак сделать переменным, действительно значение стало более близкое к арктангенсу) (но сравнивая, вроде не настолько уж большая))) разница) Добавлено через 19 мин. volvo А вот в первом случае , в котором ты решение давал в самом начале разница очень большая между суммой ряда и значением с сравниваемой фунции, вот код uses crt; функция значение которой как бы является точным значение ряда (1+x)^(-1/2) Сообщение отредактировано: Account - 17.01.2009 17:36 |
volvo |
![]()
Сообщение
#13
|
Гость ![]() |
Перенести
s:=1; внутрь цикла While не пробовал? У тебя получается накопленная сумма какая-то. |
Account |
![]()
Сообщение
#14
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 212 Пол: Мужской Репутация: ![]() ![]() ![]() |
Блин даже стыдно за невнимательность)
|
![]() ![]() |
![]() |
Текстовая версия | 12.08.2025 8:18 |