Добрый день! Есть код:
-module(integral).
-export([trapezium_method/4, simpson_method/4]).
trapezium_method(F, A, B, N) ->
trapezium_method(F, A, abs(N - 1), (B - A) / N, (F(A) + F(B))/2 ).
trapezium_method(_, _, 0, H, Res) ->
abs(H * Res);
trapezium_method(F, A, N, H, Res) ->
trapezium_method(F, A, N-1, H, Res + F(A + N * H)).
simpson_method(F, A, B, N) ->
simpson_method(F, A, abs(N-1), (B - A) / N, F(A) + F(B), 0, 0).
simpson_method(_, _, 0, H, Res, M0, M1) ->
abs( (H/3) * abs(Res + 2*M0 + 4*M1) );
simpson_method(F, A, N, H, Res, M0, M1) ->
case (N rem 2) of
0 -> simpson_method(F, A, N-1, H, Res, M0 + F(A + N * H), M1);
1 -> simpson_method(F, A, N-1, H, Res, M0, M1 + F(A + N * H))
end.
Основное задание я выполнил (c#) и решил задачу решить, уже для себя, на изучаемом мною сейчас Erlang. То ли в ответах к заданиям ошибки, то ли я криворук, но половина ответов сходится, а половина нет. Могли бы вы глянуть на код и оценить на сколько он правильный, больше всего интересует метод Симпсона.