Нелинейное алгебраическое уравнение.

Сообщение №6327 от Fw: Михаил К 12 января 2003 г. 09:50
Тема: Нелинейное алгебраическое уравнение.

Сообщение от Михаил К 11 января 2003 г. 19:16

Помогите, пожалуйста, архитектору найти корни уравнения для функции:
(x-a)^2+(y-b)^2-r^2=(x^2)/c
- корни являются точками пересечения параболы и окружности.
- Моего образования для решения этой задачки не хватает :((



Отклики на это сообщение:

Re: Вроде простое уравнение, а решение не могу найти Анатолий 11 января 19:58 нов
Надо прежде всего свести подобные члены
x^2(1-1/с)-2ax+a^2+(y-b)^2-r^2=0
1) c=1 -> -2ax+a^2+(y-b)^2-r^2=0 - то-есть парабола
2) c>1 ->(1-1/с)*(x-a/(1-1/с))^2+(y-b)^2=a^2(1/(1-1/с)-1)+r^2 то-есть эллипс
3) c<1 ->-(1/с-1)*(x+a/(1/с-1))^2+(y-b)^2=-a^2(-1/(1/с-1)+1)+r^2 то-есть гипербола если r^2-a^2(-1/(1/с-1)+1)>0
если r^2-a^2(-1/(1/с-1)+1)=0 - это будет пучек из двух прямых
если r^2-a^2(-1/(1/с-1)+1)<0 - решений нет
На всяк случай проверьте знаки, числа и т.п. - но в принципе решение ищется таким образом

· --------------------
· Re: Вроде простое уравнение, а решение не могу найти Вячеслав 11 января 20:02
Уравнение с двумя неизвестными решается не однозначно. Например, подставьте в это уравнение вместо Х что-угодно, получите квадратное уравнение относительно У, которое легко решить.
Если Вы действительно имеете в виду точки пересечения параболы и окружности, то нужно решать систему 2-х уравнений:
"лев.часть"=0 и у="прав.часть", а это решается легко.


Анатолий, спасибо! Извини, но ошибочка в моей постановке задачи:
(x-a)^2+(y-b)^2-r^2=0 - уравнение окружности, a и b - координаты центра окружности, центр принадлежит (находится) любому месту кривой (параболы)
(x^2)/c - y=0 - уравнение параболы, где с коэффициент прогиба c > 0

я выношу у в правую часть и приравниваю оба уравнения, таким образом надо най ти корни (их может быть 4): х1, х2, х3 ,х4

Заранее благодарю за бескорыстную помощь!
Я участник форума talk.mail.ru/forum/talk.ru.archicad.
Задача, поставленная в форуме, создать параметрическую цепь с регулируемым натяжением (прогибом с>0). Все что мне нужно это равномерно распределить звенья по параболе, т.е. найти на параболе равноудаленные точки. Расстояние между точками есть диаметр звена цепи. Я также бескорыстно создаю данную программу для архитекторов и дизайнеров.
Вообще я упростил уравнение кривой для цепи:
мое уравнение у=(x^2)/c,
а уравнение «цепной линии» у=с*(COSH(х/с)), где COSH - гиперкосинус


> Анатолий, спасибо! Извини, но ошибочка в моей постановке задачи:
> (x-a)^2+(y-b)^2-r^2=0 - уравнение окружности, a и b - координаты центра окружности, центр принадлежит (находится) любому месту кривой (параболы)
> (x^2)/c - y=0 - уравнение параболы, где с коэффициент прогиба c > 0
>
> я выношу у в правую часть и приравниваю оба уравнения, таким образом надо най ти корни (их может быть 4): х1, х2, х3 ,х4

> Заранее благодарю за бескорыстную помощь!
> Я участник форума talk.mail.ru/forum/talk.ru.archicad.

> Задача, поставленная в форуме, создать параметрическую цепь с регулируемым натяжением (прогибом с>0). Все что мне нужно это равномерно распределить звенья по параболе, т.е. найти на параболе равноудаленные точки. Расстояние между точками есть диаметр звена цепи. Я также бескорыстно создаю данную программу для архитекторов и дизайнеров.
> Вообще я упростил уравнение кривой для цепи:
> мое уравнение у=(x^2)/c,
> а уравнение «цепной линии» у=с*(COSH(х/с)), где COSH - гиперкосинус

