2 votes

Comment résoudre une équation pour une variable donnée dans R ?

C'est l'équation a <- x * t - 2 * x . Je veux résoudre cette équation pour t . Donc, en gros, il faut mettre a = 0 et résoudre pour t . Je suis nouveau dans le R pour résoudre des équations. J'ai besoin du paquet qui résout les racines complexes. Les équations originales avec lesquelles je travaille ont des racines réelles et imaginaires. Je cherche une solution algébrique uniquement, pas numérique.

J'ai essayé :

a <- x * t - 2 * x
solve(a,t)

Je rencontre une erreur :

Error in solve.default(a, t) : 'a' (1000 x 1) must be square

4voto

Stéphane Laurent Points 1533

Vous pouvez utiliser Ryacas pour obtenir la solution sous la forme d'une expression de x :

library(Ryacas)

x <- Sym("x")
t <- Sym("t")

Solve(x*t-2*x == 0, t)
# Yacas vector:
# [1] t == 2 * x/x

Comme vous pouvez le voir, la solution est t=2 (en supposant que x est différent de zéro).

Essayons un exemple moins trivial :

Solve(x*t-2*x == 1, t)
# Yacas vector:
# [1] t == (2 * x + 1)/x

Si vous voulez obtenir une fonction qui fournit la solution en fonction de x que vous pouvez faire :

solution <- Solve(x*t-2*x == 1, t)
f <- function(x){}
body(f) <- yacas(paste0("t Where ", solution))$text
f
# function (x) 
# (2 * x + 1)/x

1voto

RBeginner Points 34

Vous cherchez peut-être à optimiser :

a=function(x,t) x*t-2*x
optimize(a,lower=-100,upper=100,t=10)
optimize(a,lower=-100,upper=100,x=2)

Si vous avez besoin de plus d'aide, il me faut un exemple reproductible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X