2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 
Сообщение13.03.2009, 13:54 


29/09/06
4552
e7e5 в сообщении #194651 писал(а):
Теперь я не понял. Почему требуют?
Я неудачно выразился, взял просто свежий случай из своей практики, когда был один действительный корень. Я лишь о том, что
gris писал(а):
Несколько раз пытался по формуле Кардано посчитать корни, просто для интереса. Но каждый раз путался и злился.
Берём не формулу Кардано, а так называемое тригонометрическое решение. Там всё ясно и легко, путаться и злиться не приходится. Есть, правда, и другая точка зрения:
ewert в сообщении #135304 писал(а):
Не знаю и знать не хочу, что такое "тригонометрическое решение", но сильно подозреваю: это -- не более чем перевод на вещественный язык комплексной формулы Кардано.


Добавлено спустя 1 час 35 минут 45 секунд:

Вот пример возни с кубическим уравнением. Не сосем в тему e7e5, но пример мне кажется полезным.
Почему-то все обычно избегают явных решений кубических и четвёртой степени уравнений.

Когда я работал на строительстве одного автобана, и понадобилось рассчитывать т.н. переходную кривую,
мне пришлось, между прочими делами, искать точку пересечения окружности

$$
   [x+\mathrm{sign}w(1{+}r_w)]^2+y^2 -r_w^2=0
$$

с куском гиперболы

$$\sin\sigma(1-x^2+y^2)+2x y\cos\sigma=0,\qquad
    \mathrm{sign}(xy)=\mathrm{sign}\sigma.
$$

Прораб тогда попросил меня написать решение подробно. Кусок отчёта вставляю.

Исключение $x$ даёт

