singlepost

Как лучше найти площадь между графиками функций? << На главную или назад  

написать программу на делфи вычисляющую площадь образованную пересечением функций f1=x*e^-x и f2=a/x

т.е. пишем процедуру вычисляющую интеграл,пишем процедуру находящую корни уравнения x*e^-x-a/x=0
а потом уже программу или как-то по другому будет лучше?буду очень признателен за совет)

16 ответов в теме “Как лучше найти площадь между графиками функций?”

  1. 15
    Валера Марсель ответил:

    да спасибо,сделал дихотомией задав а вручную,и по монте карло то же считает

  2. 14
    Пашка Джиоев ответил:

    #12 Насколько я понимаю, a не дано. А заранее выразить корни через a нельзя

  3. 13
    Нгамдкхе Кверос ответил:

    метод монт-карло применяют для функций другого вида, тут же гладенькие миленькие функции так от чего бы не сделать всё по людски методом трапеций.

    на вид функций не посмотрел, тут действительно лучше дихотомией решать корни, а за критерий остановки взять отрезок разбиения интеграла.

  4. 12
    Александр Кручинин ответил:

    Если скорость не ограничена, то почему бы и методом Монте-карло не посчитать. Не для всех же функций можно найти интеграл, например для f(x)=(1/(q*sqrt(2*pi))*e^-((x-a)^2/(2*q^2)) решить интеграл нельзя

  5. 11
    Евгений Баталов ответил:

    Просто если функции конкретные даны, то числ метод нахождения корня подставлять не очень правильно. Надо заранее высчитать и записть в алгоритме. Мат лаб или кад тебе в помощь. Пригодится еще, если на младшем курсе учишься.
    По методу монте-карло попробуй :)

  6. 10
    Пашка Джиоев ответил:

    Аналитически – никак, можно только численно.
    Если домножить на x, то получится f(x) = x^2*e^(-x) – a = 0.
    Видно, что функция в левой части возрастает на (0, 2) и убывает на (2, +беск.), в точке 2 – максимум. Причем f(0) = 0, f(+беск.) = 0. Поэтому, если 0 < a < 4*e^(-2), то уравнение имеет по одному решению на каждом из вышеуказанных интервалов. Искать их можно например методом деления пополам. Алгоритм такой:
    сначала выбираются x_l < x_r такие, что
    f(x) монотонна, на (x_l, x_r) и f(x_l)*f(x_r) < 0.
    затем проводится серия итераций:
    a) Для возрастающей f

    x_c = (x_l + x_r)
    jf f(x_c) < 0
    x_l = x_c
    else
    x_r = x_c
    end

    b) Для убывающей f

    x_c = (x_l + x_r)
    jf f(x_c) < 0
    x_r = x_c
    else
    x_l = x_c
    end

    причем итерации продолжаются до тех пор,
    пока порешность |x_l – x_r | не достигнет требуемой
    величины.

    В нашем случае, для первого интервала начальные значения будут x_l = 0, x_r = 2, для второго x_l = 2, x_r = C, где C любое достаточно большое число, для которогоf(C) <0.

  7. 9
    Валера Марсель ответил:

    x*e^-x-a/x=0

    ребят я чет туплю помогите если не сложно,как тут корни найти?

  8. 8
    Нгамдкхе Кверос ответил:

    #1если лаба на конкретно расчёт интеграла то обычно можно пределы интегрирования искать аналитически и подставлять, а если ни точность ни метод не даны, то можно делать трапеций, а в программу как параметр передавать число разбиений, которое при необходимости просто в ручную зададите бОльшее.

    зы: но, конечно, такие вопросы правильнее задавать своему преподу что он имел ввиду только ему ведомо.

  9. 7
    Владимир Гордеев ответил:

    #4 да ступил. Пределы не даны.

  10. 6
    Пашка Джиоев ответил:

    #5: ну это уже зависит от того какая скорость сходимости(от числа разбиений) нужна и точность. Если это не критично, то можно брать самый простой метод, и его с большим числом разбиений использовать.

  11. 5
    Пашка Джиоев ответил:

    #3: а пределы интегрирования ты откуда брать будешь?

  12. 4
    Валера Марсель ответил:

    да корни же это пределы интегрирования будут,а интеграл как искать лучше?че-нить типо метода симпсона не пойдет,лучше трапецией

  13. 3
    Пашка Джиоев ответил:

    #1: вроде так и надо. Еще надо заметить, что один корень следует искать на (0,2], а второй на [2, +\infty). Это нужно, чтобы простые методы поиска решения правильно работали, например метод деления пополам.

  14. 2
    Евгений Баталов ответил:

    Если правильно понял, вроде надо проинтегрировать обе функции, а потом из большей площади вычесть меньшую. Вобще от графиков функций зависит. Если они все на интервале больше нуля считаются, тогда так.

  15. 1
    Владимир Гордеев ответил:

    Гм. Тупо вычисляем интреграл, не нужно искать никаких корней.

    //ru.wikipedia.org/wiki/%D0%A7%D0%B8%D1%81%D0%B...

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.