IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Вычисление Логарифма с заданной точностью, числа 2
TOPEHTO
сообщение 7.11.2006 18:45
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 87
Пол: Мужской

Репутация: -  0  +


Помоги плиз... надо вычислить Натуральный Логарифм числа 2 с заданной точностью. финкция раскладывается так Ln(1+x)=E(-1)^n+1 * (X^n)/n
E это типа сигма... smile.gif ...так вот число 2 мы представляем как Ln(1+1) и расписываем по формуле. Пользователь вводит точность, т.е. количество слагаемых по которым будет разложен ряд. т.е. например ввел число 2 то 1-1/2 и все...
Цитата
function _Ln(x: double): double;
const eps = 0.0000001; { Задаем точность }
var
s, next: double;
n: integer;
begin
next := (x - 1)/(x + 1);
s := next; n := 1;
repeat
inc(n, 2);
next := (next * sqr(x - 1))/sqr(x + 1);
s := s + next/n;
until (next/n) < eps;
_Ln := 2 * s
end;

Нашел эту функцию, но не получается уменя переделать погрешность, т.е. не хватает мозга, чтобы прога работала...пожалуйста помоги... wink.gif ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 14)
arhimag
сообщение 7.11.2006 18:48
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 424
Пол: Мужской

Репутация: -  2  +


а если сделать так?
function _Ln(x: double; eps: double): double;
var


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 7.11.2006 18:48
Сообщение #3


Гость






Цитата
не хватает мозга, чтобы прога работала
А для этого тебе никакого мозга и не надо... Ты ж не пишешь функцию, а копируешь ее... Для того, чтоб она заработала (а она - рабочая, я в FAQ других не выкладываю), тебе нужен не МОЗГ, а КОМПИЛЯТОР...

Цитата
но не получается уменя переделать погрешность
То есть, ты не в состоянии поменять значение Eps даже? Тогда что ты от нас хочешь? Чтоб мы приехали к тебе и сдали эту программу за тебя?

Сделай так:
const eps: double = 0.0000001; { Задаем точность }

function _Ln(x: double): double;
...


archimag, сможешь объяснить 2 вещи?
1) почему я вынес Eps ПЕРЕД реализацией функции
2) что мне дало добавление :double ?

(просьба на эти 2 вопроса отвечать именно archimag-а, и никого более)...
 К началу страницы 
+ Ответить 
TOPEHTO
сообщение 7.11.2006 18:56
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 87
Пол: Мужской

Репутация: -  0  +


Значение Еps Я переделал, Я не это имелл ввиду...мне как бы так сказать, эта погрешность вообще не нужна, мне нужна что ф-ция раскладывалась в такой ряд и пользователь только вводил кол-во слагаемых...т.е. само Еps мне не нужно... wink.gif ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
arhimag
сообщение 7.11.2006 18:57
Сообщение #5


Знаток
****

Группа: Пользователи
Сообщений: 424
Пол: Мужской

Репутация: -  2  +


Volvo, ты знаешь, ответ : не знаю
я просто предложил ( не проверяя ) поэтому и не писал что это точно будет работать...


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 7.11.2006 18:58
Сообщение #6


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


ТOPEHTO, замени цикл на for. или просто условие другое сделай - не привязанное к eps, а зависящее от кол-ва выполненных проходов.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TOPEHTO
сообщение 7.11.2006 19:05
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 87
Пол: Мужской

Репутация: -  0  +


мисс_граффити
ЗАменил...но чето не пашет...ты понимаешь смысл в том что, если Я задаю 2 прохода то ответ должен быть 0,5 а у меня 6.666 и т.д. получается, сейчас сижу думаю вот... wink.gif ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 7.11.2006 19:17
Сообщение #8


Гость






TOPEHTO, ты напиши, чего ты хочешь? КАК ты бы хотел вызывать функцию? ЧТО переделывать-то требуется? Сначала ты говоришь, что проблема в точности, сейчас выясняется что не совсем...

Да, кстати:
Цитата
финкция раскладывается так Ln(1+x)=E(-1)^n+1 * (X^n)/n
Ты уверен? Это разложение - когда -1<X<=1... У тебя же Х=2, так что будь добр раскладывать по правильной формуле...
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 7.11.2006 19:48
Сообщение #9


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Цитата(volvo @ 7.11.2006 19:17) *

Ты уверен? Это разложение - когда -1<X<=1... У тебя же Х=2, так что будь добр раскладывать по правильной формуле...

ln(2)=ln(1+1)=ln(1+x)
x=1
что не так?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 7.11.2006 20:34
Сообщение #10


Гость






Да? Только вот автор почему-то приводит одну формулу, а считает по другой, с чего бы это? Подсчет-то идет по формуле, где X > 0... Если делает свой велосипед, пускай и колеса на него свои ставит, чего чужие-то брать?
 К началу страницы 
+ Ответить 
TOPEHTO
сообщение 7.11.2006 23:40
Сообщение #11


Пионер
**

Группа: Пользователи
Сообщений: 87
Пол: Мужской

Репутация: -  0  +


volvo
мисс_граффити прав, точнее Я не наю на сколько, но нам сегодня сказали считать так, ln2=ln(1+1) и вперед, а что касается считать по этой формуле, то Я переделываю по тихоньку программу, но к сожалению не получается...поэтому и прошу вашей помощи. Да, согласен что надо считать по правильной фор-ле, но препод сказала так, значит надо так... wink.gif ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 8.11.2006 0:22
Сообщение #12


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


мдя...
после такого оскорбления я явно в этой теме писать не буду.

а вообще такого рода программки проще не переделывать, а писать с нуля - если хочешь что-то понять. Или брать готовыми - если не хочешь.
Подумай логически (я про знания паскаля не говорю). Надо посчитать ряд. (кстати, там после -1 должен идти не +, а *. и степень не n, а n+1.... хотя могу ошибаться). Известен общий член ряда. Сколько таких чисел взять - известно (напрашивается цикл for, не так ли?). Осталось просто просуммировать....

volvo, сорри.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TOPEHTO
сообщение 8.11.2006 18:12
Сообщение #13


Пионер
**

Группа: Пользователи
Сообщений: 87
Пол: Мужской

Репутация: -  0  +


Народ, чтобы не создавать новую тему, может подскажете, еще надо вычисление числа ПИ с заданным кол-вом слагаемых, через разложение арктангенса...вот так вот... wink.gif ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 8.11.2006 18:22
Сообщение #14


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Посмотри тут

И всетаки не стоит задавать свои вопросы в чужих темах.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
TOPEHTO
сообщение 8.11.2006 18:37
Сообщение #15


Пионер
**

Группа: Пользователи
Сообщений: 87
Пол: Мужской

Репутация: -  0  +


klem4
пасиб конечно, но чтото это мне както не помогло...не знаю, или Я думаю не так...
А тема моя вообще, просто не хочу лишних создавать... wink.gif ...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 22.06.2025 19:01
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"