|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
30.10.2006, 14:17 | #1 |
Александр
Администратор
Регистрация: 28.10.2006
Сообщений: 17,599
|
рисование изолиний
перенесено со старого форума. сообщение от Юдифь.
Добрый день! Уважаемые эксперты, не подскажете, как на Паскале реализовать алгоритм рисования изолиний (линий уровня) и траектории спуска в точку экстремума для квадратичной функции двух переменных? Вернее, траекторию спуска я себе представляю, как нарисовать, а вот с линиями уровня проблема. перенесено со старого форума. сообщение от pascal65536. Насколько я понимаю, функция 2х переменных это уже 3D? перенесено со старого форума. сообщение от Юдифь. Да, это функция в простанстве, но мне нужны именно линии уровня. Вот определение: ************************** Линией уровня функции двух переменных называется линия на плоскости XOY, принадлежащая D(z), в каждой точке которой функция принимает одно и то же значение. Уравнение линии уровня: f(x, y)=c, где с - произвольное число. На данной линии уровня значение функции z=c. Линий уровня бесконечно много, и через каждую точку области определения можно провести линию уровня. ************************** Должна получиться вот такая картинка . перенесено со старого форума. сообщение от zetrix. Можно в лоб решать: перебирать все x,y и проверять f(x,y)=c перенесено со старого форума. сообщение от pascal65536. Ну, блин, тут надо уравнение решать. Перебором, я думаю не пойдёт, а вот метод хорд или Ньютона в самый раз. перенесено со старого форума. сообщение от Юдифь. Добрый день! Большое спасибо за ответы. У меня получилось дойти до функции одной переменной. Но тут возникла другая проблема: Получилась квадратная функция, которую я пыталась решить методом хорд и дихотомии. Но оба эти метода находят лишь один корень на отрезке. А мне нужны оба. Можно, конечно, решить через дисриминант, но квадратное уравнение уравнение получилось лишь в моем случае, а в общем случае может получиться любое. Как мне быть? перенесено со старого форума. сообщение от zetrix. Хм... Может в прошлом моём сообщении я как-то непонятно сказал... Ну график ты как строишь? по точкам. Вот у тебя разрешение экрана допустим 640х480. Берём 2 цикла вложенных по x и y, и перебираем их по разрешению: for y:=1 to 480 do for x:=1 to 640 do begin // здесь мы проверяем f(x,y)=c если равно, то на экране отображаем точку (x,y), если не равно, то ничего не делаем. end; Может этот метод не годится, т.к. он достаточно долгий, но это всё же вариант... перенесено со старого форума. сообщение от Юдифь . Твой вариант не годится. Дело в том, что функция дана такая: 4*x^2+4*x*y+6*y^2-17*x. Приравниваю я ее к 1 (например), решение: x=3,4....., y=-4.06..... То есть очень приблизительно. А ты мне предлагаешь через For, где шаг равен единице. То есть ни однй точки подходящей я не найду. перенесено со старого форума. сообщение от pascal65536. Как-то так. uses graph; const zoom = 100; var x,y,w : Real; grDriver : Integer; grMode : Integer; I,J : Integer; Color : Byte; function f(x,y : real):real; begin f:=4*x*x+4*x*y+6*y*y-17*x; end; begin w := 1/zoom; grDriver := Detect; InitGraph(grDriver,grMode,'c:\tp\bg i\'); For I := 0 To GetMaxX Do Begin For J := 0 To GetMaxY Do Begin X := (GetMaxX/2-I)/zoom; Y := (GetMaxY/2-J)/zoom; Color := Round(f(x,y)); If ((X > -w) And (X < w)) Or ((Y > -w) And (Y < w)) Then Color := 0; PutPixel(I, J, Color); End; End; readln; CloseGraph; end. перенесено со старого форума. сообщение от Юдифь. Огромное спасибо! Только я поменяла три строчки в Вашем коде, чтобы изолинии были повернуты куда надо: ... X := (I-GetMaxX/2)/zoom; Y := (J-GetMaxY/2)/zoom; .... PutPixel(I,GetMaxY-J,Color); |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Рисование квадрата | KocT9 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 10 | 22.10.2014 11:58 |
JavaScript :: Рисование | beginner | JavaScript, Ajax | 7 | 11.08.2008 11:32 |
рисование на форме | Kostua | Помощь студентам | 2 | 26.07.2008 16:24 |
рисование в TImage | Rusl92 | Общие вопросы Delphi | 8 | 02.05.2008 20:23 |
Рисование... | HunterMan | Win Api | 10 | 30.04.2008 23:46 |