|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Определенный интеграл
Надо написать прогу, считающую любой определенный интеграл (с небольшими ограничениями конечно по функциям - только sin, cos, tg, arcsin, arccos, arctg, ln, exp, sqrt) думаю по методу Симпсона.
вот даже алгоритм нашел: Код:
Вычисление интеграла с заданной точностью алгоритмом Симпсона. // (c) Copydown 2002, all left reserved. http://world.fpm.kubsu.ru. {$APPTYPE CONSOLE} {$F+} {разрешение передачи функций, как параметров} type FunctionType = function(x: real): real; {интегрируемая функция} function f(x: real): real; begin f := x end; {интегрирование от a до b функции f с точностью e} function IntegralSimpson(a, b: real; f: FunctionType; e: real): real; var h, x, s, s1, s2, s3, sign: real; begin if (a = b) then begin IntegralSimpson := 0; exit end; if (a > b) then begin x := a; a := b; b := x; sign := -1 end else sign:=1; h := b - a; s := f(a) + f(b); s2 := s; repeat s3 := s2; h := h/2; s1 := 0; x := a + h; repeat s1 := s1 + 2*f(x); x := x + 2*h; until (not(x < b)); s := s + s1; s2 := (s + s1)*h/3; x := abs(s3 - s2)/15 until (not(x > e)); IntegralSimpson := s2*sign; end; begin {вывод результата интегрирования от 0 до 1 функции f с точностью 0.001} writeln(IntegralSimpson(0, 1, f, 0.001)); writeln; writeln(′Press Enter′); readln; end. Как из Edit.text считать выражение допустим 5*x+sin(x) без преобразования в строку, а как просто математическое выражение? Невозможно? Может у кого еще какие мысли есть? |
#2
|
||||
|
||||
Из Edit можно считать только строку… Но потом из этой строки можно сформировать что захочешь… Возможно, тебе будет полезно прочитать про "обратную польскую запись", например здесь - http://decoding.narod.ru/practic/pol...ishrecord.html
|
#3
|
|||
|
|||
Цитата:
|
#4
|
|||
|
|||
послушайте, Евгений, как лучше адаптировать программу, чтобы она работала и с переменной Х?
|
#5
|
||||
|
||||
Если тебе нужно использовать переменные внутри строки, то нет никаких проблем - используй. только перед началом разбора замени их на соответствующие им значения (например StringReplace()).
|