Хорошо, во-первых, это НЕ для класса, теста или другого вида деятельности студента.
Я - сценарист для игры, и я пытаюсь реализовать математическую библиотеку для всех, и, к сожалению, все, что у меня есть, - это очень простой lua. Реализованная версия не может быть изменена и не содержит никаких библиотек. Для тех, кто интересуется, для сценариев в Fold.It.
Вот что у меня есть ...
math={}
math.fact = function(b) if(b==1)or(b==0) then return 1 end e=1 for c=b,1,-1 do e=e*c end return e end
math.pow = function(b,p) e=b if(p==0) then return 1 end if(p<0) then p=p*(-1) end for c=p,2,-1 do e=e*b end return e end
math.cos = function(b,p) e=0 p=p or 10 for i=1,p do e=e+(math.pow(-1,i)*math.pow(b,2*i)/math.fact(2*i)) end return e end
Чтобы пояснить выше, math.fact возвращает факториал, который возвращает с точностью до 10 точек точности, и является новой функцией, которую я сделал, чтобы помочь в вычислении косинуса.
math.pow также является новой функцией для обработки возвращаемых способностей, также работающей как ожидалось.
Проблема связана с функцией косинуса. Это возвращение неожиданных значений. Вот более простая версия (я пишу свои библиотечные материалы сверхлегкие) ...
function math.cos(value,precision)
result=0
precision=precision or 10
for i=1,precision do
result=result+(math.pow(-1,i)*math.pow(value,2*i)/math.fact(2*i))
end
return e
end
Проблема с этими функциями для печати (math.cos (90)) возвращает 4.77135 ... когда я ожидаю -0.44807 ... (на основе calc в научном режиме или с использованием онлайн-инструмента к cos (90)).
У меня также есть проблемы с грехом и загаром, однако они так же записаны в cos, что, похоже, было сделано во многих языках. Если я смогу понять, что я делаю неправильно, я смогу все исправить.
РЕДАКТИРОВАТЬ: Исправлена опечатка