IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> ЗАДАЧА НА ЧИСЛЕННЫЕ МЕТОДЫ, помогите, пожалуйста, с задачкой или подскажите, где можно посмотреть
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской
Реальное имя: Irina

Репутация: -  0  +


Мне нужно сделать задачку на численные методы на Паскале, но вот , к сожалению, нигде не могу найти ничего подобного: ни в интернете, ни на форуме... Посмотрите, пожалуйста. Если знаете, как делать, то подскажите. Может быть , где-то есть что-то подобное?

ЗАДАЧА:
Найти минимум функции f(x,y) при условии g(x,y)=0 методом сканирования.

Ну вообще, я так понимаю, что в данном случаи нужно использовать двумерное сканирование, то есть сканировать обе оси :х и у. Только вот тут не получится, как при одномерном сканировании ориентироваться на перемену знака, тут придется пользоваться малостью функции /f(x,y)/<e.

Пожалуйста, если знаете , как реализовать эту задачу на паскале, то подскажите)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Вот пример кода.
Я сделал ввод границ области сканирования и точности с клавиатуры. Рассмотри внимательно и разберись. Я написал некоторые комментарии, но ты спрашивай, если что непонятно.
function F(x,y:real):real;
begin
F:=x+y
end;

function G(x,y:real):real;
begin
G:=x*x+y*y-5
end;

var
x,x1,x2,xn,y,y1,y2,yn,s:real;
Flag:boolean;

begin
WriteLn('Введите границы области поиска:');
Write('x1='); ReadLn(x1);
Write('x2='); ReadLn(x2);
Write('y1='); ReadLn(y1);
Write('y2='); ReadLn(y2);
Write('Шаг сканирования s='); ReadLn(s);

Flag:=true; {признак поиска первой точки уд.условию}
y:=y1; {начало по y}
while y<=y2 do begin
x:=x1; {начало по x}
while x<=x2 do begin
if Abs(G(x,y))<s then begin {точка удовлетворяет условию}
if Flag then begin {это была первая точка уд.условию}
Flag:=False; {сбросили флаг}
xn:=x; yn:=y {запомнили точку}
end
else if F(x,y)<F(xn,yn) then begin {если значение F меньше имеющегося}
xn:=x; yn:=y {запомнили точку минимума}
end
end;
x:=x+s {продвигаемся по x}
end;
y:=y+s {продвигаемся по y}
end;
WriteLn('Минимум достигается в точке: x=',xn:5:8,' y=',yn:5:8);
ReadLn
end.
Учти, что метод этот довольно медленный! Если я задаю границы по обеим координатам от -10 до 10, а точность 0.001, то время расчета на моем P4 @ 1.7 ГГц больше полминуты. Когда разберешься с общим алгоритмом, можно будет заняться оптимизацией. Для этого есть ресурсы, хотя алгоритм (я имею в виду сканирование), конечно, принципиально небыстрый.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 9.09.2025 12:23
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name