2014 dxdy logo

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

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




 
 правильно вычислить арктангенс?
Сообщение27.08.2007, 23:05 
Уже неделю бьюсь с краевой задачкой (численное решение неверно)
Здесь звездный контур обходится с параметром theta от 2*pi до 0.
И в матрице a наблюдаются неверные значения.
Предполагаю, что арктангенс неправильно считается.
Подскажите как правильно его вычислить.

Код:
theta=2*pi-2*pi/n:-2*pi/n:0;
x=cos(theta);
y=sin(theta);

   x1(1)=0.5*(x(n)+x(1));
...
for m=2:n-1
   x1(m)=0.5*(x(m-1)+x(m));
   y1(m)=0.5*(y(m-1)+y(m));
   x2(m)=0.5*(x(m+1)+x(m));
   y2(m)=0.5*(y(m+1)+y(m));
end
   x1(n)=0.5*(x(n-1)+x(n));
  ...
for m=1:n
for k=1:n
t1=atan2((y(m)-y1(k)), (x(m)-x1(k)) );
t2=atan2((y(m)-y2(k)) , (x(m)-x2(k)) );
t12=t1-t2;
a(m,k)=C*t12;
endfor
endfor



Справка:
Код:
-- Mapping Function:  atan2 (Y, X)
     Compute atan (Y / X) for corresponding elements of Y and X.  The
     result is in range -pi to pi.


Пробовал пересчитать все углы, оставляя их в интервале от 2*pi до 0 - непомогло.

 
 
 
 
Сообщение28.08.2007, 05:29 
Аватара пользователя
Рискну предположить, что речь идет о Matlab.

 
 
 
 
Сообщение28.08.2007, 12:14 
Аватара пользователя
нг писал(а):
Рискну предположить, что речь идет о Matlab.


Рискну предположить, что нет - что-то я не припоминаю в его синтаксисе 'endfor'. Вообще странно - один цикл закрыт 'end', а другой 'endfor', а в остальном - да, MatLAB.

а может ну ее эту функцию atan2() и воспользоваться atan()?

 
 
 
 
Сообщение28.08.2007, 12:42 
Язык Octave эквивалентен MathLab. Цикл for может закрываться как end так и endfor.

atan пробовал, не помогло.

Из физических соображений угол atan(y/x) должен меняется от 0 до 2*Pi. Но схема
Код:
for m=1:n
for k=1:n
t1=atan2((y(m)-y1(k)), (x(m)-x1(k)) );
if t1<0
t1=2*pi+t1
endif
t2=atan2((y(m)-y2(k)) , (x(m)-x2(k)) );
if t2<0
t2=2*pi+t2
endif
t12=t1-t2;
A(m,k)=С*t12;
endfor
endfor

где С-const, упорно не работает.

 
 
 
 Re: правильно вычислить арктангенс?
Сообщение28.08.2007, 21:37 
Аватара пользователя
_Dmitry_ писал(а):
Здесь звездный контур обходится с параметром theta от 2*pi до 0.
И в матрице a наблюдаются неверные значения.
Предполагаю, что арктангенс неправильно считается.

Откуда такое предположение? Может быть, ошибка в дизайне самого алгоритма для решения вашей задачи?

 
 
 
 
Сообщение29.08.2007, 15:35 
Аватара пользователя
_Dmitry_ писал(а):
Из физических соображений угол atan(y/x) должен меняется от 0 до 2*Pi

А из описания функции он должен меняться от $-\pi$ до $\pi$...
_Dmitry_ писал(а):
Код:
Mapping Function:  atan2 (Y, X)
     Compute atan (Y / X) for corresponding elements of Y and X.  The
     result is in range -pi to pi.

 
 
 
 
Сообщение01.10.2007, 10:24 
А в чем проблема конкретно? Разрыв в значениях или некорректность?

 
 
 [ Сообщений: 7 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group