从头开始相切

Tangent by scratch

我是 Erlang 的新手,我正在使用 Ubuntu 命令行来 运行 程序和 gedit edit/write 代码。

我正在尝试编写切线而不是使用内置数学 class。

我收到以下错误,不确定需要更改什么。

错误

** exception error: an error occurred when evaluating an arithmetic expression
     in function  math:sqrt/1
        called as math:sqrt(-0.07926409746793839)
        *** argument 1: is outside the domain for this function
     in call from extra:double/1 (extra.erl, line 11)

代码

-module(extra).

-export([double/1]).

-import(io,[fwrite/1]).

% I am a comment.

double(N) -> 
    Num = math:sin(N),
    Dem = math:sqrt(1 - (Num * 2)),
    Tan = Num / Dem,
    io:fwrite("~w",[Tan]).

我认为在计算 Demsqrt 时,您应该使用 Num * Num 而不是 Num * 2

double(N) -> 
    Num = math:sin(N),
    Dem = math:sqrt(1 - (Num * Num)),
    Tan = Num / Dem,
    io:fwrite("~w~n",[Tan]).

正如错误所言...

*** argument 1: is outside the domain for this function

在执行 math:sqrt(1 - (Num * 2)) 时,显然 Num * 2 变得比 1 更重要,导致否定论点被输入 math:sqrt,从而导致破损。

插图:sqrt 带有负参数

> math:sqrt(-1).
math:sqrt(-1).
** exception error: an error occurred when evaluating an arithmetic expression
     in function  math:sqrt/1
        called as math:sqrt(-1)
        *** argument 1: is outside the domain for this function


WYSIWYG => WHAT YOU SHOW IS WHAT YOU GET