В таком случае (если такова постановка как Вы написали) центр окружности принадлежит параболе - это значит что (a^2)/c - b=0 -> b=(a^2)/c
И мы получим окончательно
(x-a)^2+(y-(a^2)/c )^2-r^2=0
Если у Вас с=const то получается однопараметрическое семейство окружностей радиуса r c координатами центра (a,(a^2)/c) - у Вас a изменяется от
-оо до +оо
Если взять у=с*(COSH(х/с)), то получим семейство
(x-a)^2+(y-с*(COSH(a/с)))^2-r^2=0


Верный ход, но теперь в уравнениях:
(x-a)^2+(y-с*(COSH(a/с)))^2-r^2=0 - окружность
и
с*(COSH(х/с))-у=0 - парабола
вынесем у в левую часть, затем приравняем оба уравнения.
Осталось найти корни х1, х2, х3, х4 - что для меня бооольшая проблема :-)))
Ты всего лишь чуточку упростил мою задачку :((

на всяк случай прилагаю картинку с моей проблемкой. Может поможет :)


Рисуночек в догонку


> Верный ход, но теперь в уравнениях:
> (x-a)^2+(y-с*(COSH(a/с)))^2-r^2=0 - окружность
> и
> с*(COSH(х/с))-у=0 - парабола
> вынесем у в левую часть, затем приравняем оба уравнения.
> Осталось найти корни х1, х2, х3, х4 - что для меня бооольшая проблема :-)))
> Ты всего лишь чуточку упростил мою задачку :((

> на всяк случай прилагаю картинку с моей проблемкой. Может поможет :)

Почему-то картинка у меня не отображается
В виде *.gif изобразите.
Но все равно я уже перестаю понимать.
Если центры окружностей "скользят" по параболе, то никак не может выполняться
система из Ваших двух уравнений.
Если бы я не следил за Вашей геометричесекой постановкой - а например просто решал эту систему, то мог бы в качестве решений получить одну или две точки или множество решений было бы пусто. Но в этом случае Вы неимели бы права утверждать, что центр окружности находится на параболе. Правда что тут говорить, без рисунка тяжело.
Или у Вас центр окружности лежит на параболе и ПРИ ЭТОМ Вас интересуют точки пересечения ЭТОЙ окружности с параболой
Тогда подставьте из второго уравнение y как функцию от x, то-есть
у=с*(COSH(х/с)) в первое уравнение и получите

(x-a)^2+(с*(COSH(х/с))-с*(COSH(a/с)))^2-r^2=0
откуда
(x-a)^2+с^2*((COSH(х/с))-(COSH(a/с)))^2-r^2=0
В общем-то мало утешительного
можно правда (иллюзорно) упростить например совершив замену
z=х/с -> (c*z-a)^2+с^2*((COSH(z))-(COSH(a/с)))^2-r^2=0
Поэтому проще будет ситуация в случае приближения
COSH(x/c)~~1+(x/c)^2/4
при этом кончно надо приближать и второй элемент формулы
COSH(a/c)~~1+(a/c)^2/4
При этом получим квадратное уравнение относимтельно х - которое можно решить


Попытка №2 послать картинку


> Попытка №2 послать картинку

Вижу картинку
И понимаю, что вроде прошлый раз я правильно все представлял
Но в явном виде решение будет только в случае замены
COSH(x/c)=(e^(x/c)+e^(-x/c))/2~~1+(x/c)^2/2
COSH(a/c)=~~1+(a/c)^2/2
(Я раньше допустил погрешность)
А у Вас тоже отклонение на cont - но это может и не играет роли
У Вас с*COSH(x/c)=~~x^2/с
А у меня получается (путем разложения в ряд Тейлора до квадратов)
с*COSH(x/c)=~~с+x^2/(2*с)
Ну я думаю квадратное уравнение Вы осилите
А вот в общем случае надо применять итерационные методы - они уже требуют
работы определенной. Хотя по времени исполнения, да и с точки написания программки - несложные. Здесь больше всего уходит сил на тщательное составление алгоритма.



Насколько я понял: нужны точки пересечения
окружности x2+y2=r2
параболы y=ax2+bx+c

Центр окуржности есть начало координат.
Если понадобится, перейдите в эту систему.
При ненулевом b аналитически не получиться (или возьмите справочник, есть очень сложна япроцедура перехода к кубичному уравнению и его решению по ф-ле Кардано).

Совет2: перейддите в полярные координаты. Здесь r=const, подставляйте число.
Кажется, можно найти уравнение параболы в полярных координатах.


> > Попытка №2 послать картинку

> Вижу картинку
> И понимаю, что вроде прошлый раз я правильно все представлял
> Но в явном виде решение будет только в случае замены
> COSH(x/c)=(e^(x/c)+e^(-x/c))/2~~1+(x/c)^2/2
> COSH(a/c)=~~1+(a/c)^2/2
> (Я раньше допустил погрешность)
> А у Вас тоже отклонение на cont - но это может и не играет роли
> У Вас с*COSH(x/c)=~~x^2/с
> А у меня получается (путем разложения в ряд Тейлора до квадратов)
> с*COSH(x/c)=~~с+x^2/(2*с)
> Ну я думаю квадратное уравнение Вы осилите
> А вот в общем случае надо применять итерационные методы - они уже требуют
> работы определенной. Хотя по времени исполнения, да и с точки написания программки - несложные. Здесь больше всего уходит сил на тщательное составление алгоритма.

К сожалению ЕЩЕ ОДНА ПОГРЕШНОСТЬ
Прав все-таки Ygrek. Квадратным уравнением и в упрощенном варианте не обойтись
Посудите сами
Исходные уравнения (в упрощенном варианте)
(x-a)^2+(y-b)^2-r^2=0 (1)
y=c+x^2/(2*c) (2)
b=c+a^2/(2*c) (3)
Подставив (3) в (1) получим
(x-a)^2+(y-c-a^2/(2*c))^2-r^2=0 (1')
Подставив (2) в (1') получим
(x-a)^2+(x^2/(2*c)-a^2/(2*c))^2-r^2=0 (1'')
Как видите константа с впереди (некоторое время) и не играет роли
Последнее уравнение можно переписать так
(x-a)^2+(x-a)^2*(x+a)^2/(2*c)^2-r^2=0 (1''')
А это уже уравнение не 2-й степени а 4-й (то-есть нужна уже формула Кардано)
--------------------------------------------------
Исходные уравнения (в общем варианте)
(x-a)^2+(y-b)^2-r^2=0 (1)
y=c*ch(x/c) (2)
b=c*ch(a/c) (3)
Подставив (3) в (1) получим
(x-a)^2+(y-c*ch(a/c))^2-r^2=0 (1')
Подставив (2) в (1') получим
(x-a)^2+(c*ch(x/c)-c*ch(a/c))^2-r^2=0 (1')
Последнее уравнение можно переписать так
(x-a)^2+c^2*(ch(x/c)-ch(a/c))^2-r^2=0 (1''')
А это уравнение не хуже предыдущего. Зато самый общий случай.
Решать его можно попробовать с помощью метода Ньютона
Задаете начальную точку х0=a
Выделяете в левой части уравнения (1''') линейную часть в окрестности х0.
(разложите в ряд Тейлора до первой степени f(x)~~f(x0)+f'(x0)*(x-x0)
здесь f'(x0) - производная от левой части в точке х0.
Уравнение будет иметь вид
f(x0)+f'(x0)*(x-x0)=0
Как видите линейное относительно х. А х0 Вы сами задали в качестве нуклевого приближения.
А чему будет конкретно равно f'(x0)
f'(x0)=2*(x0-a)+2*c*(ch(x0/c)-ch(a/c))*sh(x0/c) (4)
Решите это линейное уравнение относительно х - получите х1
то-есть
f(x0)+f'(x0)*(x-x0)=0
x1=x0-f(x0)/f'(x0) (5)
Я не подставляю даже (4) сюда
При программировании вы создадите две функции f(x) f1(x)=f'(x)
А рекуррентное соотношение будет (5) неизменнм.
Когда остановиться
Будете контролировать например
|х1-х0| (то-есть |х_n+1-x_n| ) на предмет малости
Получив х1 переприсвоите х0=х1 и т.д.
Если есть сходимость, то процесс такой быстро сходится


Всем огромное спасибо!
Все получилось! корни уравнения нашел методом "золотого сечения"
Цепь выполнена!
В подарок всем участникам высылаю картинку(загрузка ~1-2минуты):


Физика в анимациях - Купить диск - Тесты по физике - Графики on-line

Реклама:
Rambler's Top100