• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

luchhozito

formula resolvente

10 mensagens neste tópico

boas pessoal eu tenho uma funcão que tava a fazer e era dado 3 numeros axar as suas raízes (reais)

entao declarei assim grau2 :: Float -> Float -> Float -> (Float,Float)

Queria que o resultado me desse numa tupla (par de floats)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não percebi qual é exactamente a tua dúvida... Já fizeste algum código?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tipo se fosse pa dar um inteiro sabia . era so fazer o calculo da formula.

mas por exemplo ha sempre duas raízes. Queria por uma (raiz1,raiz2)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Exemplo de uma função que devolve um par:

maior_menor :: Int -> Int -> (Int, Int)
maior_menor x y =
  if x > y
    then (x, y)
    else (y, x)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ok , agora se quisesse por as duas raízes dentro de um par ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tenho esta funcao: calcula os zeros (raízes)

praiz :: Float -> Float -> Float-> (Float,Float)

praiz a b c = (((-b - sqrt(b^2 - 4 * a * c))/2*a),((-b + sqrt(b^2 - 4 * a * c))/2*a))

Quando complilo não dá erros mas por exemplo , executo:

praiz 2 3 4

e resultado do ghc dá-me:

(NaN,NaN)

n percebo lol

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a b c = 2 3 4

b^2 - 4 * a *c = 3^2 - 4 * 2 * 4 = 9 - 32 = -23

O Haskell trabalha com números complexos?

A raiz quadrada de -23 é um número complexo: ~4.796i

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não percebi muito bem, mas acho que era isto que querias

--Calcula o numero de raízes da função
nRaizes :: Float -> Float -> Float -> Float
nRaizes a b c =	let delta = (b^2-(4*a*c))
			in	if delta > 0
				then 2
				else	if delta == 0
						then 1
						else 0
--Calcula-te os zeros da função.
fResolvente :: Float -> Float -> Float -> [Float]
fResolvente a b c	| nRaizes a b c == 1 = [-b/(2*a)]
				| nRaizes a b c == 2 = [((-b-rd)/(2*a)),((-b+rd)/(2*a))]
				| nRaizes a b c == 0 = []
					where rd = (sqrt(b^2-(4*a*c)))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

--Calcula o numero de raízes da função
poli :: Float->Float->Float->Int
poli a b c = if (((b^2)-4*a*c) < 0) then 0
             else if (((b^2)-4*a*c) == 0) then 1
             else 2

--Calcula os zeros da função.
poli2 :: Float -> Float -> Float -> [Float]
poli2 a b c = if poli a b c == 0 then []
              else if poli a b c == 1 then [-b/(2*a)]
              else if poli a b c == 2 then [(-b-(sqrt(b^2-(4*a*c)))),(-b-(sqrt(b^2-(4*a*c))))]
              else []

eu fiz dessa forma alguem me confirma se isso esta bem?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora