Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы. Мобильные устройства.doc
Скачиваний:
2
Добавлен:
01.05.2019
Размер:
1.8 Mб
Скачать

Гиперболические функции

Имея функцию для вычисления экспоненты, легко найти значения гиперболических функций.

Имеет смысл предварительно записать значение exp(x) во вспомогательную переменную, которую затем использовать для вычисления по формулам.

Вычисление натурального логарифма

Натуральный логарифм можно представить в виде суммы:

Вычислять значение логарифма непосредственно по этой формуле не очень эффективно. Для оптимизации алгоритма вычисления можно воспользоваться известными соотношениями

Представим число x в виде

где b<1, a-целое, тогда

Для того чтобы представить число x в требуемом виде, нужно найти позицию символа “E” в строковом представлении числа x, тогда a равно числу, записанному правее символа “E” плюс 1, a b – числу записанному левее “E”, деленному на 10.

Ниже представлен код, реализующий алгоритм вычисления натурального логарифма:

private double MLn(double x0){

double x=x0;

double y=0;

//Получаем показатель степени.

String s0=""+x;

int i=s0.indexOf("E");

String s1=s0.substring(i+1, s0.length());//Правее E

String s2=s0.substring(0, i);//Левее E

double a=0,b=0;

a=Double.parseDouble(s1)+1;

b=Double.parseDouble(s2)/10;

//Вычисление Логарифма b как суммы ряда Тейлора

int n=1;

double sn=1;

while (sn>(1E-16)*n){

sn=-sn*(b-1);

y=y+sn/n;

n=n++;

}

y=y+a*2.302585092994046;

return y;

}

Вычисление корней, степеней и логарифмов

Имея функцию для вычисления натурального логарифма, легко вычислить следующие функции:

Вычисление арксинуса и арккосинуса

Вычисление обратных тригонометрических функций arcsin и arcos сводится к вычислению рядов:

Ниже приведен алгоритм вычисления арксинуса.

private double Marcsin(double x0){

double x=x0;

if (x0<0){x=-x0;}

double 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;

}

if (x0<0){y=-y;}

return y;

}

Вычисление арктангенса

Предложенная формула эффективна для вычисления арктангенса малого аргумента. Для построения алгоритма эффективного вычисления арктангенса от больших x, целесообразно воспользоваться формулой:

Ниже предлагается переписанный для java алгоритма, который написал товарищ Nikitin V.F. в 2000 году.

  • Вначале нужно проверить знак x, если x<0, нужно изменить знак, сделав аргумент неотрицательным.

  • Затем если x>1, обратить его: x=1/x.

  • Затем сокращаем область определения (запоминая число сделанных шагов), используя формулу:

до тех пор, пока x не окажется в интервале [0,pi/12].

  • После этого можно вычислять y=arctg(x) по формуле Тейлора.

  • Сместим результат y на p/6 необходимое число раз

  • Если x было больше 1, то результат

  • Если x было отрицательным, то результат

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;

}

Завдання

Проробити практичний матеріал, розглянутий в лабораторній роботі.

Розробити власну программу – калькулятор, максимальна кількість ф-й.

Лабораторная работа №7

Работа со звуком и видео в J2ME MIDP 2.0. Библиотека Mobile Media API (MMAPI)

Mobile Media API (MMAPI) - дополнительный пакет, который поддерживается мультимедийными устройствами. Стандартная Java спецификация, заданная в JSR 135, отличается своей гибкостью. Она рассчитана на работу с произвольными протоколами и форматами.

В данной лабораторной работе рассматривается техническая реализация архитектуры MMAPI и ее практическое использование.