Можно ли в С/С++ решить систему нелинейных уравнений? Три уравнения, 3 неизвестных. Можно было бы решить у руками, но это ОЧЕНЬ долго, и не факт, что решение существует. С помощью программы хотелось бы узнать, существует ли оно вообще, и, если да, получить его. Сами уравнения прикреплены. Там xi, yi - известны, а a, b и r неизвестны.
Saessie Ну, например, решением будет: a, b - любые (кроме a = xi, b = yi), r - определяется из 3-го уравнения.
Нет, надо именно на С/С++. Или взять готовое аналитическое решение и запихнуть его в эту программу на С/С++. Пакетов, готовых дать именно аналитическое решение, я не знаю. А именно на С надо потому что бОльшая часть программы уже на С написана, осталось только вот это. Ага. Только вот r, помимо того, что оно определяется из третьего уравнения, не должно противоречить первым двум с "любыми" a и b.
Saessie Так оно вроде как и не противоречит: подставь при любых a, b значение r^2=(xi-a)^2+(yi-b)^2 в первое и второе уравнение, получишь 0.
Ладно, не об этом речь. 3 уравнения, 3 неизвестных. Если каждое из неизвестных входит в каждое из уравнений, то систему можно решить. Так? Так. Поэтому еще раз вопрос: можно ли это сделать в С? Всякие частные решения типа любые а и b не рассматриваем. Нужно одно общее решение. Была бы аналитическая формула - не было бы проблем.
Saessie Не так. Система может быть несовместной, а значит вовсе не иметь решений. Ни фига себе частное решение - целое множество! Может, что-то с постановкой задачи не то?...
Поверь мне решение проблемы занимает гораздо меньше времени чем написание программы, которая будет её решать. Вот решение заняло 5 минут, набор в Ворде - 15 мин, разрабатывать алгоритм решения и прочее и прочее - дни как минимум (сам любил напряч железо - но в итоге напрягался сам).
да ну. там де под корнем фсякая фигня = r - это ж куча решений. это ж вроде есле в квадрат эту фегню, то получится уравнение окружности чтоле. ну минус точки которые x=a y=b. не пенать, йа давно подобные системы видил, могу ацке ошибацо
neofit Ты не прав Уравнение вида (выражение 1)*(выражение 2) = 0 имеет как минимум два независимых решения: 1) (выражение 1) = 0 2) (выражение 2) = 0 Ты рассмотрел только первое равенство, которое как ты верно заметил решением не является, а из второго следует бесконечное множество решений.
Y_Mur в пункте (3) решения: (х-а)(-r+корень) = 0 (y-b)(-r+корень) = 0 -r+корень = 0 т.е. [-r+корень] есть в первых двух уравнениях системы. И третье уравнение - это и есть "2) (выражение 2) = 0". В чём косяк? можь я чё не допонял?... Или [-r+корень], надо решать независимо от того, что x=a, y=b. Но если я не ошибаюсь - то тогда это не система, а совокупность уравнений (система истина при решении всех входящих в неё уравнений) p.s. я могу дико заблуждаться
не-не Y_Mur прав. Вся система сводится к уравнению -r+корень=0 которое после преобразования сводится к уравнению окружности: (x-a)2 + (y-b)2 = r2 [Уравнение окружности имеет вид (x – a)2 + (y – b)2 = R2, где a и b – координаты центра окружности, R(у нас r) - радиус] при этом a и b и r никак не ровны нулю. Тока как его решать я пока не знаю...
(x-a)2+(y-b)2=r2 [общий вид уравнения окружности: AX2 + BX + AY2 + CY + D = 0 при условии, что B2+C2-4AD > 0] приведём наше уравнение к этому виду: x2-2ax+a2 + y2-2by+b2 - r2 = 0 неизвестны a, b и r (x и y известны) a2 - 2xa + b2 - 2yb + (x2 + y2 - r2) = 0 A = 1 B = 2x C = 2y D = x2 + y2 - r2 условие выполняется: 4x2 + 4y2 - 4x2 - 4y2 + 4r2 > 0, (т.к. r не =0) тогда центр (a,b) будет : a=-B/(2A) = -B = -x b=-C/(2A) = -C = -y ну и радиус: r2 = (B2 + C2 - 4AD)/(4A2) = (4x2 + 4y2 - 4(x2+y2-r2))/4 = = x2 + y2 - x2 - y2 + r2 = r2 - r, чёт не получается найтить - буду проббовать ещё... ------------------------------------------------------------- хотя если подставить в самое верхнее уравнение, то получим (x-(-x))2+(y-(-y))2=r2 4x2+4y2=r2 r = корень(4x2 + 4y2) Извините за неудобочитаемость, можно ли это назвать решением не знаю, я сам уже запутался в конец.