23 | | <a name="l00006"></a>00006 <span class="comment">//Tady se naplni "popis" jednotlivych nahodnych velicin na kterych se pracuje</span> |
24 | | <a name="l00007"></a>00007 <span class="comment">// Moznosti je velmi mnoho (viz doc/html/index.html): napriklad</span> |
25 | | <a name="l00008"></a>00008 <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> RVstav ( <span class="stringliteral">"{stav }"</span>, <span class="stringliteral">"4"</span>); <span class="comment">// Vyrabim stav velikosti 4</span> |
26 | | <a name="l00009"></a>00009 <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> RVut ( <span class="stringliteral">"{ut }"</span>, <span class="stringliteral">"2"</span>); <span class="comment">// Vstup velikosti 2</span> |
27 | | <a name="l00010"></a>00010 <a class="code" href="classRV.html" title="Class representing variables, most often random variables.">RV</a> RVpozor ( <span class="stringliteral">"{I1 O1 }"</span>); <span class="comment">//Vystup je intenzita a obsazenost</span> |
28 | | <a name="l00011"></a>00011 |
29 | | <a name="l00013"></a><a class="code" href="classIMk1.html">00013</a> <span class="keyword">class </span><a class="code" href="classIMk1.html" title="Model stredni hodnoty vyvoje stavu pro k1.">IMk1</a> : <span class="keyword">public</span> <a class="code" href="classdiffbifn.html" title="Class representing a differentiable function of two variables .">diffbifn</a> { |
30 | | <a name="l00014"></a>00014 <span class="keyword">protected</span>: |
31 | | <a name="l00015"></a>00015 <span class="keywordtype">double</span> alp1, alp2; <span class="comment">// pomery odboceni...</span> |
32 | | <a name="l00016"></a>00016 |
33 | | <a name="l00017"></a>00017 <span class="keyword">public</span>: |
34 | | <a name="l00019"></a><a class="code" href="classIMk1.html#c440a205745a09c2c903c4bdf7f5f9fc">00019</a> <a class="code" href="classIMk1.html#c440a205745a09c2c903c4bdf7f5f9fc" title="Constructor.">IMk1</a>() :<a class="code" href="classdiffbifn.html" title="Class representing a differentiable function of two variables .">diffbifn</a> (RVstav.count(), RVstav, RVut ) {}; |
35 | | <a name="l00021"></a><a class="code" href="classIMk1.html#75f9d12716a3648a838477186b49aff1">00021</a> <span class="keywordtype">void</span> <a class="code" href="classIMk1.html#75f9d12716a3648a838477186b49aff1" title="set CONSTANT parameters">set_parameters</a> ( <span class="keywordtype">double</span> alp10, <span class="keywordtype">double</span> alp20) {alp1=alp10; alp2=alp20;} |
36 | | <a name="l00022"></a>00022 |
37 | | <a name="l00023"></a><a class="code" href="classIMk1.html#8957f00622352dcacd64518136c7da33">00023</a> vec <a class="code" href="classIMk1.html#8957f00622352dcacd64518136c7da33" title="Evaluates .">eval</a> ( <span class="keyword">const</span> vec &x0, <span class="keyword">const</span> vec &u0 ) { |
38 | | <a name="l00024"></a>00024 <span class="comment">// napln stav nulami</span> |
39 | | <a name="l00025"></a>00025 vec xk=zeros ( RVstav.<a class="code" href="classRV.html#f5c7b8bd589eef09ccdf3329a0addea0" title="Return number of scalars in the RV.">count</a>() ); |
40 | | <a name="l00026"></a>00026 |
41 | | <a name="l00027"></a>00027 xk ( 0 ) = 0.2* x0(1) - 0.1* x0(2)+ u0(0); <span class="comment">// vycucane z prstu</span> |
42 | | <a name="l00028"></a>00028 xk ( 1 ) = x0(0); |
43 | | <a name="l00029"></a>00029 xk ( 2 ) = x0(1); |
44 | | <a name="l00030"></a>00030 xk ( 3 ) = x0(2); |
45 | | <a name="l00031"></a>00031 |
46 | | <a name="l00032"></a>00032 <span class="keywordflow">return</span> xk; |
47 | | <a name="l00033"></a>00033 } |
48 | | <a name="l00034"></a>00034 |
49 | | <a name="l00035"></a><a class="code" href="classIMk1.html#463177c0fdffdf4951761959160cc682">00035</a> <span class="keywordtype">void</span> <a class="code" href="classIMk1.html#463177c0fdffdf4951761959160cc682" title="Evaluates and writes result into A .">dfdx_cond</a> ( <span class="keyword">const</span> vec &x0, <span class="keyword">const</span> vec &u0, mat &A, <span class="keywordtype">bool</span> full=<span class="keyword">true</span> ) { |
50 | | <a name="l00036"></a>00036 <span class="comment">// Vysledek se uklada do matice A</span> |
51 | | <a name="l00037"></a>00037 |
52 | | <a name="l00038"></a>00038 <span class="keywordflow">if</span> (full) { <span class="comment">// priznak full se nastavi na zacatku => je treba naplnit celou matici</span> |
53 | | <a name="l00039"></a>00039 A = eye(RVstav.<a class="code" href="classRV.html#f5c7b8bd589eef09ccdf3329a0addea0" title="Return number of scalars in the RV.">count</a>()); |
54 | | <a name="l00040"></a>00040 A(0,1) = 0.2; |
55 | | <a name="l00041"></a>00041 A(0,2) = -0.1; |
56 | | <a name="l00042"></a>00042 } <span class="keywordflow">else</span> { |
57 | | <a name="l00043"></a>00043 }; <span class="comment">// pokud neni priznak full, staci naplnit jen to co se zmenilo. V tomhle pripade se nemeni nic</span> |
58 | | <a name="l00044"></a>00044 } |
59 | | <a name="l00045"></a>00045 |
60 | | <a name="l00046"></a><a class="code" href="classIMk1.html#2b85f0984da3fe55849bb7b28f66e50c">00046</a> <span class="keywordtype">void</span> <a class="code" href="classIMk1.html#2b85f0984da3fe55849bb7b28f66e50c" title="Evaluates and writes result into A .">dfdu_cond</a> ( <span class="keyword">const</span> vec &x0, <span class="keyword">const</span> vec &u0, mat &A, <span class="keywordtype">bool</span> full=<span class="keyword">true</span> ) {it_error ( <span class="stringliteral">"not needed"</span> );}; |
| 23 | <a name="l00006"></a>00006 <span class="keyword">using namespace </span>bdm; |
| 24 | <a name="l00007"></a>00007 |
| 25 | <a name="l00008"></a>00008 <span class="comment">//Tady se naplni "popis" jednotlivych nahodnych velicin na kterych se pracuje</span> |
| 26 | <a name="l00009"></a>00009 <span class="comment">// Moznosti je velmi mnoho (viz doc/html/index.html): napriklad</span> |
| 27 | <a name="l00010"></a>00010 <a class="code" href="classbdm_1_1RV.html" title="Class representing variables, most often random variables.">RV</a> RVstav ( <span class="stringliteral">"{stav }"</span>, <span class="stringliteral">"4"</span>); <span class="comment">// Vyrabim stav velikosti 4</span> |
| 28 | <a name="l00011"></a>00011 <a class="code" href="classbdm_1_1RV.html" title="Class representing variables, most often random variables.">RV</a> RVut ( <span class="stringliteral">"{ut }"</span>, <span class="stringliteral">"2"</span>); <span class="comment">// Vstup velikosti 2</span> |
| 29 | <a name="l00012"></a>00012 <a class="code" href="classbdm_1_1RV.html" title="Class representing variables, most often random variables.">RV</a> RVpozor ( <span class="stringliteral">"{I1 O1 }"</span>); <span class="comment">//Vystup je intenzita a obsazenost</span> |
| 30 | <a name="l00013"></a>00013 |
| 31 | <a name="l00015"></a><a class="code" href="classIMk1.html">00015</a> <span class="keyword">class </span><a class="code" href="classIMk1.html" title="Model stredni hodnoty vyvoje stavu pro k1.">IMk1</a> : <span class="keyword">public</span> <a class="code" href="classbdm_1_1diffbifn.html" title="Class representing a differentiable function of two variables .">diffbifn</a> { |
| 32 | <a name="l00016"></a>00016 <span class="keyword">protected</span>: |
| 33 | <a name="l00017"></a>00017 <span class="keywordtype">double</span> alp1, alp2; <span class="comment">// pomery odboceni...</span> |
| 34 | <a name="l00018"></a>00018 |
| 35 | <a name="l00019"></a>00019 <span class="keyword">public</span>: |
| 36 | <a name="l00021"></a><a class="code" href="classIMk1.html#c440a205745a09c2c903c4bdf7f5f9fc">00021</a> <a class="code" href="classIMk1.html#c440a205745a09c2c903c4bdf7f5f9fc" title="Constructor.">IMk1</a>() :<a class="code" href="classbdm_1_1diffbifn.html" title="Class representing a differentiable function of two variables .">diffbifn</a> (RVstav.count(), RVstav, RVut ) {}; |
| 37 | <a name="l00023"></a><a class="code" href="classIMk1.html#75f9d12716a3648a838477186b49aff1">00023</a> <span class="keywordtype">void</span> <a class="code" href="classIMk1.html#75f9d12716a3648a838477186b49aff1" title="set CONSTANT parameters">set_parameters</a> ( <span class="keywordtype">double</span> alp10, <span class="keywordtype">double</span> alp20) {alp1=alp10; alp2=alp20;} |
| 38 | <a name="l00024"></a>00024 |
| 39 | <a name="l00025"></a><a class="code" href="classIMk1.html#8957f00622352dcacd64518136c7da33">00025</a> vec <a class="code" href="classIMk1.html#8957f00622352dcacd64518136c7da33" title="Evaluates .">eval</a> ( <span class="keyword">const</span> vec &x0, <span class="keyword">const</span> vec &u0 ) { |
| 40 | <a name="l00026"></a>00026 <span class="comment">// napln stav nulami</span> |
| 41 | <a name="l00027"></a>00027 vec xk=zeros ( RVstav.<a class="code" href="classbdm_1_1RV.html#2174751a00ce19f941edd2c1a861be67" title="Return number of scalars in the RV.">count</a>() ); |
| 42 | <a name="l00028"></a>00028 |
| 43 | <a name="l00029"></a>00029 xk ( 0 ) = 0.2* x0(1) - 0.1* x0(2)+ u0(0); <span class="comment">// vycucane z prstu</span> |
| 44 | <a name="l00030"></a>00030 xk ( 1 ) = x0(0); |
| 45 | <a name="l00031"></a>00031 xk ( 2 ) = x0(1); |
| 46 | <a name="l00032"></a>00032 xk ( 3 ) = x0(2); |
| 47 | <a name="l00033"></a>00033 |
| 48 | <a name="l00034"></a>00034 <span class="keywordflow">return</span> xk; |
| 49 | <a name="l00035"></a>00035 } |
| 50 | <a name="l00036"></a>00036 |
| 51 | <a name="l00037"></a><a class="code" href="classIMk1.html#463177c0fdffdf4951761959160cc682">00037</a> <span class="keywordtype">void</span> <a class="code" href="classIMk1.html#463177c0fdffdf4951761959160cc682" title="Evaluates and writes result into A .">dfdx_cond</a> ( <span class="keyword">const</span> vec &x0, <span class="keyword">const</span> vec &u0, mat &A, <span class="keywordtype">bool</span> full=<span class="keyword">true</span> ) { |
| 52 | <a name="l00038"></a>00038 <span class="comment">// Vysledek se uklada do matice A</span> |
| 53 | <a name="l00039"></a>00039 |
| 54 | <a name="l00040"></a>00040 <span class="keywordflow">if</span> (full) { <span class="comment">// priznak full se nastavi na zacatku => je treba naplnit celou matici</span> |
| 55 | <a name="l00041"></a>00041 A = eye(RVstav.<a class="code" href="classbdm_1_1RV.html#2174751a00ce19f941edd2c1a861be67" title="Return number of scalars in the RV.">count</a>()); |
| 56 | <a name="l00042"></a>00042 A(0,1) = 0.2; |
| 57 | <a name="l00043"></a>00043 A(0,2) = -0.1; |
| 58 | <a name="l00044"></a>00044 } <span class="keywordflow">else</span> { |
| 59 | <a name="l00045"></a>00045 }; <span class="comment">// pokud neni priznak full, staci naplnit jen to co se zmenilo. V tomhle pripade se nemeni nic</span> |
| 60 | <a name="l00046"></a>00046 } |
64 | | <a name="l00051"></a><a class="code" href="classOMk1.html">00051</a> <span class="keyword">class </span><a class="code" href="classOMk1.html" title="model stredni hodnoty pozorovani pro k1">OMk1</a> : <span class="keyword">public</span> <a class="code" href="classdiffbifn.html" title="Class representing a differentiable function of two variables .">diffbifn</a> { |
65 | | <a name="l00052"></a>00052 <span class="keyword">public</span>: |
66 | | <a name="l00054"></a><a class="code" href="classOMk1.html#8e88ee95e5df98357069e7c3215cbdcd">00054</a> <a class="code" href="classOMk1.html#8e88ee95e5df98357069e7c3215cbdcd" title="Constructor.">OMk1</a>() :<a class="code" href="classdiffbifn.html" title="Class representing a differentiable function of two variables .">diffbifn</a> (RVpozor.count(), RVstav, RVut ) {}; |
67 | | <a name="l00055"></a>00055 <span class="comment">// Model pozorovani je trivialni jen se zkopiruji stavy</span> |
68 | | <a name="l00056"></a><a class="code" href="classOMk1.html#7c12aa1b56f298cc21b22e0dde84ef8f">00056</a> vec <a class="code" href="classOMk1.html#7c12aa1b56f298cc21b22e0dde84ef8f" title="Evaluates .">eval</a>(<span class="keyword">const</span> vec &x0, <span class="keyword">const</span> vec &u0 ){ |
69 | | <a name="l00057"></a>00057 vec dt(RVpozor.<a class="code" href="classRV.html#f5c7b8bd589eef09ccdf3329a0addea0" title="Return number of scalars in the RV.">count</a>()); |
70 | | <a name="l00058"></a>00058 <span class="comment">// Pozoruji pouze prvni dva stavy</span> |
71 | | <a name="l00059"></a>00059 dt(0) = x0(0); |
72 | | <a name="l00060"></a>00060 dt(1) = x0(1); |
73 | | <a name="l00061"></a>00061 <span class="keywordflow">return</span> dt; |
74 | | <a name="l00062"></a>00062 } |
75 | | <a name="l00063"></a>00063 <span class="comment">//</span> |
76 | | <a name="l00064"></a><a class="code" href="classOMk1.html#3a6ff61c818d25f95912351aac201cc7">00064</a> <span class="keywordtype">void</span> <a class="code" href="classOMk1.html#3a6ff61c818d25f95912351aac201cc7" title="Evaluates and writes result into A .">dfdx_cond</a> ( <span class="keyword">const</span> vec &x0, <span class="keyword">const</span> vec &u0, mat &A, <span class="keywordtype">bool</span> full=<span class="keyword">true</span> ) { |
77 | | <a name="l00065"></a>00065 <span class="comment">// Vysledek se uklada do matice A</span> |
78 | | <a name="l00066"></a>00066 |
79 | | <a name="l00067"></a>00067 <span class="keywordflow">if</span> (full) { <span class="comment">// priznak full se nastavi na zacatku => je treba naplnit celou matici</span> |
80 | | <a name="l00068"></a>00068 A = zeros(RVpozor.<a class="code" href="classRV.html#f5c7b8bd589eef09ccdf3329a0addea0" title="Return number of scalars in the RV.">count</a>(),RVstav.<a class="code" href="classRV.html#f5c7b8bd589eef09ccdf3329a0addea0" title="Return number of scalars in the RV.">count</a>()); |
81 | | <a name="l00069"></a>00069 A(0,0)=1.0; |
82 | | <a name="l00070"></a>00070 A(1,1)=1.0; |
83 | | <a name="l00071"></a>00071 } <span class="keywordflow">else</span> {}; <span class="comment">// pokud neni priznak full, staci naplnit jen to co se zmenilo. V tomhle pripade se nemeni nic</span> |
84 | | <a name="l00072"></a>00072 } |
85 | | <a name="l00073"></a>00073 }; |
86 | | <a name="l00074"></a>00074 |
87 | | <a name="l00075"></a>00075 <span class="preprocessor">#endif //MODEL_H</span> |
| 64 | <a name="l00050"></a>00050 }; |
| 65 | <a name="l00051"></a>00051 |
| 66 | <a name="l00053"></a><a class="code" href="classOMk1.html">00053</a> <span class="keyword">class </span><a class="code" href="classOMk1.html" title="model stredni hodnoty pozorovani pro k1">OMk1</a> : <span class="keyword">public</span> <a class="code" href="classbdm_1_1diffbifn.html" title="Class representing a differentiable function of two variables .">diffbifn</a> { |
| 67 | <a name="l00054"></a>00054 <span class="keyword">public</span>: |
| 68 | <a name="l00056"></a><a class="code" href="classOMk1.html#8e88ee95e5df98357069e7c3215cbdcd">00056</a> <a class="code" href="classOMk1.html#8e88ee95e5df98357069e7c3215cbdcd" title="Constructor.">OMk1</a>() :<a class="code" href="classbdm_1_1diffbifn.html" title="Class representing a differentiable function of two variables .">diffbifn</a> (RVpozor.count(), RVstav, RVut ) {}; |
| 69 | <a name="l00057"></a>00057 <span class="comment">// Model pozorovani je trivialni jen se zkopiruji stavy</span> |
| 70 | <a name="l00058"></a><a class="code" href="classOMk1.html#7c12aa1b56f298cc21b22e0dde84ef8f">00058</a> vec <a class="code" href="classOMk1.html#7c12aa1b56f298cc21b22e0dde84ef8f" title="Evaluates .">eval</a>(<span class="keyword">const</span> vec &x0, <span class="keyword">const</span> vec &u0 ){ |
| 71 | <a name="l00059"></a>00059 vec dt(RVpozor.<a class="code" href="classbdm_1_1RV.html#2174751a00ce19f941edd2c1a861be67" title="Return number of scalars in the RV.">count</a>()); |
| 72 | <a name="l00060"></a>00060 <span class="comment">// Pozoruji pouze prvni dva stavy</span> |
| 73 | <a name="l00061"></a>00061 dt(0) = x0(0); |
| 74 | <a name="l00062"></a>00062 dt(1) = x0(1); |
| 75 | <a name="l00063"></a>00063 <span class="keywordflow">return</span> dt; |
| 76 | <a name="l00064"></a>00064 } |
| 77 | <a name="l00065"></a>00065 <span class="comment">//</span> |
| 78 | <a name="l00066"></a><a class="code" href="classOMk1.html#3a6ff61c818d25f95912351aac201cc7">00066</a> <span class="keywordtype">void</span> <a class="code" href="classOMk1.html#3a6ff61c818d25f95912351aac201cc7" title="Evaluates and writes result into A .">dfdx_cond</a> ( <span class="keyword">const</span> vec &x0, <span class="keyword">const</span> vec &u0, mat &A, <span class="keywordtype">bool</span> full=<span class="keyword">true</span> ) { |
| 79 | <a name="l00067"></a>00067 <span class="comment">// Vysledek se uklada do matice A</span> |
| 80 | <a name="l00068"></a>00068 |
| 81 | <a name="l00069"></a>00069 <span class="keywordflow">if</span> (full) { <span class="comment">// priznak full se nastavi na zacatku => je treba naplnit celou matici</span> |
| 82 | <a name="l00070"></a>00070 A = zeros(RVpozor.<a class="code" href="classbdm_1_1RV.html#2174751a00ce19f941edd2c1a861be67" title="Return number of scalars in the RV.">count</a>(),RVstav.<a class="code" href="classbdm_1_1RV.html#2174751a00ce19f941edd2c1a861be67" title="Return number of scalars in the RV.">count</a>()); |
| 83 | <a name="l00071"></a>00071 A(0,0)=1.0; |
| 84 | <a name="l00072"></a>00072 A(1,1)=1.0; |
| 85 | <a name="l00073"></a>00073 } <span class="keywordflow">else</span> {}; <span class="comment">// pokud neni priznak full, staci naplnit jen to co se zmenilo. V tomhle pripade se nemeni nic</span> |
| 86 | <a name="l00074"></a>00074 } |
| 87 | <a name="l00075"></a>00075 }; |
| 88 | <a name="l00076"></a>00076 |
| 89 | <a name="l00077"></a>00077 <span class="preprocessor">#endif //MODEL_H</span> |