$$
   \begin{array}{l}
      y(y^3+3c_1y + 2c_0)=0,\quad\mbox{где}\\
      \hphantom{y(y^3+3} c_1=\dfrac13\left[1+2r_w-r_w(2{+}r_w) \sin^2\sigma\right],\\
      \hphantom{y(y^3+3} c_0=\mathrm{sign}w\,r_w(1{+}r_w)\cos\sigma\sin\sigma.
   \end{array}
$$

Исключение $y^2$ из той же пары:

$$
    x=\frac{-\sin\sigma(1+r_w+y^2)}{\sin\sigma(1{+}r_w)\mathrm{sign}(w)+y\cos\sigma}.
$$

Дискриминант кубического уравнения $y^3+3c_1y + 2c_0=0$:
$$
  \begin{array}{rcl}
   D&=&c_1^3+c_0^2=\\
    &=&\frac{1\strut}{27}(1+r_w\sin^2\sigma)^2%
        \left[(1+2r_w)^3-r_w(2+r_w)^3\sin^2\sigma\right].
  \end{array}
$$

Критерий выбора подходящих корней:
$$        
\mathrm{sign} y_i=-\mathrm{sign}w\,\mathrm{sign}\sigma:\quad
\setlength{\unitlength}{2pt}
\parbox[c]{70\unitlength}{%
\begin{picture}(70,20)(-35,-10)
\put(-35,0){\vector(1,0){70}}
\put(0,-10){\vector(0,1){24}}
\put(-20,0){\circle{20}}
\put(20,0){\circle{20}}
\put(10,0){\circle*{1}}\put(-10,0){\circle*{1}}
\put(7,1){1}%\put(-10,1){-1}
%
\put(13,13){$w<0$}
\put(13,2){$\sigma>0$}
\put(13,-5){$\sigma<0$}
%
\put(-27,13){$w>0$}
\put(-27,2){$\sigma<0$}
\put(-27,-5){$\sigma>0$}
\end{picture}}
$$
Всё дико симметрично, поэтому будем искать решение в первом квадранте, т.е. для $\sigma=|\sigma|$, $w<0$
$$
   \left\{\begin{array}{l}
      c_0<0\;\Rightarrow\; |\sigma|\in(0,\pi/2),\\
      c_0=0\;\Rightarrow\; |\sigma|=\pi/2,\\
      c_0>0\;\Rightarrow\; |\sigma|\in(\pi/2,\pi),
   \end{array}\right.
$$
и выделим положительные корни уравнения.

$\bullet$ Имеем единственный действительный корень при $D>0$:
$$   \begin{array}{llll}
     c_1>0:\;%
       &y_1 =-\sqrt{c_1}\left(\dfrac{1}{\tg\alpha}-\tg\alpha\right),\quad
       &\tg\alpha=\sqrt[3]{\tg\dfrac{\beta}{2}},\qquad
       &\beta=\arctg\frac{c_1\sqrt{c_1}}{c_0};\\
%
     c_1<0:\;
     &y_1 = -\sqrt{-c_1} \left(\dfrac{1}{\tg\alpha}+\tg\alpha\right),\quad
     &\tg\alpha=\sqrt[3]{\tg\dfrac{\beta}{2}},\qquad
     &\beta=\arcsin\dfrac{c_1\sqrt{-c_1}}{c_0};\\
%
     c_1 =0: 
     &y_1  =-\sqrt[3]{-3c_0}. & &
   \end{array}
$$
Объединяем два случая $c_1\not=0$:
$$   y_1 = \sqrt{|c_1|} \left(\mathrm{sign} c_1 \tg\alpha- \dfrac{1}{\tg\alpha}\right),
       \quad
   \tg\alpha=\sign c_0\dfrac{\sqrt{|c_1|}}{\sqrt[3]{|c_0|+\sqrt{D} }}.
$$
Убедившись, что при раскрытии скобок неопределённость в случае $\tg\alpha=0$ (от $c_1=0$) корректно исчезает, присоединяем к ним случай $c_1=0$:
$$
   c_1\lesseqgtr0:\quad
   y_1 = - \mathrm{sign} c_0 \left(\sqrt[3]{|c_0|+\sqrt{D} }-
                         \dfrac{c_1}{\sqrt[3]{|c_0|+\sqrt{D} }} \right).
$$
Выражение в скобках положительно (легко убедиться, сравнив кубы слагаемых), и $ \mathrm{sign} y_1 =- \mathrm{sign} c_0$. Положительный корень будет только при
$c_0<0$, т.е. при $|\sigma|<\pi/2$.


$\bullet$~$D=0$ ($r_w=r_0$). При этом $c_1=-\sqrt[3]{c_0^2}<0$, и
$$     (y+2\sqrt[3]{c_0})(y-\sqrt[3]{c_0})^2=0,\quad
     y_1=-2\sqrt[3]{c_0},\quad y_2=y_3=\sqrt[3]{c_0}.
$$
Положительные корни
$$   \begin{array}{lll}
      c_0<0&(|\sigma|<\pi/2): & y_1\\
      c_0=0&(|\sigma|=\pi/2): & \mbox{нет};\\
      c_0>0&(|\sigma|>\pi/2): & y_{2,3}.
   \end{array}
$$


$\bullet$~Имеем три корня при $D<0$, т.е. $r_w>r_0$:
$$
   \begin{array}{l}
     y_1 =2\sqrt{-c_1}\cos\frac{\alpha}{3},\quad
     y_2 =-2\sqrt{-c_1}\cos\left(\frac{\alpha}{3}+\frac{\pi}{3}\right),\quad
     y_3 =-2\sqrt{-c_1}\cos\left(\frac{\alpha}{3}-\frac{\pi}{3}\right),\\
    \mbox{где}\quad \alpha=\arccos\frac{c_0}{c_1 \sqrt{-c_1} }
                          =\arg(-c_0+\iu\sqrt{-D})
   \end{array}
$$
(в частности, если $c_0=0$, то $ y_1 =\sqrt{-3c_1}$, $y_2  = 0$, $y_3 ={-\sqrt{-3c_1}}$.
Выбор положительных корней:
$$
   \begin{array}{ll}
     c_0<0: & y_3 <y_2 <0<y_1;\\
     c_0=0: & y_3 <y_2 =0<y_1;\\
     c_0>0: & y_3 <0<y_2 <y_1.
   \end{array}  
$$

$$\rule{7cm}{4pt}$$

По некоторым причинам явные решения хотелось иметь.
В частности, мастер владел только калькулятором и итерировать на нём отказывался категорически.

 Профиль  
                  
 
 
Сообщение13.03.2009, 14:03 
Заслуженный участник


11/05/08
32166
Прораб не шибко сильно удивился такой вдумчивости?

 Профиль  
                  
 
 
Сообщение13.03.2009, 14:10 


29/09/06
4552
Подозреваю, он просто хотел забабахать красивую рацуху и срубить дополнительные бабки.

 Профиль  
                  
 
 
Сообщение13.03.2009, 14:52 
Заслуженный участник


11/05/08
32166
gris в сообщении #194703 писал(а):
Несколько раз пытался по формуле Кардано посчитать корни, просто для интереса. Но каждый раз путался и злился

Видимо, потому, что в книжках обычно формулу Кардано для красоты приводят в симметричном виде, а этот вид для вычислений очень неудобен. Надо так. Если $z^3+pz+q=0$, то $$z=w-{1\over3w}$$, где

$$w=\sqrt[3]{-{q\over2}\pm\sqrt{{q^2\over4}+{p^3\over27}}}.$

Здесь корни третьей степени -- все возможные, а вот знак перед квадратным корнем фиксирован. Выбрать его надо так, чтобы обеспечить наибольшую точность, т.е. в вещественном случае он должен быть равен знаку первого слагаемого (в комплексном, естественно, безразлично).

Из любопытства набросал процедурку (без оптимизаций), вроде работает. Авось когда и пригодится.

Код:
{--------------------------------------------------------}
procedure roots3pq(p,q: float;
                   var r1,i1, r2,i2, r3,i3: float);
var  rz,iz, d,az,mz: float;
begin
  rz:=-q/2;
  d:=q*q/4 + p*p*p/27;
  if d<0
    then iz:=sqrt(-d)
    else begin
      if rz>0   then rz:=rz+sqrt(d)   else rz:=rz-sqrt(d);
      iz:=0;    end;
  if abs(rz)+abs(iz)=0 then begin
    r1:=0;    r2:=0;    r3:=0;
    i1:=0;    i2:=0;    i3:=0;
    Exit;     end;
  mz:=exp(ln(sqr(rz)+sqr(iz))/6);
  if abs(iz)<abs(rz) then az:=arctan(iz/rz)
    else if iz*rz>=0 then az:=pi/2 - arctan(rz/iz)
    else az:=-pi/2 - arctan(rz/iz);
  if rz<0 then az:=az+pi;
  az:=az/3;

  rz:=mz*cos(az);    iz:=mz*sin(az);
  r1:=rz - p*rz/(3*mz*mz);
  i1:=iz + p*iz/(3*mz*mz);

  az:=az + 2*pi/3;
  rz:=mz*cos(az);    iz:=mz*sin(az);
  r2:=rz - p*rz/(3*mz*mz);
  i2:=iz + p*iz/(3*mz*mz);

  az:=az + 2*pi/3;
  rz:=mz*cos(az);    iz:=mz*sin(az);
  r3:=rz - p*rz/(3*mz*mz);
  i3:=iz + p*iz/(3*mz*mz);
  end;
{--------------------------------------------------------}

 Профиль  
                  
 
 
Сообщение15.03.2009, 08:31 


08/05/08
954
MSK
Алексей К. писал(а):
Вот пример возни с кубическим уравнением. Не сосем в тему e7e5, но пример мне кажется полезным.
Почему-то все обычно избегают явных решений кубических и четвёртой степени уравнений.

Когда я работал на строительстве одного автобана, и понадобилось рассчитывать т.н. переходную кривую,
мне пришлось, между прочими делами, искать точку пересечения окружности

$$
   [x+\mathrm{sign}w(1{+}r_w)]^2+y^2 -r_w^2=0
$$

с куском гиперболы

$$\sin\sigma(1-x^2+y^2)+2x y\cos\sigma=0,\qquad
    \mathrm{sign}(xy)=\mathrm{sign}\sigma.
$$


А почему именно такая окружность? Что значит: $\mathrm{sign}w(1{+}r_w)$ ? угловую скорость какую-то учитывали...

 Профиль  
                  
 
 CAD
Сообщение15.03.2009, 13:29 


29/09/06
4552
Нет, просто в реальной CAD-задачке случилась некая система уравнений, выглядящая как пересечение окружности с гиперболой, $w$ --- это остатки некого весового множителя, а не омега $\omega$, прожектора там и близко не было. В детали вникать не буду, знаю, что этой темой здесь не интересуются. Я уже тоже.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу Пред.  1, 2

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group