⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 numerical_elasticities.m

📁 %The Metabolic Networks Toolbox contains functions to create, %modify, display, and simulate bioche
💻 M
字号:
function [epsilon_1,epsilon_2,pi_1,pi_2,rho_2] = numerical_elasticities(x,p,velocity_function);%[epsilon_1,epsilon_2,pi_1,pi_2,rho_2] = numerical_elasticities(x,p,velocity_function);%% calculate the first- and second-order elasticities%% x                : variables       (vector)% p                : parameters      (structure array)% velocity_function: function handle to kinetics functionv = feval(velocity_function,x,p);for i=1:length(x), dx(i) =  max(x(i)*0.01,0.001); end  f=fields(p);for i=1:length(f), p_i = getfield(p,f{i}); dp(i) = max(p_i * 0.001,0.001); endfor i=1:length(x),    dx_i     = zeros(size(x));    dx_i(i)  = dx(i);    vv_plus  = feval(velocity_function,x+dx_i,p);    vv_minus = feval(velocity_function,x-dx_i,p);    epsilon_1(:,i) = (vv_plus - vv_minus)/(2*dx_i(i));endfor i=1:length(f)  p_i  = getfield(p,f{i});  dp_i = dp(i);  vv_plus  = feval(velocity_function,x,setfield(p,f{i}, p_i + dp_i ));  vv_minus = feval(velocity_function,x,setfield(p,f{i}, p_i - dp_i ));  pi_1(:,i) = (vv_plus - vv_minus) / ( 2*dp_i );endif nargout>2,% --- epsilon_2for i=1:length(x),  dx_i = zeros(size(x));  dx_i(i) = dx(i);    for k=i:length(x),    dx_k = zeros(size(x));    dx_k(k) = dx(k);    vv_plus  = feval(velocity_function,x+dx_i+dx_k,p);    vv_minus = feval(velocity_function,x-dx_i-dx_k,p);    h(:,i,k) = (vv_plus-2*v+vv_minus)/2;    h(:,k,i) = h(:,i,k);  endendfor i=1:length(x),  epsilon_2(:,i,i)= 1/(4*dx(i)^2)*h(:,i,i);   for k=1:i-1;       epsilon_2(:,i,k) = ( h(:,i,k) - 1/4 * h(:,i,i)- 1/4 * h(:,k,k) )/(2*dx(i)*dx(k));       epsilon_2(:,k,i) = epsilon_2(:,i,k);   endendepsilon_2(find(abs(epsilon_2)<(10^-7)))=0;% --- pi_2clear h  for i=1:length(f)  p_i  = getfield(p,f{i});  dp_i = dp(i);  for k=i:length(f)    p_k  = getfield(p,f{k});    dp_k = dp(k);    vv_plus  = feval(velocity_function,x,setfield(setfield(p,f{i}, p_i + dp_i ),f{k}, p_k + dp_k ));    vv_minus = feval(velocity_function,x,setfield(setfield(p,f{i}, p_i - dp_i ),f{k}, p_k - dp_k ));    h(:,i,k) = 2*(vv_plus - 2*v + vv_minus)/2;    h(:,k,i) = h(:,i,k);  endendfor i=1:length(f)   pi_2(:,i,i)= 1/(4*dp(i)^2)*h(:,i,i);  for k=1:i-1	pi_2(:,i,k) = ( h(:,i,k) -  h(:,i,i) - h(:,k,k) )/(2*dp(i)*dp(k));	pi_2(:,k,i) = pi_2(:,i,k);   endendpi_2(find(abs(pi_2)<(10^-7)))=0;% --- rho_2clear hfor i=1:length(x)  dx_i = zeros(size(x));  dx_i(i) = dx(i);  for k=1:length(f)   p_k = getfield(p,f{k});   vv_plus  = feval(velocity_function,x+dx_i,setfield(p,f{k}, p_k + dp(k) ));   vv_minus = feval(velocity_function,x-dx_i,setfield(p,f{k}, p_k - dp(k) ));   h(:,i,k) = (vv_plus - 2*v + vv_minus)/2;  endendfor i=1:length(x)  for k=1:length(f)    rho_2(:,i,k) = ( 2 * h(:,i,k) - epsilon_2(:,i,i)  * 2 * dx(i)^2 - pi_2(:,k,k) * 4 * dp(k)^2 )/(2*dx(i)*dp(k));;   endend rho_2(find(abs(rho_2)<(10^-7)))=0;end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -