Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 198
от 27.07.2005, 21:20

Администратор:Калашников О.А.
В рассылке:Подписчиков: 251, Экспертов: 16
В номере:Вопросов: 2, Ответов: 2


Вопрос № 23874: Доброго времени суток, господа Эксперты ! Вопрос такой: как вычислить выражение X в степени Y (где X и Y вещественые числа) ? Насколько я понял из справочника у сопроцессора отсутствует команда возведения в степень (да ещё и в вещественн...
Вопрос № 23891: Добрый день! Помогите чайнику! Я дошел до 20 урока. Там идет речь о вирусе. Я так и не понял, как он работает, т.е. его надо сначала запустить, а потом программы? Если так, то он как найдет первый файл, заражает его в ОЗУ или он записывается еще ...

Вопрос № 23.874
Доброго времени суток, господа Эксперты !

Вопрос такой: как вычислить выражение X в степени Y (где X и Y вещественые числа) ?
Насколько я понял из справочника у сопроцессора отсутствует команда возведения в степень (да ещё и в вещественную). Подскажите алгоритм, как это можно реализовать.

И ещё вопрос: как можно вычислить число е=2,72... с большой точностью ?

Благодарю за ваши ответы.
Отправлен: 22.07.2005, 13:04
Вопрос задал: Luc@netmanru (статус: Посетитель)
Всего ответов отправлено: 1

Отвечает: Ayl
Здравствуйте, Luc@netmanru!

Это можно сделать только с помощью разложения в ряд Тейлора (МакЛорена).
Любая бесконечно дифференцируемая функция f может быть представлена в виде ряда Тейлора:

f(x) = f(x0) + f'(x0)*(x-x0) + f''(x0)*(x-x0)^2/2 + f'''(x0)*(x-x0)^3/3! + ... + f(n)(x0)*(x-x0)^n/n! + ...

При x0 = 0 получается ряд МакЛорена:

f(x) = f(0) + f'(0)*x + f''(0)*x^2/2 + f'''(0)*x^3/3! + ... + f(n)(0)*x^n/n! + ...

где f'(x), f''(x), ..., f(n)(x) - соответственно, 1-я, 2-я, ..., n-я производные функции f в точке x.

Теперь, попробуем найти выражение для функции x^y. Зафиксируем x = a.
Тогда:

f(y) = a^y

f(0) = a^0 = 1
f'(0) = a^y*ln(a) = a^0*ln(a) = ln(a)
f''(0) = (ln(a))^2
f'''(0) = (ln(a))^3
...
f(n)(0) = (ln(a))^n

И рад МакЛорена будет выглядеть так:
f(y) = 1 + ln(a)*y + (ln(a))^2*y^2/2 + ... + (ln(a))^n*y^n/n! + ...

Т.е. для вычисления x^y тебе нужно определить l = ln(x) и вычислять сумму:
1 + l*y + l^2*y^2/2 + l^3*y^3/3! + ...

до тех пор, пока ты не достигнешь нужной точности.

Обозначим последовательность членов разложения как {Bn}.

Тогда b(0) = 1, b(1) = l*y, b(2) = l^2*y^2/2, ..., b(n) = l^n*y^n/n!

Заметим, что b(n+1) = b(n)*l*y/(n+1)

l*y - это константа, соответственно, b(n) -> 0 при n -> бесконечности.
Т.е. этот ряд сходящийся.

Для достижения нужной точности вычисляешь ряд до тех пор, пока b(n) не станет меньше заданной точности.

Разложение e^x дает такой ряд: 1 + x + x^2/2 + x^3/3! + ... + x^n/n! + ...

Для вычисления числа e положим x = 1, т.е. e = 1 + 1 + 1/2 + 1/3! + ... + 1/n! + ...

b(n+1) = b(n)/(n+1)


---------
Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего требуется немного больше времени
Ответ отправил: Ayl (статус: Профессор)
Отправлен: 22.07.2005, 14:36


Вопрос № 23.891
Добрый день!
Помогите чайнику! Я дошел до 20 урока. Там идет речь о вирусе. Я так и не понял, как он работает, т.е. его надо сначала запустить, а потом программы? Если так, то он как найдет первый файл, заражает его в ОЗУ или он записывается еще раз на винчестер (тем самым увеличив размер файла жертвы)? Если только в ОЗУ, то после перезагрузки ПК этот файл снова незаражен и я могу его спокойно запускать (Этот файл заразится если я снова запущу сперва вирус)?
Заранее спасибо за ответ.
Отправлен: 22.07.2005, 20:18
Вопрос задал: Programist (статус: Посетитель)
Всего ответов отправлено: 1

Отвечает: Стас
Здравствуйте, Programist!
Да сначала запускаем вирус, он сразу же ищет в текущем каталоге файлы COM. И заражает первый найденый и еще не зараженный. В принципе все.
Дальше запустив зараженный файл ты заразишь следующий. И так далее.
(насколько я понял)
Ответ отправил: Стас (статус: Практикант)
Отправлен: 23.07.2005, 01:07


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Отписаться
Вспомнить пароль

В избранное