Я пытаюсь создать функцию, которая будет решать однофакторное полиномиальное уравнение в стандарте ML, но она продолжает давать мне ошибку.
код ниже
(* Eval Function *)
- fun eval (x::xs, a:real):real =
let
val v = x (* The first element, since its not multiplied by anything *)
val count = 1 (* We start counting from the second element *)
in
v + elms(xs, a, count)
end;
(* Helper Function*)
- fun pow (base:real, 0) = 1.0
| pow (base:real, exp:int):real = base * pow(base, exp - 1);
(* A function that solves the equation except the last element in the equation, the constant *)
- fun elms (l:real list, a:real, count:int):real =
if (length l) = count then 0.0
else ((hd l) * pow(a, count)) + elms((tl l), a, count + 1);
Теперь входные данные должны быть коэффициентом, если полиномиальные элементы и число заменяют переменную, т.е. если у нас есть функция 3x ^ 2 + 5x + 1, и мы хотим заменить x на 2, то мы бы назвали Eval следующим образом:
eval ([1.0, 5.0, 3.0], 2.0);
и результат должен быть 23,0, но иногда на разных входах, он дает мне разные ответы, но на этом импульсе он дает мне следующую ошибку
необработанное исключение Пусто поднято в:
smlnj / INIT / pervasive.sml: 209.19-209.24
в чем может быть моя проблема?