Guest User

Untitled

a guest
Jul 17th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. int CInvariant::linearkombination(CMatrix& Q_plus, CMatrix& Q_minus, int MATRIX,
  2. int plus_pos, int minus_pos,
  3. CMatrix zweidim_loe)
  4. {
  5. switch(MATRIX)
  6. {
  7. case Q_PLUS :
  8. {
  9. // 1. neue Lösungen sollen in der Q-Matrix hinter den bisherigen Lösungen
  10. // eingefügt werden . Als Anfangswert wird die erste der neuen Spalten
  11. // eingetragen
  12. UINT sp_neu = Q_plus.AnzSpalten;
  13.  
  14. // 2. für die neuen Lösungen werden nun Spalten an die Q-Matrix angefügt;
  15. // es kommen so viele Lösungen hinzu, wie Lösungsvektoren in der
  16. // Gewichtungsmatrix zweidim_loe stehen:
  17. Q_plus.Resize(Q_plus.AnzZeilen, Q_plus.AnzSpalten + zweidim_loe.AnzSpalten);
  18.  
  19. // 3. Linearkombination durchführen
  20. for(UINT sp=0; sp<zweidim_loe.AnzSpalten; sp++)
  21. {
  22. for(UINT z=0; z<Q_plus.AnzZeilen; z++)
  23. {
  24. Q_plus[z][sp_neu] = zweidim_loe[0][sp] * Q_plus[z][plus_pos] +
  25. zweidim_loe[1][sp] * Q_minus[z][minus_pos];
  26.  
  27. // Plausibilitätstest
  28. ASSERT (Q_plus[z][sp_neu] >= 0);
  29. };
  30. sp_neu++;
  31. };
  32. };
  33. break;
  34.  
  35. case Q_MINUS:
  36. {
  37. UINT sp_neu = Q_minus.AnzSpalten;
  38. Q_minus.Resize(Q_minus.AnzZeilen,
  39. Q_minus.AnzSpalten + zweidim_loe.AnzSpalten);
  40.  
  41. for(UINT sp=0; sp<zweidim_loe.AnzSpalten; sp++)
  42. {
  43. for(UINT z=0; z<Q_minus.AnzZeilen; z++)
  44. {
  45. Q_minus[z][sp_neu] = zweidim_loe[0][sp] * Q_plus[z][plus_pos] +
  46. zweidim_loe[1][sp] * Q_minus[z][minus_pos];
  47.  
  48. // Plausibilitätstests
  49. if(z != Q_minus.AnzZeilen - 1)
  50. {
  51. ASSERT (Q_minus[z][sp_neu] >= 0);
  52. }
  53. else
  54. {
  55. ASSERT (Q_minus[z][sp_neu] <= 0);
  56. };
  57. };
  58. sp_neu++;
  59. };
  60. };
  61. break;
  62. };
  63.  
  64. return 0;
  65. };
Add Comment
Please, Sign In to add comment