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

RFpro.ru: Пакет Microsoft Office

  Все выпуски  

RFpro.ru: Пакет Microsoft Office


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

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

Чемпионы рейтинга экспертов в этой рассылке

ValeryN
Статус: Мастер-Эксперт
Рейтинг: 2872
∙ повысить рейтинг »
Kom906
Статус: Студент
Рейтинг: 2328
∙ повысить рейтинг »
Vasiliy83
Статус: Бакалавр
Рейтинг: 1645
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Помощь пользователю ПО / Пакет Microsoft Office

Номер выпуска:877
Дата выхода:04.05.2010, 01:00
Администратор рассылки:Ерёмин А.А., Мастер-Эксперт
Подписчиков / экспертов:432 / 319
Вопросов / ответов:1 / 1

Вопрос № 178082: Уважаемые эксперты! Помогите с проблемкой. Мне нужно для метода Сипсона, которую я сделал в Excel, сосчитать интеграл. Я вправду сосчитал его вручную, т.е. сам выбирал ячейки, я хотел спросить у Вас, можно было это задать какой-нибудь функцией?...



Вопрос № 178082:

Уважаемые эксперты!
Помогите с проблемкой.
Мне нужно для метода Сипсона, которую я сделал в Excel, сосчитать интеграл. Я вправду сосчитал его вручную, т.е. сам выбирал ячейки, я хотел спросить у Вас, можно было это задать какой-нибудь функцией?
Вот программа. Помогите, пожалуйста.

Отправлен: 29.04.2010, 00:31
Вопрос задал: Зaйцeв Сeргeй, Посетитель
Всего ответов: 1
Страница вопроса »


Отвечает Megaloman, Профессионал :
Здравствуйте, Зaйцeв Сeргeй.
Как я понял задачу, у Вас задана функция в виде таблицы. Необходимо вычислить интеграл по методу Симпсона.
При этом Вы не хотите писать формулу вычисления руками, перечисляя в ней вподряд все суммируемые ячейки.

Вот формула для 4 отрезков, которая позволяет почти полностью решить Вашу проблему.
Для 4 отрезков
=O3/3*(($C$2+$C$6)+4*СУММПРОИЗВ(C$3:C5;--(($A$3:$A5)=НЕЧЁТ($A$3:$A5)))+2*СУММПРОИЗВ(C$3:C5;--(($A$3:$A5)=ЧЁТН($A$3:$A5))))

По сравнению с Вашей таблицей я добавил для проверки еще 2 столбца для 64 отрезков.
Вот как меняется формула вычисления интеграла функции для разного кол-ва её разбиения на отрезки:
Для 4 отрезков
=O3/3*(($C$2+$C$6)+4*СУММПРОИЗВ(C$3:C5;--(($A$3:$A5)=НЕЧЁТ($A$3:$A5)))+2*СУММПРОИЗВ(C$3:C5;--(($A$3:$A5)=ЧЁТН($A$3:$A5))))
Для 8 отрезков
=O4/3*(($C$2+$C$6)+4*СУММПРОИЗВ(E$3:E9;--(($A$3:$A9)=НЕЧЁТ($A$3:$A9)))+2*СУММПРОИЗВ(E$3:E9;--(($A$3:$A9)=ЧЁТН($A$3:$A9))))
Для 16 отрезков
=O 5/3*(($C$2+$C$6)+4*СУММПРОИЗВ(G$3:G17;--(($A$3:$A17)=НЕЧЁТ($A$3:$A17)))+2*СУММПРОИЗВ(G$3:G17;--(($A$3:$A17)=ЧЁТН($A$3:$A17))))
Для 32 отрезков
=O6/3*(($C$2+$C$6)+4*СУММПРОИЗВ(I$3:I33;--(($A$3:$A33)=НЕЧЁТ($A$3:$A33)))+2*СУММПРОИЗВ(I$3:I33;--(($A$3:$A33)=ЧЁТН($A$3:$A33))))
Для 64 отрезков
=O7/3*(($C$2+$C$6)+4*СУММПРОИЗВ(K$3:K65;--(($A$3:$A65)=НЕЧЁТ($A$3:$A65)))+2*СУММПРОИЗВ(K$3:K65;--(($A$3:$A65)=ЧЁТН($A$3:$A65))))

То есть вид формулы не меняется, но для каждого случая (увы, вручную, полностью автоматически не получается) надо подправить имя столбца, где расположены значения функции и верхние пределы суммирования.
Ваша таблица с моими изменениями здесь. Simpson.xls (48.5 кб)
Я проделывал это в Excell2003, вполне возможно в 2007 есть другая функция, позволяющая суммировать ячейки через одну.

Вообще-то такие задачи наверное легче решить с помощью функции, определённой пользователем (то есть практически с помощью макроса).
У Вас подинтегральная функция у=1/(x*Cos(x))
Я написал функцию для вычисления интеграла по Симпсону. Вот её текст.
Код:
Function Simpson(a As Double, b As Double, N) As Double
Dim ss, h As Double
h = (b - a) / N
Simpson = FuncInIntegral(a) + FuncInIntegral(b)

ss = 0
For i = 1 To N - 1 Step 2
ss = ss + FuncInIntegral(h * i)
Next
Simpson = Simpson + 4 * ss

ss = 0
For i = 2 To N - 2 Step 2
ss = ss + FuncInIntegral(h * i)
Next
Simpson = h / 3 * (Simpson + 2 * ss)

End Function
Function FuncInIntegral(x As Double) As Double
FuncInIntegral = 1 / (x + Cos(x))
End Function
Я не опи сываю, как её применить в Excel, так как не уверен, как для Вас было сформулировано задание.
Если необходимо, я подробно опишу, как это сделать.
Таблица с макросом здесь. Simpson_My.xls (47.5 кб)

-----
Нет времени на медленные танцы

Ответ отправил: Megaloman, Профессионал
Ответ отправлен: 29.04.2010, 17:58
Номер ответа: 261102

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 261102 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

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

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.14 от 03.03.2010

    В избранное