我必须编写一个程序来解决quadratics,返回一个复数的结果.
到目前为止,我已经定义了一个复数,声明它是num的一部分,所以+, - 和* - ing可以发生.
我还为二次方程定义了一种数据类型,但我现在仍然坚持二次方程式的实际求解.我的数学很差,所以任何帮助都会非常感激......
data Complex = C {
re :: Float,
im :: Float
} deriving Eq
-- Display complex numbers in the normal way
instance Show Complex where
show (C r i)
| i == 0 = show r
| r == 0 = show i++"i"
| r < 0 && i < 0 = show r ++ " - "++ show (C 0 (i*(-1)))
| r < 0 && i > 0 = show …Run Code Online (Sandbox Code Playgroud) math haskell functional-programming quadratic complex-numbers
所以我已经在haskell中创建了自己的复数数据类型.
由于这里的另一个问题,我也得到了一个能解决二次方程的函数.
现在唯一的问题是,在尝试解决具有复杂根的二次方时,代码会在拥抱中生成解析错误.
即拥抱......
Main> solve (Q 1 2 1)
(-1.0,-1.0)
Main> solve (Q 1 2 0)
(0.0,-2.0)
Main> solve (Q 1 2 2)
(
Program error: pattern match failure: v1618_v1655 (C -1.#IND -1.#IND)
Run Code Online (Sandbox Code Playgroud)
在应用平方根之后,它看起来像我的问题,但我真的不确定.任何试图找出问题的帮助或任何关于这个错误意味着什么的指示都将是辉煌的.
谢谢,
托马斯
代码:
-- A complex number z = (re +im.i) is represented as a pair of Floats
data Complex = C {
re :: Float,
im :: Float
} deriving Eq
-- Display complex numbers in the normal way
instance Show Complex where
show …Run Code Online (Sandbox Code Playgroud)