Derivatives with respect to three variables using gradent function. I am getting zero as answer for all values of varables
1 view (last 30 days)
Show older comments
function f = objective_fun_full(x)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Input parameters------------------------------------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Inj_Pr_min = 500; % Kpa
Inj_Pr_max = 8500; % Kpa
Injection_period_min = 0.5; % years
Injection_period_max= 8.5; % years
Solvolfrac_min = 0.01;% fraction
Solvolfrac_max = 0.410;% fraction
A = (Inj_Pr_min + Inj_Pr_max)/2;
B = (Injection_period_min+Injection_period_max)/2;
C = (Solvolfrac_min+Solvolfrac_max)/2;
a = (Inj_Pr_max - Inj_Pr_min)/2;
b = (Injection_period_max - Injection_period_min)/2;
c = (Solvolfrac_max - Solvolfrac_min)/2;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Optimum conditions--------------------------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Inj_Pr_Op_RF = 5400;
Inj_Period_Op_RF = 5.4;
Solvent_frac_Op_RF = 0.255;
Inj_Pr_Op_cSOR = 600;
Inj_Period_Op_cSOR = 0.6;
Solvent_frac_Op_cSOR = 0.015;
Inj_Pr_Op_Solv_Reco = 6600;
Inj_Period_Op_Solv_Reco = 6.6;
Solvent_frac_Op_Solv_Reco = 0.315;
RF_Optimum = (0.428612934) + (0.073578399) * ((Inj_Pr_Op_RF-A)/a) + (-0.028780801) * ((Inj_Period_Op_RF-B)/b) + (0.093376701) * ((Solvent_frac_Op_RF-C)/c) + (-0.022667198) * ((Inj_Pr_Op_RF-A)/a)*((Inj_Period_Op_RF-B)/b) + (-0.023206995) * ((Inj_Pr_Op_RF-A)/a)*((Solvent_frac_Op_RF-C)/c) + (-0.085392014) * ((Inj_Period_Op_RF-B)/b)*((Solvent_frac_Op_RF-C)/c) + (0.012506573) * ((Inj_Pr_Op_RF-A)/a)*((Inj_Period_Op_RF-B)/b)*((Solvent_frac_Op_RF-C)/c) + (-0.013395787) * ((Inj_Pr_Op_RF-A)/a)*((Inj_Pr_Op_RF-A)/a) + (-0.028069875) * ((Inj_Period_Op_RF-B)/b)*((Inj_Period_Op_RF-B)/b) + (-0.053102912) * ((Solvent_frac_Op_RF-C)/c)*((Solvent_frac_Op_RF-C)/c);
cSOR_Optimum = (2.485517241) + (0.21) * ((Inj_Pr_Op_RF-A)/a) + (0.436) * ((Inj_Period_Op_RF-B)/b) + (-0.048) * ((Solvent_frac_Op_RF-C)/c) + (-0.1075) * ((Inj_Pr_Op_RF-A)/a)*((Inj_Period_Op_RF-B)/b) + (0.045) * ((Inj_Pr_Op_RF-A)/a)*((Solvent_frac_Op_RF-C)/c) + (0.0925) * ((Inj_Period_Op_RF-B)/b)*((Solvent_frac_Op_RF-C)/c) + (0.3325) * ((Inj_Pr_Op_RF-A)/a)*((Inj_Period_Op_RF-B)/b)*((Solvent_frac_Op_RF-C)/c) + (0.071724138) * ((Inj_Pr_Op_RF-A)/a)*((Inj_Pr_Op_RF-A)/a) + (0.001724138) * ((Inj_Period_Op_RF-B)/b)*((Inj_Period_Op_RF-B)/b) + (0.051724138) * ((Solvent_frac_Op_RF-C)/c)*((Solvent_frac_Op_RF-C)/c);
Solv_Reco_Optimum = (1.00619478) + (-0.002832569) * ((Inj_Pr_Op_RF-A)/a) + (0.017820705) * ((Inj_Period_Op_RF-B)/b) + (0.015304436) * ((Solvent_frac_Op_RF-C)/c) + (0.005412352) * ((Inj_Pr_Op_RF-A)/a)*((Inj_Period_Op_RF-B)/b) + (0.003780369) * ((Inj_Pr_Op_RF-A)/a)*((Solvent_frac_Op_RF-C)/c) + (-0.016360606) * ((Inj_Period_Op_RF-B)/b)*((Solvent_frac_Op_RF-C)/c) + (-0.005467952) * ((Inj_Pr_Op_RF-A)/a)*((Inj_Period_Op_RF-B)/b)*((Solvent_frac_Op_RF-C)/c) + (-0.013667312) * ((Inj_Pr_Op_RF-A)/a)*((Inj_Pr_Op_RF-A)/a) + (-0.000849831) * ((Inj_Period_Op_RF-B)/b)*((Inj_Period_Op_RF-B)/b) + (-0.017202734) * ((Solvent_frac_Op_RF-C)/c)*((Solvent_frac_Op_RF-C)/c);
x=[2500 0.5 0.5]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Optimum conditions--------------------------------------
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
RF1 = (0.428612934) + (0.073578399) * ((x(1)-A)/a) + (-0.028780801) * ((x(2)-B)/b) + (0.093376701) * ((x(3)-C)/c) + (-0.022667198) * ((x(1)-A)/a)*((x(2)-B)/b) + (-0.023206995) * ((x(1)-A)/a)*((x(3)-C)/c) + (-0.085392014) * ((x(2)-B)/b)*((x(3)-C)/c) + (0.012506573) * ((x(1)-A)/a)*((x(2)-B)/b)*((x(3)-C)/c) + (-0.013395787) * ((x(1)-A)/a)*((x(1)-A)/a) + (-0.028069875) * ((x(2)-B)/b)*((x(2)-B)/b) + (-0.053102912) * ((x(3)-C)/c)*((x(3)-C)/c);
cSOR1 = (2.485517241) + (0.21) * ((x(1)-A)/a) + (0.436) * ((x(2)-B)/b) + (-0.048) * ((x(3)-C)/c) + (-0.1075) * ((x(1)-A)/a)*((x(2)-B)/b) + (0.045) * ((x(1)-A)/a)*((x(3)-C)/c) + (0.0925) * ((x(2)-B)/b)*((x(3)-C)/c) + (0.3325) * ((x(1)-A)/a)*((x(2)-B)/b)*((x(3)-C)/c) + (0.071724138) * ((x(1)-A)/a)*((x(1)-A)/a) + (0.001724138) * ((x(2)-B)/b)*((x(2)-B)/b) + (0.051724138) * ((x(3)-C)/c)*((x(3)-C)/c);
Solv_Reco1 = (1.00619478) + (-0.002832569) * ((x(1)-A)/a) + (0.017820705) * ((x(2)-B)/b) + (0.015304436) * ((x(3)-C)/c) + (0.005412352) * ((x(1)-A)/a)*((x(2)-B)/b) + (0.003780369) * ((x(1)-A)/a)*((x(3)-C)/c) + (-0.016360606) * ((x(2)-B)/b)*((x(3)-C)/c) + (-0.005467952) * ((x(1)-A)/a)*((x(2)-B)/b)*((x(3)-C)/c) + (-0.013667312) * ((x(1)-A)/a)*((x(1)-A)/a) + (-0.000849831) * ((x(2)-B)/b)*((x(2)-B)/b) + (-0.017202734) * ((x(3)-C)/c)*((x(3)-C)/c);
distance= sqrt((((RF1-RF_Optimum)^2)/RF_Optimum^2) + ((cSOR1 - cSOR_Optimum)^2/cSOR_Optimum^2)+(((Solv_Reco1-Solv_Reco_Optimum)^2)/Solv_Reco_Optimum^2))
f = gradient(distance)
0 Comments
Answers (1)
Alan Weiss
on 17 Jul 2014
The MATLAB gradient function calculates a numerical gradient as described here, not an analytic gradient. If you are looking for an analytic gradient, use Symbolic Math Toolbox and the jacobian or gradient function.
Alan Weiss
MATLAB mathematical toolbox documentation
0 Comments
See Also
Categories
Find more on Linear Algebra in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!