Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2017, 05:10   #1
Neumnyu paren
 
Регистрация: 07.02.2017
Сообщений: 3
По умолчанию вычислительная ошибка

Такой вопрос: Эквиваленты ли следующие коды для численного интегрирования:

Код:
while(a<b) {
F=h*(func(a) + func(a+h))/2;
a=a+h;
I+=F;
}
и

Код:
A=func(a);
B=func(a+h);
while(a<b)
{
F=h*(A+B)/2;
A=B;
a=a+h;
B=func(a+h);
I+=F;
}
Меня интересует, может ли во 2-м коде произойти какая-либо компьютерная вычислительная ошибка? Засчет округления при присваивании(к переменным A и B) или по каким-то другим причинам?

Я, конечно, не указывал, но естественно все переменные типа double.


Нужно проинтегрировать интеграл, зависящий от параметра, поэтому хочется выиграть время.

Последний раз редактировалось Аватар; 07.02.2017 в 11:39.
Neumnyu paren вне форума Ответить с цитированием
Старый 07.02.2017, 11:07   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я бы второй код написал так:
Код:
I=0;
f1=func(a);
f2=func(a+h);
while(a<b)
{
  F=(f1+f2);
  f1=f2;
  a=a+h;
  f2=func(a);
  I+=F;
}
I *=h/2;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вычислительная программа скромняшка Паскаль, Turbo Pascal, PascalABC.NET 3 04.05.2012 22:42
вычислительная программа скромняшка Паскаль, Turbo Pascal, PascalABC.NET 16 04.05.2012 21:41
Вычислительная математика незнайка_на_земле Фриланс 4 31.10.2011 18:37
Вычислительная геометрия на С Soull Помощь студентам 7 18.05.2010 12:54