<?php class turev { var $ds = array( 'log(ax+b)' => 'd(ax+b)/(ax+b)', 'cos(ax+b)' => '-1*sin(ax+b)*d(ax+b)', 'sin(ax+b)' => '1*cos(ax+b)*d(ax+b)'); function coklu_turev($fonksiyon) { // İşlev formatı: k(coklu)^n + k(coklu)^n vb ... $q = explode(" ",$fonksiyon); foreach ($q as $r => $s) { if (strlen($s) > 1) { $t = preg_match("/([0-9]+)\((.+)\)\^([0-9-])/",$s,$w); if (is_array($w)) { if ($w[3] == 1) { $c1 = $w[1]; $c2 = $this->tekli_turev(str_replace("+"," + ",str_replace("-"," - ",$w[2]))); $df[] = $c1*$c2."x^0"; } elseif ($w[3] == 0) $df[] = 0; else { $c1 = $w[1]*$w[3]; $pfin = $w[3]-1; $c2 = $this->tekli_turev(str_replace("+"," + ",str_replace("-"," - ",$w[2]))); if (is_int($c2)) { $c3 = $c1*$c2; $df[] = $c3."(".$w[2].")^".$pfin; } else { $r = $c1."(".$w[2].")^".$pfin; $df[] = $r; } } } else{ $df[] = $s; } } else{ if($t==1){ $df[] = " + "; }else{ $df[] = $t; } } } return implode($df); } function tekli_turev($fonksiyon) { // İşlev formatı: kx^n + kx^n + kx^n $a = explode(" ",$fonksiyon); foreach ($a as $b => $c) { if (strlen($c) > 1) { $r = preg_match("/([0-9]+)x\^([0-9-]+)/",$c,$d); if (is_array($d)) { if ($d[2] > 1 or $d[2] < -1) $turev[] = ($d[1]*$d[2])."x^".($d[2]-1); elseif (abs($d[2]) == 1) $turev[] = $d[1]; else array_pop($turev); unset($d); } else $turev[] = $c; } else $turev[] = $c; } return implode(" ",$turev); } } $t= new turev; echo $t->coklu_turev("3(x+b)^3 + 3(x+b)^3"); echo "<br>"; echo $t->tekli_turev("3x^2 + 3x^2 + 3x^2");
Çıktısı
9(x+b)^2 + 9(x+b)^2 6x^1 + 6x^1 + 6x^1