$derive(expression) : fonction dérivée

Contenu du snippet

Dérive une expression de type ax^m+bx^n+cx^o+... avec a, b, c, etc. et m, n, o, etc. appartenant à IR

exemple : $derive(2x+4) retourne 2
$derive(7x^4-0.5x^-6) retourne 28x^3+3x^-7

Ne supporte pas encore les multiplications et divisions (et les parenthèses)
Pas d'espace dans l'expression

Source / Exemple :


derive {
  if * !isin $$1 && / !isin $$1 && $chr(40) !isin $$1 && $chr(41) !isin $$1 {
    tokenize 32 $replace($replace($$1, -, +-, ¹, ^1, ², ^2, ³, ^3), ^+-, ^-)
    if ($left($$1, 1) == +) tokenize 32 $right($$1, $calc($len($$1) -1))
    if ($$1 isnum) return 0
    var %¥ = $numtok($$1, 43)
    var %? = 0
    while %? < %¥ {
      inc %?
      var %¤ = $gettok($$1, %?, 43)
      %¤ = $iif($left(%¤, 1) == x, 1) $+ %¤ $+ $iif($right(%¤, 1) == x, ^1)
      if %¤ !isnum {
        var %¢ = $remove($gettok(%¤, $numtok(%¤, 120), 120), ^)
        var %£ = $+(%£, +, $remove($calc(%¢ * $iif($gettok(%¤, 1, 120) != x, $v1, 1)) $+ x^ $+ $calc(%¢ -1), x^0, ^1))
      }    
    }
    return $replace($right(%£, $calc($len(%£) -1)), +-, -, 1x, x)
  }
}

Conclusion :


Ça fait longtemps que j'ai pas codé sur mIRC, donc je suis sûr que mon code doit être optimisable (peut-être y-a-t-il même des erreurs ?). J'essaierai d'améliorer le code pour pouvoir dériver n'importe quelle expression.

PS : évidemment celui qui n'aime pas les maths n'a rien à faire ici :P

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.