ЗАДАЧА НА ЧИСЛЕННЫЕ МЕТОДЫ, помогите, пожалуйста, с задачкой или подскажите, где можно посмотреть |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
ЗАДАЧА НА ЧИСЛЕННЫЕ МЕТОДЫ, помогите, пожалуйста, с задачкой или подскажите, где можно посмотреть |
Irina |
Сообщение
#1
|
Группа: Пользователи Сообщений: 4 Пол: Мужской Реальное имя: Irina Репутация: 0 |
Мне нужно сделать задачку на численные методы на Паскале, но вот , к сожалению, нигде не могу найти ничего подобного: ни в интернете, ни на форуме... Посмотрите, пожалуйста. Если знаете, как делать, то подскажите. Может быть , где-то есть что-то подобное?
ЗАДАЧА: Найти минимум функции f(x,y) при условии g(x,y)=0 методом сканирования. Ну вообще, я так понимаю, что в данном случаи нужно использовать двумерное сканирование, то есть сканировать обе оси :х и у. Только вот тут не получится, как при одномерном сканировании ориентироваться на перемену знака, тут придется пользоваться малостью функции /f(x,y)/<e. Пожалуйста, если знаете , как реализовать эту задачу на паскале, то подскажите) |
Irina |
Сообщение
#2
|
Группа: Пользователи Сообщений: 4 Пол: Мужской Реальное имя: Irina Репутация: 0 |
неужели эта задача на самом деле нерешаемая?
Сообщение отредактировано: Irina - |
Lapp |
Сообщение
#3
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
если знаете , как реализовать эту задачу на паскале, то подскажите) Но главное - уяснить алгоритм. Хочешь, я скажу тебе, почему тебе никто не ответил раньше? Потому что условие несколько путаное. То есть со сканированием все более-менее ясно (хотя и не все), но потом ты добавляешь какие-то слова про малость функции и смену знака, и эти слова полностью сбивают с толку. При чем тут это? Какая связь минимума со знаком? Минимум может быть и положительный, и отрицательный, и ноль.. Сравнивать нужно только соседние значения функции (ну, или не только соседние) при этом условие типа: A[i,j] < A[k,l] - не имеет никакого отношения к знакам, на первый взгляд.. Если я что-то упускаю или не так понимаю метод сканирования, пожалуйста, поясни. И вообще, изложи чуть более точно этот метод. Было бы неплохо просто скопировать пару предложений из учебника или конспекта... А написать программу сложности никакой не представит . Ну, давай, успехов. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Irina |
Сообщение
#4
|
Группа: Пользователи Сообщений: 4 Пол: Мужской Реальное имя: Irina Репутация: 0 |
Lapp, во-первых, большое спасибо за то , что откликнулся на просьбу и готов помочь.
Просто, на самом деле, я не очень понимаю, что нужно сделать, поэтому и обратилась за помощью... если б имела понятие, то пыталась бы всеми силами сама сделать. А тут даже не знаю, за что уцепиться. Насчет метода сканирования я тоже толком не знаю. Это задание нам на самоизучение, а в интернете никакого достойного материала я не нашла, к сожалению. Знаю только то, что в алгоритме метода сканирования функция просматривается достаточно малыми шагами h : но тут дело в том, что надо просматривать не просто одну ось x, а надо, как я понимаю проходить по узлам плоскости. И еще , вроде бы функция g(x,y) именно 0 значение не примет, поэтому придется использовать что-то типа if abs(g(x,y))<10^(-7) и т.п... Lapp, если не сложно, помоги сделать.* чувствую себя в эту минуту жутко тупой, мне стыдно*, но сама не могу справиться. еще небольшое уточнение: появились точные значения функций: f=x+y g=x^2+y^2-5 |
Irina |
Сообщение
#5
|
Группа: Пользователи Сообщений: 4 Пол: Мужской Реальное имя: Irina Репутация: 0 |
Пожалуйста, посмотрите хоть кто-нибудь... подкиньте идею, если знаете)
|
Capitan Nemo |
Сообщение
#6
|
Новичок Группа: Пользователи Сообщений: 17 Пол: Мужской Реальное имя: Дмитрий Репутация: 0 |
присоединяюсь к просьбе, у меня подобная задача, очень нужна помощь...
|
Lapp |
Сообщение
#7
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Irina, извини, я просто случайно пропустил твою тему.. Исправлюсь.
в алгоритме метода сканирования функция просматривается достаточно малыми шагами h : но тут дело в том, что надо просматривать не просто одну ось x, а надо, как я понимаю проходить по узлам плоскости. И еще , вроде бы функция g(x,y) именно 0 значение не примет, поэтому придется использовать что-то типа if abs(g(x,y))<10^(-7) и т.п... Lapp, если не сложно, помоги сделать.* чувствую себя в эту минуту жутко тупой, мне стыдно* Если сканирование означает просто перебор значений функции - то без разницы: одномерная она, двумерная или десятимерная. Сравнение с нулем действительно придется проводить с некоторой точностью (сначала я не совсем понял о чем речь). Естественно при этом в качестве точности брать, например, шаг сканирования. Можно также вводить значение точности как дополнительный параметр. Чего тут стыдного?.. не говори ерунды. Тот, кто хочет списать, обмануть - он обманет и не покраснеет. Тот, кто хочет разобраться - тот должен спрашивать. Это самый эффективный и по сути единственно верный способ образования. Так что, если ты "второго типа" , то совершенно не нужно извиняться. Для того и форум. Итак, тебе просто нужно организовать двойной цикл по координатам. Не совсем ясно, как выбрать границы сканирования. У тебя есть идеи? Прогу я набросаю в общих чертах и кину сюда. Сообщение отредактировано: Lapp - -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Lapp |
Сообщение
#8
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Вот пример кода.
Я сделал ввод границ области сканирования и точности с клавиатуры. Рассмотри внимательно и разберись. Я написал некоторые комментарии, но ты спрашивай, если что непонятно. function F(x,y:real):real;Учти, что метод этот довольно медленный! Если я задаю границы по обеим координатам от -10 до 10, а точность 0.001, то время расчета на моем P4 @ 1.7 ГГц больше полминуты. Когда разберешься с общим алгоритмом, можно будет заняться оптимизацией. Для этого есть ресурсы, хотя алгоритм (я имею в виду сканирование), конечно, принципиально небыстрый. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Текстовая версия | 28.03.2024 22:43 |