Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Метод множителей Лагранжа
|
|||
|---|---|---|---|
|
#18+
Хеееееелп. Работаю над курсовиком по методу множителей Лагранжа. У кого-нить есть исходник (желательно) на VB, или на паскале по решению задачи путем множителей Лагранжа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2009, 22:57 |
|
||
|
Метод множителей Лагранжа
|
|||
|---|---|---|---|
|
#18+
Вот и сдесь никто не знает(((((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2009, 07:01 |
|
||
|
Метод множителей Лагранжа
|
|||
|---|---|---|---|
|
#18+
Вы б задачу по-подробнее описали, тогда глядишь и результат был бы другой. Лично я осведомлён о множителях Лагранжа в контексте вариационного исчисления. Это Ваш случай? Тогда для начала было бы неплохо сказать экстремум чего Вы ищите и при каких ограничениях. Или Вам вообще нужен солвер для фукционала обшего вида для случая многих независимых переменных плюс некое количество произвольных нелинейных связей? С учётом того что это выливается в необходимость численного решения системы нелинейных диффуров в частных производных... не то чтоб это супер сложно, если мне не изменяет склероз, то уравнения Эйлера-Лагранжа получаются строго эллиптическими так что кондовая центральная разность рулит, но голубчик, кода там придётся написать нехило. Не думаю что б Вам по свистку кто-либо выложит такое... Ищите какой-нибудь опен соурс. Вот если Вам это надо реализовать для какого-нибудь простенького функционала, да ещё часть работы можно сделать аналитически, ну тогда может быть... хотя... всё равно врядли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.04.2009, 21:41 |
|
||
|
Метод множителей Лагранжа
|
|||
|---|---|---|---|
|
#18+
mikhail_nТогда для начала было бы неплохо сказать экстремум чего Вы ищите и при каких ограничениях. Вот как раз пользователь сам должен вводить и то и другое. Задача такая, программа должна решать любую задачу по нахождению экстремумов с помощью метода множителей лагранжа. Я такого алгоритма даже не представляю, если пользователь сам должен определять не переменные, а сами функции, и даже их количество. Для меня такая прога - это что-то паранормальное. Che Go Hotelhttp://kursovik.net/programming/180103.html Спс!!!!! Но ведь это Интерполяция полиномом Лагранжа. А меня интересует метод множителей. Я наткнулся на один курсач, но там нет ни кода, ни вообще алгоритма работы программы, а только объясниется принцип работы этих множителей. Вот я уже подумываю, реально ли вообще написать такую прогу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2009, 04:24 |
|
||
|
Метод множителей Лагранжа
|
|||
|---|---|---|---|
|
#18+
mikhail_nТогда для начала было бы неплохо сказать экстремум чего Вы ищите и при каких ограничениях. Вот как раз пользователь сам должен вводить и то и другое. Задача такая, программа должна решать любую задачу по нахождению экстремумов с помощью метода множителей лагранжа. Я такого алгоритма даже не представляю, если пользователь сам должен определять не переменные, а сами функции, и даже их количество. Для меня такая прога - это что-то паранормальное. Che Go Hotelhttp://kursovik.net/programming/180103.html Спс!!!!! Но ведь это Интерполяция полиномом Лагранжа. А меня интересует метод множителей. Я наткнулся на один курсач, но там нет ни кода, ни вообще алгоритма работы программы, а только объясниется принцип работы этих множителей. Вот я уже подумываю, реально ли вообще написать такую прогу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2009, 04:25 |
|
||
|
Метод множителей Лагранжа
|
|||
|---|---|---|---|
|
#18+
Да почему не реально-то, это ведь курсовик!:) Пишешь прогу - в лайне едите пользователь записывает многочлен какой-то там степени со сколькими-то переменными (ну не надо тебе пока синусов, косинусов и прочего ... ) в виде: 2x^2+x+1=0 Еще списком простые ограничения ну, например, x>=2 x<=5. Решаешь систему, как тебе там надо, твоим методом. Производные, частные производные и интегралы взять от многочлена можно. Легко даже запрограммировать. Потом скажешь, что это базовая часть твоего будущего диплома и все прокатит на отлично;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2009, 09:33 |
|
||
|
Метод множителей Лагранжа
|
|||
|---|---|---|---|
|
#18+
Подробней: Ну, вот ввел пользователь многочлен. Он у меня получился типа стринг. Я посимвольно считываю из этой строки и передаю символ в case, где выбирается этот тип символа. Если это какое-то число, то читаю следующий символ, проверяю, не число ли это тоже, проверяю не X ли это, и если икс, то не в степени ли он. Тоже самое со знаками типа +, -, ^. Вырисовывается рекурсия. В 2x^2+x+1=0 программа посимвольно доходит до первого плюса, т.е. выделяет 2х^2 в отдельную переменную, потом "+" в переменную, которая будет решать, действие между двумя переменными (2x^2 и x), затем начинаются переносы простых чисел в одну часть, иксов в другую, и т.д. И это только начало, Лагранж еще не пришел.... Это все при неизвесном количестве членов и вообще уравнений, и ограничений... Еще производные то ладно, а вот систему потом еще решать при опять же неизвестном количестве многочленов... Фига ни себе базовая часть диплома!!! =D. Страшновато пред дипломом становится. Охото попросить у кого-нить библиотечку с функцией готовой, чтоб сама все это делала. Вечно мя на халяву тянет))) Я весь алгоритм правильно понял, или есть как попроще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2009, 16:03 |
|
||
|
Метод множителей Лагранжа
|
|||
|---|---|---|---|
|
#18+
В конце рабочего дня набросаю Вам коротенько как можно предоставить пользователю интерфейс для определения целевой функции и ограничений без парсера аналитических выражений. Но всё равно, что б такая прога работала, Вам придётся или самому написать или найти готовый модуль для решения систем нелинейных алгебраических уравнений (ну например методом Ньютона). Ибо в конечном итоге задача будет сводиться к этому. Кстати, ничего себе так курсовик. Какой курс, чё за школа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2009, 18:02 |
|
||
|
Метод множителей Лагранжа
|
|||
|---|---|---|---|
|
#18+
teslaПодробней: Ну, вот ввел пользователь многочлен. Он у меня получился типа стринг. Я посимвольно считываю из этой строки и передаю символ в.... или есть как попроще?ПОдойдите попроще. Пусть пользователь не вводит стринг, а массив отдельных коэффициентов. a0, а1, а2 и т.н. Это Вас избавит от головной боли парсинга :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2009, 19:53 |
|
||
|
Метод множителей Лагранжа
|
|||
|---|---|---|---|
|
#18+
Насколько я вижу Вам не до функционалов, ладно, ограничтесь одной произвольной функцией от n независимых переменных и m (m < n) нелинейных связей произвольного вида. Т.е. на языке математики имеем: f(x,y,z,...) - функция n переменных экстремум которой нужно найти. u(x,y,z,...) = 0 v(x,y,z,...) = 0 m нелинейных связей-ограничений. w(x,y,z,...) = 0 Чтобы избежать парсинга аналитических выражений я поступил бы так. Сигнатуру своего метода я бы определил слудующим образом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Вы пишите функцию LagrangeMultipliers, внутри неё Вы вызываете функцию MyFunc, которую должен будет написать пользователь Вашей функции. В функции MyFunc пользователь должен будет описать аналитический вид целевой функции f и налитические же выражения для связей (u,v,w) по примеру показаному выше. Внутри своего метода Вы будете повторно вызывать MyFunc в цикле до тех пор пока итерационный процесс (метод Ньютона) не сойдётся к корню с заданной точностью eps. Конкретно, Ваша функция LagrangeMultipliers будет по заданному массиву независимых переменных формировать расширенную целевую функцию F(x,y,z,...,alpha,beta,gamma,...) = f(x,y,z,...) + alpha*u(x,y,z,...) + beta*v(x,y,z,...) + gamma*w(x,y,z,...) + .... alpha, beta, gamma и есть те самые множители Лагранжа. После этого путём вызова функции MyFunc изнутри функции LagrangeMultipliers Вы будете вычислять сначала невязки dF/dx = 0 dF/dy = 0 dF/dz = 0 ......... dF/d(alpha) = 0 dF/d(beta) = 0 dF/d(gamma) = 0 .......... Ну а потом и Гессиан (т.е. матрицу вида d2F/dx*dy...). Теперь у Вас есть всё для Ньютона. Ну и в цикле Ньютона меняете значения независимых переменных до сходимости к решению). Для Ньютона ещё потребуется простенький солвер СЛАУ (LU, кондовый Гаусс). Это самое простое что по-моему можно посоветовать Вам в Вашем положении...(-: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2009, 02:19 |
|
||
|
Метод множителей Лагранжа
|
|||
|---|---|---|---|
|
#18+
mikhail_n, спс огромное, буду стараааться и стараться. Школа - Белгородский Индустриальный Колледж, 3 курс. Самое смешное, что кому-то попалось решение квадратного уравнения или текстовый редактор))))))). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2009, 02:59 |
|
||
|
Метод множителей Лагранжа
|
|||
|---|---|---|---|
|
#18+
teslamikhail_n, спс огромное, буду стараааться и стараться. Школа - Белгородский Индустриальный Колледж, 3 курс. Самое смешное, что кому-то попалось решение квадратного уравнения или текстовый редактор))))))). Когда я учился в техникуме, то у меня в теме курсовой был степенной метод нахождения собственных значений и собственных векторов матрицы. При том, что у некоторых был метод дихотомии для решения уравнений(это метод половинного деления). У вас я смотрю еще веселее. Скорее всего стоит забить на парсер, и сделать ввод коэффициентов для уравнения числами. Все равно, судя по такой постановке вопроса, никто не оценит ваших стараний по написанию красивого приложения. (Не удивлюсь варианту, при котором не наведете красоты, а человек с решением квадратного уравнения наведет, и вам влепят 4, а ему 5) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2009, 14:33 |
|
||
|
Метод множителей Лагранжа
|
|||
|---|---|---|---|
|
#18+
авторmikhail_n, спс огромное, буду стараааться и стараться. Школа - Белгородский Индустриальный Колледж, 3 курс. Самое смешное, что кому-то попалось решение квадратного уравнения или текстовый редактор))))))). Они у Вас там что о%%%%%ли там чтоли? Забудьте что я Вам тут понаписал (тем более что я ошибся - для такого солвера аналитически надо определять не саму целевую функцию и ограничения, а компоненты градиента расширенной функции). Сделайте так - возьмите следующую задачу: Целевая фукция f(x,y,z) = x^2 + y^2 + z^2 (то бишь семейство концентрических сфер, здесь никаких коэффициентов) Ограничение - плоскость Ax + By + Cz + D = 0 (вот A,B,C,D позвольте пользователю вводить с экрана). Требуется найти минимум целевой функции при данном ограничении. Очевидно, что задача имеет простой и прозрачный физический смаысл - минимум будет достигаться в точке касания плоскости и сферы. Таким образом, решение существует и единственно, Адамар доволен. Значица, по введенным пользователем A,B,C,D внутри своей проги составляете расширенную целевую функцию F(x,y,z,q) = x^2 + y^2 + z^2 - q*(Ax + By + Cz + D) и определяете компоненты её градиента и приравниваете их нулю: dF/dx = 2*x - q*A = 0 dF/dy = 2*y - q*B = 0 dF/dz = 2*z - q*C = 0 dF/dq = -A*x -B*y - C*z - D = 0 Получаете 4 ЛИНЕЙНЫХ алгебраических уравнения относительно 4 неизвестных - x,y,z, и q (собственно множитель Лагранжа). Решаете их, находите x,y,z, подставляете в f(x,y,z) и получаете ответ. Всё! Если препод начинает гундеть, объясняете ему во что выливается кодирование этой задачи для функционала общего вида и просите напомнить Вам когда это он успел прочесть Вам все те разделы вычматов которые при этом необходимо знать. Получаете 4 и идёте пить пиво (или водку, ну что Вам ближе). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2009, 19:43 |
|
||
|
Метод множителей Лагранжа
|
|||
|---|---|---|---|
|
#18+
Во, mikhail_n, благодарю от всей души!!! Подошел седня к преподу, объяснил сложность и получил шаблон. А до этого шаблон ни как не мог допросится!!!! Пользователь теперь вводит только переменные))))))) Уряяяяяяяяяя!!!!!!!!! Спс огромное за помощь!!!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2009, 13:51 |
|
||
|
Метод множителей Лагранжа
|
|||
|---|---|---|---|
|
#18+
tesla, можешь сбросить, пожалуйста, свою программу Буду очень признателен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2018, 19:00 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=14&tid=1340120]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 187ms |

| 0 / 0 |
