Dada a equação de um polinômio e uma coordenada x, encontre a taxa de mudança do ponto nessa coordenada x na curva.
Um polinômio está na forma: ax n + ax n-1 + ... + ax 1 + a, onde a ϵ Q e n ϵ W. Para esse desafio, n também pode ser 0 se você não quiser ter para lidar com casos especiais (constantes) onde não há x.
Para encontrar a taxa de mudança nessa coordenada x, podemos obter a derivada do polinômio e inserir a coordenada x.
Entrada
O polinômio pode ser obtido de qualquer forma razoável, mas você deve indicar qual é esse formato explicitamente. Por exemplo, uma matriz do formulário [..[coefficient, exponent]..]
é aceitável.
Resultado
A taxa de mudança do ponto na coordenada x dada.
Isso é código-golfe , então o código mais curto em bytes vence.
Exemplos
[[4, 3], [-2, 4], [5, 10]] 19 -> 16134384838410
[[0, 4]] 400 -> 0
[[4, 0], [5,1]] -13 -> 5
[[4.14, 4], [48, 2]] -3 -> -735.12
[[1, 3], [-5, 0]] 5.4 -> 87.48
Respostas:
Mathematica, 6 bytes
(Bata ISSO ,
MATLe 05AB1E)O primeiro argumento deve ser um polinômio, com
#
como sua variável e com&
no final (ou seja, um polinômio de função pura; por exemplo3 #^2 + # - 7 &
). O segundo argumento é a coordenada x do ponto de interesse.Explicação
Tome a derivada do primeiro argumento (
1
está implícito).Conecte o segundo argumento.
Uso
fonte
MATL ,
86 bytesA entrada é: matriz de expoentes, número, matriz de coeficientes.
Experimente online! Ou verifique todos os casos de teste: 1 , 2 3 , 4 , 5 .
Explicação
Considere exemplo entradas
[3 4 10]
,19
,[4 -2 5]
.fonte
Julia,
45424037 bytesEsta é uma função que aceita um vetor de tuplas e um número e retorna um número. O valor absoluto é garantir que o expoente não seja negativo, o que é necessário porque Julia irritante lança a
DomainError
ao elevar um número inteiro para um expoente negativo.Experimente online! (inclui todos os casos de teste)
Agradecimentos a Glen O por algumas correções e bytes.
fonte
i[2]>0&&
para lidar com o caso constante, você usarabs(i[2]-1)
o expoente dex
. E um truque um pouco menos limpo para salvar outros três bytes é usar emp%x
vez def(p,x)
- observe que você pode chamá-lo como%(p,x)
se quisesse usá-lo em forma de função ... infelizmente, parece que não funciona no TIO (que aparentemente está executando o Julia 0.4.6), embora funcione no meu Julia 0.5.0.abs
parte, mas redefinindo operadores infixas me dói fisicamente ...05AB1E ,
1211 bytesGuardou um byte graças a Adnan.
Experimente online!
A precisão do ponto flutuante é do Python. Atualmente, troco os valores da pilha duas vezes, talvez haja uma maneira de evitá-lo e salvar alguns bytes.
fonte
}
:).DIs<m**O
é de 8 bytes, seguindo a resposta MATL que o @Luis Mendo forneceu.s¹<m**O
são 7 bytes. ( 05ab1e.tryitonline.net/… )Python 3, 41 bytes
6 bytes removidos graças a @AndrasDeak ! Na verdade, essa resposta agora é mais dele que minha ...
Agradecemos também a @ 1Darco1 por duas correções!
Função anônima que aceita uma lista de listas com coeficientes e expoentes (mesmo formato descrito no desafio) e um número.
Experimente aqui .
fonte
a*x**(b-1)
vez dea*b*x**(b-1)
? E ainda mais, e se $ x = 0 $?R, 31 bytes
Função anônima que recebe um vetor de coeficientes
a
, um vetor de expoentesn
e umx
valor.fonte
Matlab, 27 bytes
Esta é uma função anônima que aceita um valor
x
e um polôniop
na forma de uma lista de coeficientes, por exemplo,x^2 + 2
pode ser representada como[1,0,2]
.fonte
JavaScript (ES7), 40 bytes
a
é uma matriz dos coeficientes em ordem crescente de expoente com zeros incluídos, por exemplo, x ³-5 seria representado por[-5, 0, 0, 1]
.fonte
MATLAB com caixa de ferramentas matemática simbólica, 26 bytes
Isso define uma função anônima. As entradas são:
p
define o polinômio, no formato'4*x^3-2*x^4+5*x^10'
x
Exemplo de uso:
fonte
@(x,p)polyval(polyder(p),x)
para obter um byte.R,
3127 bytesFunção sem nome, tendo duas entradas
p
ex
.p
é considerado uma expressão R do polinômio (veja o exemplo abaixo) ex
é simplesmente o ponto de avaliação.Ele funciona chamando o
D
que calcula a derivada simbólica wrtx
e avalia a expressão emx
.Saída de exemplo
Supondo que a função agora seja nomeada,
f
ela pode ser chamada da seguinte maneira:que produz respectivamente:
fonte
PARI / GP , 20 bytes
Por exemplo,
a(4*x^3-2*x^4+5*x^10,19)
produz16134384838410
.fonte
f'
def
, e, em seguida, substituin
parax
.C ++ 14,
165138133112110 bytesO Lambda Variadic Genérico economiza muito. -2 bytes para
#import
e excluindo o espaço antes<
Ungolfed:
Uso:
fonte
Haskell, 33 bytes
Uso:
fonte
dc, 31 bytes
Uso:
fonte
DASH , 33 bytes
Uso:
Explicação
fonte
Scala, 46 bytes
Uso:
Explicação:
fonte
Axioma 31 bytes
resultados
fonte
Python 2, 39 bytes
lambda
A função requer duas entradasp
ex
.p
é o polinômio, fornecido no formato de exemplo fornecido na pergunta.x
é o valor x no qual encontrar a taxa de alteração.fonte
Pari / GP , 14 bytes
Uso:
Experimente online!
fonte
C, 78 bytes
fonte
Clojure, 53 bytes
O polinômio é expresso como um mapa de hash, chaves sendo coeficientes e valores são expoentes.
fonte
Casio Basic, 16 bytes
A entrada deve ser o polinômio em termos de
x
. 13 bytes para o código, +3 bytes para inserira,b
como parâmetros.Simplesmente deriva a expressão
a
em relação ax
e depois se inscrevex=b
.fonte
Dyalog APL,
262523 bytesToma polinômio como argumento da direita e valor como argumento da esquerda.
fonte