rbmatlab  1.16.09
 All Classes Namespaces Files Functions Variables Modules Pages
scm_coercive_lb.m
Go to the documentation of this file.
1 function alpha_LB = scm_coercive_lb(mu,model,operator,SCM_data)
2 %alpha_LB = scm_lb(mu,model,model_data)
3 % computation of the lowerbound of the coercive constant
4 % equal to the coercive constant computet via SCM
5 %
6 % mu : parameter which lower bound value is desired
7 % model : standart model
8 % model_data : standart model_data
9 % SCM_data : precomputed offline SCM data (e.g. via scm_coercive_greedy)
10 
11 % David Kreplin 01.12 2014
12 
13 if isfield(SCM_data,'C') == 0
14  error('SCM Greedy computation is required first')
15 end
16 
17 [~,Ind_PMa] = scm_get_neighbours(SCM_data.params.Ma, mu, SCM_data.C.Set);
18 [PMp,Ind_PMp] = scm_get_neighbours(SCM_data.params.Mp, mu, SCM_data.params.ParameterSet);
19 Ma = length(Ind_PMa);
20 Mp = length(Ind_PMp);
21 b_lp= zeros(Ma+Mp,1);
22 A_lp= zeros(Ma+Mp,SCM_data.params.Q);
23 
24 b_lp(1:Ma) = -1*SCM_data.C.coercivity(Ind_PMa(1:Ma));
25 A_lp(1:Ma,:) = -1*SCM_data.C.ParameterVector(Ind_PMa(:,1:Ma),:);
26 
27 for i = 1:Mp
28  model = set_mu(model,PMp(:,i));
29  model.decomp_mode=2;
30  [A,~] = operator(model);
31  A_lp(i+Ma,:) = -1*A';
32 end
33 
34 model = set_mu(model,mu);
35 model.decomp_mode=2;
36 [A,~] = operator(model);
37 f_lp = A;
38 Options = optimset('Display','off');
39 [~,alpha_LB]=linprog(f_lp,A_lp,b_lp,[],[],SCM_data.lower_bound_coercivity,...
40  SCM_data.upper_bound_coercivity,SCM_data.upper_bound_coercivity,Options);
41 %keyboard;
42 end
function alpha_LB = scm_coercive_lb(mu, model, operator, SCM_data)
alpha_LB = scm_lb(mu,model,model_data) computation of the lowerbound of the coercive constant equal t...
function SCM_data = scm_coercive_greedy(model, params, operator, innerproduct_matrix)
model=scm_greedy(model, model_data)
function [ P_M , ind ] = scm_get_neighbours(M, mu, C)
[P_M, ind] = scm_get_neighbours(M, mu, C)