background image

function

 getMaxDerivativeByFormulaAndXDATAS(

$formula

$x_datas

, &

$matchs

){ 

$derivatives

 = 

array

(); 

$max_derivative

 = 0; 

foreach

 (

$x_datas

 

as

 

$x_data

) { 

$derivative

 = getDerivativeByFormulaAndXDATA(

$formula

$x_data

); 

$derivatives

[

$x_data

] = 

$derivative

$max_derivative

 = 

$max_derivative

>=

abs

(

$derivative

)?

$max_derivative

:

abs

(

$derivative

); 

//printf("x=%f, derivative=%f \n",$x_data, $derivative); 

$matchs

 = 

array

(); 

foreach

 (

$derivatives

 

as

 

$x_data

=>

$derivative

) { 

if

(

abs

(

$derivative

) == 

$max_derivative

){ 

$matchs

[] = 

$x_data



printf("max derivative=%f\n",

$max_derivative

); 

foreach

 (

$matchs

 

as

 

$x_match

) { 

printf(" derivative=%f when x=%f\n",

$derivatives

[

$x_match

], 

$x_match

); 


//notice the format of formula: ax^b if b=0 could omit except coefficient a, if a=1 could omit 
coefficient 

$formula

 = "x^2+2x^1+1"; 

print

 "The formula is $formula \n"; 

//printf("Derivative of 2 is %f \n",getDerivativeByFormulaAndXDATA($formula, 3.2)); 
//print getValueByFormulaAndXDATA($formula, 3.2)."\n"; 

$sampleData

 = 

array

(-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,1,2,3,4,5,6,7,8,9,10,11,12); 

foreach

 (

$sampleData

 

as

 

$x_data

) { 

$str

.=

$x_data

.", "; 

print

 "sample x values: $str \n"; 

getMaxDerivativeByFormulaAndXDATAS(

$formula

$sampleData

$matchs

)."\n"; 

?> 
 
the output will be: 
sample x values: -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
max derivative=26.000000 
derivative=26.000000 when x=12.000000