Текущий архив: 2007.07.01;
Скачать: CL | DM;
Вниз
Решить систему нелинейных уравнений Найти похожие ветки
← →
Галинка © (2007-06-04 12:27) [0]попробовлаа методом последовательных приближений, не получается (((
как еще можно попробовать. И где можно об этом почитать? он-лайн конечно ))
← →
Desdechado © (2007-06-04 12:29) [1]Есть точные и приближенные методы.
Посмотри метод Зейделя, метод итераций. В принципе, они простые.
← →
Думкин © (2007-06-04 12:31) [2]А каким методом?
Есть метод Ньютона, Стеффенсона и т.д и т.п
← →
Галинка © (2007-06-04 12:40) [3]мне все равно каким методом. Главное решить. Уравнения и вправду сложноватые и переменных много ((
спасибо за названия методов. Посмотрю. Метод иттераций пробовала, не дал результатов к сожалению Может неправильно применила. В уравнениях часто встречается теорема косинусов с раздичными переменными. Может можно какую то замену сделать?
← →
Думкин © (2007-06-04 12:43) [4]> Метод иттераций пробовала
Каких итераций? Просто итераций в природе не существует. Все численные методы для такого - это и есть те или иные итерации.
Как в уравнениях может встречаться теорема?
← →
Александр Иванов © (2007-06-04 12:56) [5]> [4] Думкин © (04.06.07 12:43)
Нас почему-то учили именно методу итераций и, как его развитие - метод Зейделя.
А как он еще может называеться?
← →
Галинка © (2007-06-04 13:00) [6]Короче, основная сложность в том, что пять переменных. ((( В одном уравнении одновременно три.
← →
Думкин © (2007-06-04 13:02) [7]> Александр Иванов © (04.06.07 12:56) [5]
А что это такое? Можно мне тогда посмотреть на реализацию?
Насколько я понимаю, в большинстве случаев все сводится к тому, что у сжимающего отображения есть неподвижная точка на определенном множестве и бла-бла.
Мы строим такое сжимающее отображение по уравнению и задаем начальное условие. Потом показываем, что неподвижная точка и есть решение уравнения.
Из начального итерируемся в следующее и т.д. Т.к. отображение сжимающее то с итерациями приближаемся к решению. Приближаться можно по разному.
Для уравнений одного перменного самое известное - метод Ньютона.
← →
Галинка © (2007-06-04 13:02) [8]Я часто пользовалась методом последовательных приближений. Но там была как правило одна переменная. И я примерно знала, к чему приближать, т.е. примерное решение было известно. Здесь система более сложная. И я даже приблизительно не могу найти, что тыда можно подставить. Т.е. от чего начинать приближения ((
← →
Галинка © (2007-06-04 13:04) [9]Уточнение. Тогда была не то что одна переменная, но более строгая зависимость от одной переменной. Типа температура, теплоемкость, энергия сгорания...
← →
Думкин © (2007-06-04 13:05) [10]> Галинка © (04.06.07 13:00) [6]
Так ведь непонятно, что и почему не получилось. Для любого метода описываются, как правило, необходимые или достаточные условия применения. Тут с этим как?
← →
Иксик © (2007-06-04 13:05) [11]
> Думкин © (04.06.07 13:02) [7]
> > Александр Иванов © (04.06.07 12:56) [5]
>
> А что это такое? Можно мне тогда посмотреть на реализацию?
>
Так иногда обзывают какой-нибудь метод Евклида.
← →
Галинка © (2007-06-04 13:08) [12]Думкин © (04.06.07 12:43) [4]
Как в уравнениях может встречаться теорема?
Вот так и может, например:
a^2+R^2-2*a*R*cos(theta) or
(ro - R)^2 + Rg^2 + 2*(ro-R)*Rg*cos(theta_0)...
или неполная теорема косинусов, там где нет двойки у слогаемого с косинусом...
← →
Думкин © (2007-06-04 13:10) [13]> Галинка © (04.06.07 13:08) [12]
Теорема косинусов - это вполне четкое утверждение для сторон и углов треугольника. То что у вас - это не теорема, а некоторая запись, которая похожа на ту, что может быть использована при формулировке теоремы.
← →
Desdechado © (2007-06-04 13:14) [14]Метод итераций прост тем, что там можно задать любую стартовую точку, поставить в систему, найти рассогласования, из них вывести поправку к стартовой точке, поставить снова и т.п.
Точка, естественно, в n-мерном пространстве, где n - количество переменных.
В общем случае для n неизвестных должно быть n уравнений. Если уравнений меньше, задача обычно нерешаема. Если уравнений больше, то в общем случае решений больше 1.
И иметь в виду, что есть ограничения применимости методов.
← →
Думкин © (2007-06-04 13:19) [15]> Desdechado © (04.06.07 13:14) [14]
По-моему, если уравнений меньше - то многообразие решений может иметь размерность больше 0, а вот если больше - то как раз решений может и не быть.
← →
Галинка © (2007-06-04 13:27) [16]Desdechado © (04.06.07 13:14) [14]
с количеством переменных и уравнений - все в порядке. Их по пять. Но если бы были хоть какие-то справочные данные, что для таких-то радиусов, это радиус может лежать в таких-то пределах, було бы легче.
Раньше я например делала так. Задавала начальное значение переменной одной, от которой зависила напрямую вторая переменная, а третья зависела от обеих первых. Потом по третьему переменному строго определялась "принятая" переменная. Вычесленное значение сравнивалось с принятым. Если ошибка была в допустимых приделах, то все в порядке. Если больше - то новое вычесленное значение становилось "принятым" и процедура повторялась... пока не достигалая нужная точность. Это вроде и есть последовательные приближения.
Но в данной ситуации каждая переменная зависит как минимум от трех других. Т.е. мне нужно для начала три "принятых" значения. Или?
← →
Думкин © (2007-06-04 13:37) [17]> Галинка © (04.06.07 13:27) [16]
Как у вас устроен итерационный шаг?
← →
Галинка © (2007-06-04 13:44) [18]пока никак... я не могу себе пока представить, как можно все это применить, когда надо "принять" минимум три переменных ((
← →
Галинка © (2007-06-04 13:45) [19]хотя нет, я конечно пробовала, но ничего не получилось. если хотите, я приведу код, правда он в матлабе ))
← →
Галинка © (2007-06-04 13:46) [20]вот код
clear all;
tetha_o = 35*3.14/180; tetha = 80*3.14/180;
rg = 18; eps = 0.01; hno = 12;
rsp = 6; r_b = rg + 0.2; r = r_b + eps;
while (abs(r-r_b)>eps)
r=r_b;
ano=rg+hno-rsp;
aa=(ano^2+r^2-rsp^2-2*ano*r*cos(tetha));
ab=(r-rsp-ano*cos(tetha));
rfl_b=0.5*aa/ab;
aa=(rfl_b-r)^2+rg^2-rfl_b^2+2*(rfl_b-r)*rg*cos(tetha_o);
ab=(rg-rfl_b+(rfl_b-r)*cos(tetha_o));
ro=0.5*aa/ab;
aa=(r*(rfl_b-r-hno)-0.5*hno^2-(rfl_b-r)*(r+hno)*cos(tetha));
ab=(rfl_b-r-hno-(rfl_b-r)*cos(tetha));
rsp_b=aa/ab;
r_b=ano*cos(tetha)+rfl_b-sqrt(ano^2*(cos(tetha))^2+(rfl_b-rsp_b)^2-ano^2);
end
rfl=rfl_b;
rsp=rsp_b;
← →
Desdechado © (2007-06-04 13:53) [21]http://window.edu.ru/window_catalog/files/r36976/stup202.pdf
Вот метод Ньютона на примере электрическом.
← →
Desdechado © (2007-06-04 13:55) [22]http://www.uni-vologda.ac.ru/students/pm04/pm04mav/%d1%e8%f1%f2%e5%ec%fb/1.htm
А вот для Зейдель для СЛАУ, но смысла не меняет.
← →
Галинка © (2007-06-04 15:13) [23]ап
ну может еще кто-то что-то посоветует?
← →
Romkin © (2007-06-04 15:18) [24]Метод градиентов :)
← →
Alx2 © (2007-06-04 15:33) [25]>Галинка © (04.06.07 13:46)
Чего-то не понял где там уравнения, а где переменные.
Можно их явно написать?
← →
MBo © (2007-06-04 15:34) [26]http://www.srcc.msu.su/num_anal/lib_na/cat/cat112.htm
http://alglib.sources.ru/optimization/
а тут только блок-схема:
http://alglib.sources.ru/equations/feqxsys.php
← →
Галинка © (2007-06-04 15:48) [27]Alx2 © (04.06.07 15:33) [25]
сложно. Я попробую ))
rs=(R*(ro-R-h)-0,5*h^2-(ro-R)*(R+h)*cos(theta))/(ro-R-h-(ro-R)*cos(theta));
ro = (a^2+R^2+rs^2-2*a*R*cos(theta))/(2*(R-rs-a*cos(theta)));
h = ro/R+a+sqrt(a^2+(ro-R)^2+2*a*(ro-R)*cos(theta));
R = a*cos(theta)+ro+sqrt(a^2*cos^2(theta)+(ro-rs)^2-a^2);
ro_0 = 0.5*((ro-R)^2+rg^2-ro^2+2*(ro-R*rg*cos(theta_0)))/(rg-ro+(ro-R)cos(theta_0));
← →
MBo © (2007-06-04 16:02) [28]>Галинка © (04.06.07 15:48) [27]
А что здесь неизвестные?
И какая изначальная задача?
← →
Галинка © (2007-06-04 16:11) [29]rg, h, theta, theta_0 - известны;
ro, R, ro_0, a, rs ß - неизвестны;
задача - решить систему.
самыми важными являются величины rs, ro. Их и надо найти, при соответствующих углах, радиусе начальной окружности rg и подъеме толкателя - h.
← →
Alx2 © (2007-06-04 16:13) [30]>Галинка © (04.06.07 15:48)
Параметру a не нашел из предыдущего числового соответствия.
Скормил системку в Maple, пока увы. Не обнаруживается решение его численными методами (значение a брал от фонаря).
Наверное, придется писать самому, чтобы понять что там творится. :)
← →
Alx2 © (2007-06-04 16:14) [31]>Галинка © (04.06.07 16:11)
Партизан, однако. :)
← →
MBo © (2007-06-04 16:15) [32]>задача - решить систему.
>самыми важными являются величины rs, ro. Их и надо найти, при соответствующих углах, радиусе начальной окружности rg и подъеме толкателя - h
Т.е. имеется некая кинематическая система со связями.
Вот ее и стоит описать, может, другой подход найдется.
← →
Галинка © (2007-06-04 16:21) [33]а неизвестно, но оно подчиняется зависимости a + rs = R + h
← →
Галинка © (2007-06-04 16:24) [34]MBo © (04.06.07 16:15) [32]
ну я ж не буду велосипед изобретать. Умный человек написал уравнения для этой кинематической системы - кулачковый механизм с плоским толкателем. Все так считают, а мне новое чудо света подавай...
Я лучше код по твоей ссылке проанализирую. Авось и пойму как оно все работает )))
← →
isasa © (2007-06-04 16:26) [35]Поищи в Инете или справочнике по математике(раздел численные методы) по ключевому слову матрица Якоби, или Якобиан.
Мне помогло. :)
← →
Галинка © (2007-06-04 16:31) [36]isasa © (04.06.07 16:26) [35]
нашла уже. Осталось только матрицы сделать. Вот тут собака и порылась. Т.к. переменные все время перемножаются между собой. Т.е. в одном одночлене полинома они могут и складываться и перемножаться ((
← →
isasa © (2007-06-04 16:43) [37]Напиши функции по вычислению частных производных, в которые параметром передай нужную функцию вычисления полинома...
Мне помогло. :)
← →
Krants © (2007-06-04 17:09) [38]
> Галинка © (04.06.07 12:27) [0]
Если просто надо решить, то маткад легко справиться...
Если решение должно быть програмное, то тот-же маткад! Он может решать параметро###ваные (сложно выговарить) системы, т.е. каждое искомое значение приводить в одно парам-ое уравнение... (Которое и переложишь в программу)
← →
Alx2 © (2007-06-04 17:22) [39]>Галинка © (04.06.07 16:11)
Лучшее, что получилось (минимум невязки) со значениями из поста
"Галинка © (04.06.07 13:46)"
rs = 3.050413, R= 0.033392, ro= 0.207761,a = 2.885776, ro_0= 9.633942
Сумма квадратов отклонений "от того, что нужно " 17.7
:)
← →
Галинка © (2007-06-04 17:42) [40]Alx2 © (04.06.07 17:22) [39]
вот и получается, фигня извини. Не обижайся, я понимаю, что с лучшими намерениями. Но ответ совершенно неудовлетворительный. А какие углы и какое подняти и началный радиус были?
← →
Галинка © (2007-06-04 17:44) [41]Ты использовал какую-то встроенныю функцию, или можно поинтересоваться алгоритмом?
← →
Alx2 © (2007-06-04 17:50) [42]>Галинка © (04.06.07 17:42)
>вот и получается, фигня извини. Не обижайся, я понимаю, что с лучшими
>намерениями. Но ответ совершенно неудовлетворительный
Ничего страшного. Это вся, что я сумел вытащить оттуда.
>А какие углы и какое подняти и началный
>радиус были?
Этого я не знаю. Просто не знаю что ты называешь радиусами и углами.
Значения констант вот:
double theta_0 = 35*Pi/180;
double theta = 80*Pi/180;
double rg=18;
double h=12;
>Ты использовал какую-то встроенныю функцию, или можно
>поинтересоваться алгоритмом?
Банальный градиентный спуск. Но перед этим поискал точку откуда спускаться. Методом тыка. Перебирал случайные значения переменных и фиксировал лучший результат невязки.
Потом с лучшего приближения начал спускаться по антиградиенту :)
← →
Галинка © (2007-06-04 18:25) [43]Alx2 © (04.06.07 17:50) [42]
в каком софте? как называется? желательно по-английски )) может у меня есть что-то похожее, тогда буду ковырять.
← →
Alx2 © (2007-06-04 18:41) [44]>Галинка © (04.06.07 18:25) [43]
>в каком софте?
Небольшую программку написал на C++
После того, как убедился, что Maple не может обнаружить корни - полез вручную (в смысле на С++) проверять на "а вдруг?"
← →
Галинка © (2007-06-04 18:42) [45]а моно код программки? или ???
← →
Галинка © (2007-06-04 18:44) [46]я попробую сегодня в CATIA построить работоспособный механизм. Вроде катя как раз считает каким-то правильным методом (скорее всего МКЭ). И попробую загнать в матлаб завтра. Может что получится (((
← →
Alx2 © (2007-06-04 18:47) [47]>Галинка © (04.06.07 18:42)
>а моно код программки? или ???
В этом смысла нет. Он наколеночный.
>я попробую сегодня в CATIA построить работоспособный механизм.
Вот если б увидеть схему штуковины, которую ты просчитываешь, возможно, все получилось бы много лучше.
← →
Alx2 © (2007-06-04 18:55) [48]Вот еще один вариант, с меньшей невязкой.
Получилось после переписки уравнений с целью избавиться от знаменателей
rs = 0.760549, R= -5.430502, ro= -4.994261,a = 5.566454, ro_0= 9.622502
После подстановки в твою систему:
h = 12. = 12.14466119,
R = -5.430502 = -2.276441846,
ro = -4.994261 = -4.998319094,
rs = .760549 = .8334232291,
ro_o = 9.622502 = 9.622501650
← →
Галинка © (2007-06-04 18:59) [49]Alx2 © (04.06.07 18:47) [47]
так проектирую кулачковый механизм с тарельчатым толкателем. По условию неразрыности кинематической пары профиль кулачка описывается дугами нескольких радиусов, а именно Rg, R_0, R_fl, R_sp. Вот их и надо посчитать.
Один раз на обум получилось построить пару в CATIA и произвести симуляцию движения. В CATIA вроде имеется модуль МКЭ. Т.е. он просчитывает, возможно ли неразрывность пары. Т.к. симуляция была удачной, вроде напрашиваетс я вывод, что неразрывность сохранялась. Но черт меня дернул изменить что-то, и повторить экспиримент не удалось. Т.к. я просто забыла исходные данные, ну т.е. размеры, когда вращение было (((
Я не смогла найти подробную схему. Но если есть под рукой или где-то еще учебник ТММ, то там должен быть пример.
← →
Галинка © (2007-06-04 19:00) [50]это все радиусы. Сам понимаешь, что отрицательными они быть не могут ((
← →
Alx2 © (2007-06-04 19:18) [51]Нашел вроде бы сходимость. Но с учетом того, что sqrt отрицательными могут быть. Сейчас ограничу радиусы, чтобы в минуса не лезли и посчитаю.
← →
Галинка © (2007-06-04 19:26) [52]они могут быть отрицательными... ну в смысле могут быть со знаком минус в формуле...
← →
Alx2 © (2007-06-04 19:44) [53]Нет. Не получается с неотрицательными радиусами.
← →
Думкин © (2007-06-05 05:31) [54]> Т.к. переменные все время перемножаются между собой. Т.е.
> в одном одночлене полинома они могут и складываться и перемножаться
> ((
И в чем трудность? Это и есть то что вы спрашивали - нелинейная система. Еще могут быть разные элементарные функции. Трудностей в этом не болбше, чем при решении нелинейного уравнения одной переменной.
Уж чего-чего - а литературы по этому делу вагон с тележкой. Вместо поиска серебряной пули на форуме, без явной и четкой формулировки задачи, как человеку обучающемуся, рекомендую совет с шефом и поход в библиотеку.
По тем веткам, что вы создаете у меня сложилось впечатление, что последним вы усиленно пренебрегаете.
← →
Думкин © (2007-06-05 05:34) [55]К тому же у вас нет полиномов. У вас существенно нелинейная система.
Страницы: 1 2 вся ветка
Текущий архив: 2007.07.01;
Скачать: CL | DM;
Память: 0.62 MB
Время: 0.024 c