Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как быть с arctan (арктангенсом) 
:(
    Опции темы
Ярослав
Дата 30.5.2011, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 189
Регистрация: 8.6.2009

Репутация: -1
Всего: -1



Подскажите как вычислять арктангенс,арккосинус и арксинус у меня есть, в интернете нашёл по Алгоритму Тейлора, а вот в арктангенсе там ошибка и неправильно считает
private double MArctg(double x0) {
   int sp=0;
   double x,x2,y;
   x=x0;
   if(x<0) {x=-x;}
   if(x>1) {x=1.0/x;}
   //Уменьшаем интервал области аргумента
   while(x>0.2617993877991495) {
     sp++; //Вспомогательный счетчик шагов 
     x=(x*1.732050807569-1)/(x+1.732050807569);
   }
   //Вычисляем ряд Тейлора
     y=x;
     int n=1;
     double sn=x; 
     while (sn>1E-16){
             sn=sn*(2+1.0/n)*0.5*x*x;
             y=y+sn/(2*n+1)/(2*n+1); 
             n=n+1;
     }
         
   //Смещаем все на pi/6 необходимое число раз 
   y=y+sp*0.523598775598 
  
   if(x0>1) a=0.2617993877991495-a;
   if(x0<0) y=-y;
  
   return y;
 }
ПОМОГИТЕ РЕШИТЬ ПРОБЛЕМУ 
a-???????
x2-??????
ВЕСЬ ИНТЕРНЕТ В ЭТОЙ ПРОБЛЕМЕ
PM MAIL   Вверх
oxigen
Дата 30.5.2011, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 12.4.2010

Репутация: 4
Всего: 4



Код

 if(x0>1) a=0.2617993877991495-a;

Что за 'a' тут вдруг появилась? Явно вместо нее 'y' должен быть.
PM MAIL   Вверх
Ярослав
Дата 30.5.2011, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 189
Регистрация: 8.6.2009

Репутация: -1
Всего: -1



Я тоже так думаю, х2 что это????  Даже если это и у результат не правельный
PM MAIL   Вверх
ivanovpv
Дата 31.5.2011, 07:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 10
Всего: 28



Ряды Тейлора плохо подходят для аппроксимации спецфункций, они пригодны только для вычисления в малой окрестности. В реальных вычислениях обычно применяется аппроксимация полиномами Чебышева (возможны вариации и использование полиномов Якоби, Лежандра и проч. )

Погуглите - в сети исходников аппроксимации спецфункций ортогональными полиномами много.


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
vG874WbT5F
Дата 31.5.2011, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 26.5.2011

Репутация: нет
Всего: нет



Нагуглил код:
Код

  public double arctan(double x) {
   if (Math.abs(x) == 1)return sgn(x) * Math.PI / 4;
   if (Math.abs(x) > 1)return sgn(x) * Math.PI / 2 - arctan(1 / x);
   double R = 0;
   for (int n = 0; n < 100; n++) R += pow( -1, n) * pow(x, 2 * n + 1) / (2 * n + 1);
   return R;
   }
 

   public byte sgn(double x) {
   if (x < 0)return -1;
   if (x == 0)return 0;
   return 1;
   }

   public double pow(double a, int b) {
   if (a == 0 && b == 0)return Double.NaN;
   if (b == 0)return 1;
   if (b == 1)return a;
   if (b == -1)return 1 / a;
   if (b < 0)return (1 / pow(a, -b));
   double R = 1;
   while (b != 0) {
   if (b % 2 != 0) R *= a;
   a *= a;
   b /= 2;
   }
   return R;
   }


PM MAIL   Вверх
Ярослав
Дата 31.5.2011, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 189
Регистрация: 8.6.2009

Репутация: -1
Всего: -1



Спасибо тема закрыта

Добавлено через 1 минуту и 24 секунды
Вот кому надо ответ на мой вапрос

Присоединённый файл ( Кол-во скачиваний: 21 )
Присоединённый файл  _____.txt 5,51 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0644 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.