Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > Visual Basic
Перезагрузить страницу Поехала крыша...... не могу написать формулу для вычисления
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Budhardt Budhardt вне форума
Новичок
 
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.04.2006
По умолчанию Поехала крыша...... не могу написать формулу для вычисления - 16.04.2006, 22:23

Привет.

Уже второй день сижу и выполняю задания по VBA. Осталось всего два (из 35) и в каждом из них похажие функции. Как делать задания эти я знаю, только осталось написать формулу для вычислени..... Могзи опухли и уще не могу сообразить. Помогите, пожалуйста. Завтра нужно работу сдать...
Ответить с цитированием
  (#2 (permalink)) Старый
Fuud Fuud вне форума
Member
 
Сообщений: 4,076
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.09.2004
По умолчанию 16.04.2006, 22:27

Ну и где то, что надо сделать?
Ответить с цитированием
  (#3 (permalink)) Старый
Budhardt Budhardt вне форума
Новичок
 
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.04.2006
По умолчанию 16.04.2006, 23:04

Цитата:
Originally posted by Fuud
[b]Ну и где то, что надо сделать?
Вообще полное задание вот такое:

вычислить с заданной точностью E

Ответить с цитированием
  (#4 (permalink)) Старый
Fuud Fuud вне форума
Member
 
Сообщений: 4,076
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.09.2004
По умолчанию 16.04.2006, 23:59

формула:
e(n)=(1+1/n)^n

погрешность<2*(e(n+1)-(e(n))) - если я правильно понимаю
Ответить с цитированием
  (#5 (permalink)) Старый
Budhardt Budhardt вне форума
Новичок
 
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.04.2006
По умолчанию 17.04.2006, 00:26

Цитата:
Originally posted by Fuud
[b]формула:
e(n)=(1+1/n)^n
Извини, не понял откуда эта форула взялась
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Fuud Fuud вне форума
Member
 
Сообщений: 4,076
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.09.2004
По умолчанию 17.04.2006, 08:34

Тебе надо вычислить число "е" (основание нат. логарифма)?
так это его определение.
Ответить с цитированием
  (#7 (permalink)) Старый
Budhardt Budhardt вне форума
Новичок
 
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.04.2006
По умолчанию 17.04.2006, 09:19

Цитата:
Originally posted by Fuud
[b]Тебе надо вычислить число "е" (основание нат. логарифма)?
так это его определение.
Неет, мне нужно вычислить арктангенс. Число е - это точность, а не основание нат. лагарифма. Оно может быть любым. Вот я решал до этого задачу:

'Вычисление y=1+x/1!+x^2/2!+…+x^n/n! с заданной точностью
Public Function pr_e(x As Double, Точность As Double) As Double
Dim d As Double, i As Double
pr_e = 1
d = 1
i = 1
While Abs(d) > Точность
d = d * x / i
i = i + 1
pr_e = pr_e + d
Wend
End Function

Здесь же просто не могу составить циклы для вычисления этих выражений:
http://www.f1dvd.grandprix-magazine.ru/functia1.jpg
Ответить с цитированием
  (#8 (permalink)) Старый
Fuud Fuud вне форума
Member
 
Сообщений: 4,076
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.09.2004
По умолчанию 17.04.2006, 09:31

Цитата:
Originally posted by Budhardt
[b]Неет, мне нужно вычислить арктангенс.
Ты крут! А мы откуда должны были об этом узнать? Телепаты в отпуске...

Код:
Public Function pr_e(x As Double, Точность As Double) As Double
result=0;
fact=1;

if abs(x)<1 then
while Abs(x/fact)*2>Точность
  result=result+(x^fact)/fact;
  fact=fact+2;
wend
endif

if x<=-1 then
***

end sub
Ответить с цитированием
  (#9 (permalink)) Старый
Budhardt Budhardt вне форума
Новичок
 
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.04.2006
По умолчанию 17.04.2006, 18:30

Спасибо, fuud! Прогу написал. Работает.

Только остался один непонятный мне момент.

Почему для сравнения с Точностью выбрал именно
Abs(x/fact)*2

?
Ответить с цитированием
  (#10 (permalink)) Старый
Fuud Fuud вне форума
Member
 
Сообщений: 4,076
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.09.2004
По умолчанию 17.04.2006, 19:25

А вот мне тоже интересно. Это пока что догадка.
Надо подумать. Но похоже, что я не прав и погрешность для произвольного сходящегося ряда может быть больше этого выражения.

Ну а здесь можно сверху оценить бесконечно убывающей геометрической прогрессией. Но это грубая оценка.
Ответить с цитированием
  (#11 (permalink)) Старый
Budhardt Budhardt вне форума
Новичок
 
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.04.2006
По умолчанию 17.04.2006, 19:41

нет, прога не получает правильные ответы
Ответить с цитированием
  (#12 (permalink)) Старый
Fuud Fuud вне форума
Member
 
Сообщений: 4,076
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.09.2004
По умолчанию 17.04.2006, 20:28

В смысле, погрешность больше требуемой?
Ну, давай оценим геометрической погрешностью:

остаток<=((result/fact)/(1-x/step)); - если я опять не ошибся.

Это, правда, избыточная оценка.
Ответить с цитированием
Ads
  (#13 (permalink)) Старый
Budhardt Budhardt вне форума
Новичок
 
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.04.2006
По умолчанию 17.04.2006, 20:35

Цитата:
Originally posted by Fuud
[b]В смысле, погрешность больше требуемой?
Нет, она во-первых, кажется, написана неправильно....:
По-моему нужно так, но все равно она не считается и выкидывает #ЗНАЧ!

while Abs(x/fact)*2>Точность
result=result+1/((x^fact)*fact)
fact=fact+2;
wend
Ответить с цитированием
  (#14 (permalink)) Старый
Fuud Fuud вне форума
Member
 
Сообщений: 4,076
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.09.2004
По умолчанию 17.04.2006, 20:42

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

А погрешность сходящегося знакочередующегося монотонного ряда всегда меньше по абсолютному значению первого отброшенного члена и имеет его знак. Это, точно. Я сдавал недавно...
Ответить с цитированием
  (#15 (permalink)) Старый
Budhardt Budhardt вне форума
Новичок
 
Сообщений: 12
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 16.04.2006
По умолчанию 17.04.2006, 20:46

ничего не понял и ничего не получилось, даже с минусом перед results. А у тебя получилось, или ты просто набрасывал по памяти в форум без проверки?
Ответить с цитированием
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите написать предикат для вычисления факториала числа discodies Prolog 5 25.05.2011 13:30
Как написать скрипт для вычисления площади треугольника по формуле Герона bead900 DHTML, JavaScript, VBScript 1 15.11.2010 22:21
Как написать свою формулу Tashik Visual Basic 1 05.01.2010 12:40
Как написать формулу (корень кубический из((Х+У)в квадрате-Z)) кузя C++ Builder 1 27.02.2009 00:51
Как написать самому формулу samo Visual Basic 3 14.08.2008 10:20
Как написать формулу в VBA samo Visual Basic 2 06.08.2008 23:09
Написать программу вычисления значения логического выражения Silencio Lisp 1 31.05.2008 13:38
Как написать формулу в екселе или в макросе...? Jenni Visual Basic 4 12.10.2007 15:22
помогите написать формулу массива diment Visual Basic 2 07.11.2006 12:56
помогите написать формулу diment Visual Basic 5 04.09.2006 11:24
помогите написать формулу diment Visual Basic 7 11.08.2006 10:06
Как написать код вычисления длины высот треугольника RAMPART Вопросы начинающих программистов 10 09.10.2005 22:25



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов