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

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

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

 
 Ответить  Открыть новую тему 
> Вычисление Логарифма с заданной точностью, числа 2
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

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

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


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


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


Гость






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

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

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

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


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

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


Пионер
**

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

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


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


Знаток
****

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

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


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


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


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

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

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


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


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


Пионер
**

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

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


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


Гость






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

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


Гость






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


Пионер
**

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

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


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


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

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

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


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

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

volvo, сорри.


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


Пионер
**

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

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


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


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

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

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


Посмотри тут

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


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


Пионер
**

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

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


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

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

 





- Текстовая версия 29.03.2024 21:59
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name