Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
15-1180883771
Leonidmsk
2007-06-03 19:16
2007.07.01
Проблема с HDD.


2-1181218595
webpauk
2007-06-07 16:16
2007.07.01
Array Pointer


15-1180443408
MiHoY
2007-05-29 16:56
2007.07.01
Список API функций программ


15-1180924174
Slider007
2007-06-04 06:29
2007.07.01
С днем рождения ! 4 июня 2007г Понедельник


2-1181320090
Bullfrog
2007-06-08 20:28
2007.07.01
Создание, редактирование отчета