![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Igor_Fist |
![]() ![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
Всем привет! В паскале я чайник
![]() Построить фигуру Лиссажу путем генерации сигналов y=sinx и y=cosx по ортогональным осям. Вычисления производить путем поперменной генерации сигналов конечно-разностным методом в интервале изменения аргумента 0...2pi. Обеспечить ошибку относительно системных функций e=10^(-5).Вывод информации графический с текстовым контролем ошибок. Заранее спасибо! ![]() |
![]() ![]() |
TarasBer |
![]()
Сообщение
#2
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Сам-то пробовал что? С нуля полностью делать за тебя никто ничего не будет.
-------------------- |
Igor_Fist |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
я не понимаю как сделать конечно-разностным методом
![]() |
TarasBer |
![]()
Сообщение
#4
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Это очень умное слово для решения дифуров, в данном случае оно только пафос нагоняет.
В общем это типа вместо того, чтобы рисовать все точки (это невозможно на компе), рисуются только точки, соответствующие t0 = 0 t1 = h t2 = 2*h .... tN = N*h (N и h выбирается так, чтобы картинка была красивой, например, h = 0.001, H = trunc(2*Pi/h)) И для каждого такого момента t рисуется своя точка (с координатами sin(t*2), cos(t*3), например). То есть вывод делается таким циклом:
-------------------- |
Igor_Fist |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
ToScreen(sin(t*2), cos(t*3)) - что делает toscreen? |
TarasBer |
![]()
Сообщение
#6
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ну это я оставил простор для фнтазии. Типа ты сам опиши процедуру, которая принимает два вещественных числа (координаты) и выводит точку на экран в нужное место, с учётом размера и положения окна.
-------------------- |
Igor_Fist |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот само задание:
Построить фигуру Лиссажу путем генерации сигналов y=sinx и y=cosx по ортогональным осям. Вычисления производить путем поперменной генерации сигналов конечно-разностным методом в интервале изменения аргумента 0...2pi. Обеспечить ошибку относительно системных функций e=10^(-5).Вывод информации графический с текстовым контролем ошибок. Я не могу понять этй фразу:Вычисления производить путем поперменной генерации сигналов конечно-разностным методом в интервале изменения аргумента 0...2pi. помогите пожалуйста!натолкните на путь истиный ![]() |
TarasBer |
![]()
Сообщение
#8
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
-------------------- |
Igor_Fist |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
сорри,но я создал потому что всё равно не понял((конечно-разностный метод он используется для решения диф.кравнений,а для чего тут он?здесь какие диф.уравнения?и можт здесь конечно-разностная интерполяция используется?
|
Lapp |
![]()
Сообщение
#10
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
сорри,но я создал потому что всё равно не понял((конечно-разностный метод он используется для решения диф.кравнений,а для чего тут он?здесь какие диф.уравнения?и можт здесь конечно-разностная интерполяция используется? Игорь, этого тут никто не понял. И именно это тебе пытались сказать. Может, ты не совсем точно привел условие? Перепиши его полностью и без каких-либо изменений.Темы объединяю. Добавлено через 4 мин. Перечитав изначальную формулировку условия, я подумал, что тебе нужно было sin и cos рассчитывать конечно-разностным методом (а не использовать библиотечные). То есть получить их из решения некоторого диффура (с точностью 10-5). Какого именно - вопрос пока открыт. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Igor_Fist |
![]()
Сообщение
#11
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
Задание привел точно как дали.вот и сам то думаю для чего он тут конечно-разностный метод.
Код Program lissagu; uses graph,crt; var driver,mode,i:integer; x0,y0,kx,ky:real; h,w1,w2:real; n:integer; function XX(x:real):integer; begin XX:=round((x-x0)*kx); end; function YY(y:real):integer; begin YY:=getmaxy-round((y-y0)*ky); end; begin driver:=detect; initgraph(driver,mode, ' '); x0:=-1.2; y0:=-1.2; kx:=getmaxx/2.4; ky:=getmaxy/2.4; n:=100; h:=2*pi/n; w1:=2*pi/2; w2:=2*pi/6; moveto(XX(0),YY(1)); for i:=1 to n do lineto(XX(sin(w1*i*h)),YY(cos(w2*i*h))); writeln('figura lissaju'); readln; end. есть программа без использования этого метода и без обеспечения ошибки относительно системных функций,и вот как тут это все применить Сообщение отредактировано: Igor_Fist - 15.12.2010 0:25 |
Lapp |
![]()
Сообщение
#12
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Задание привел точно как дали.вот и сам то думаю для чего он тут конечно-разностный метод. Ну ясно же написано:Цитата путем генерации сигналов конечно-разностным методом Видишь? Не строить фигуру к.-р. методом, а именно генерировать сигналы. Но только ясности это прибавляет не очень много. Похоже, что тебе надо смоделировать какой-то процесс (и для этого решать диффур). А ты не можешь спросить у преподавателя, что имелось в виду? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Igor_Fist |
![]()
Сообщение
#13
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ну ясно же написано: Видишь? Не строить фигуру к.-р. методом, а именно генерировать сигналы. Но только ясности это прибавляет не очень много. Похоже, что тебе надо смоделировать какой-то процесс (и для этого решать диффур). А ты не можешь спросить у преподавателя, что имелось в виду? У преподавателя спросить смогу завтра..точнее уже сегодня |
Igor_Fist |
![]()
Сообщение
#14
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
проконсультировался с преподавателем.Этот метод описывается в его книге
В этом методе sin и cos не считаются. ошибка относительно системных функций берется из разницы конечно-разностного метода и метода когда фигура строится при помощи системы смоделировать сигналы S1=sin(wt); S2 = cos(wt). Представим сигналы в виде: S1,n+1 = sin( w (tn+dt) ) = sinwtncoswdt + cosw; S2, n+1 = cos(w (tn+dt) )= coswtncoswdt - sinwtnsinwdt; или S1,n+1 =S1,nh1 + S2,nh2; S2,n+1=S2,nh1- S1,nh2; где h1= cos(wdt); h2= sin(wdt); S1,0= 0; S2,0= 1. Сигналы S1,n+1, S2,n+1 моделируются попеременно. Метод конечно-разностной генерации имеет недостаток накопления ошибок. Ошибка увеличивается к последующим шагам. Когда она превышает допустимые значения, необходимо произвести коррекцию путем нового вычисления разгонных точек. |
Lapp |
![]()
Сообщение
#15
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Представим сигналы в виде: S1,n+1 = sin( w (tn+dt) ) = sinwtncoswdt + cosw; S2, n+1 = cos(w (tn+dt) )= coswtncoswdt - sinwtnsinwdt; или S1,n+1 =S1,nh1 + S2,nh2; S2,n+1=S2,nh1- S1,nh2; где h1= cos(wdt); h2= sin(wdt); S1,0= 0; S2,0= 1. Сигналы S1,n+1, S2,n+1 моделируются попеременно. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
TarasBer |
![]()
Сообщение
#16
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> Когда она превышает допустимые значения
Как это определять? Заранее на бумаге вычислить кол-во итераций, через которые надо делать коррекцию? -------------------- |
Igor_Fist |
![]()
Сообщение
#17
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
Игорь, в форме ответа есть нижние индексы (sub). Пожалуйста, перепиши сообщение (если тебе все еще нужна помощь). Очень трудно такое понимать. И умножение обозначь яснее.. прикрепил файл с этим методом,то что нужно в конце Добавлено через 3 мин. Цитата > Когда она превышает допустимые значения Как это определять? Заранее на бумаге вычислить кол-во итераций, через которые надо делать коррекцию? ничего заранее вычислять вроде бы не надо,если ошибка будет превышать заданную,то необходимо изменить шаг моделирования Прикрепленные файлы ![]() |
TarasBer |
![]()
Сообщение
#18
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
> если ошибка будет превышать заданную
> Как это определять? -------------------- |
Igor_Fist |
![]()
Сообщение
#19
|
Новичок ![]() Группа: Пользователи Сообщений: 11 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
TarasBer |
![]()
Сообщение
#20
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ну и какой тогда смысл этого метода, если всё равно надо для сравнения считать по-старому? Смысл-то в быстром расчёте следующего положения, чтобы не считать синусы и косинусы каждый раз!
Я пока склоняюсь к > Заранее на бумаге вычислить кол-во итераций, через которые надо делать коррекцию? -------------------- |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 14:57 |