упрощение

Упростите представление неопределенного объекта

Синтаксис

B = simplify(A)
B = simplify(A,'full')
B = simplify(A,'basic')
B = simplify(A,'class')

Описание

B = simplify(A) выполняет подобные снижению сложности модели методы, чтобы обнаружить и устранить избыточные копии неопределенных элементов. В зависимости от результата класс B может быть ниже, чем A. Свойство AutoSimplify каждого неопределенного элемента в A управляет тем, какие методы сокращения используются. После сокращения любой неопределенный элемент, который на самом деле не влияет на результат, удален из представления.

B = simplify(A,'full') переопределения свойство AutoSimplify всего неопределенного элемента и использование методы сокращения 'full'.

B = simplify(A,'basic') переопределения свойство AutoSimplify всего неопределенного элемента и uses 'basic' методы сокращения.

B = simplify(A,'class') не выполняет сокращение. Однако любые неопределенные элементы в A с нулевыми случаями устраняются, и класс B может быть ниже, чем класс A.

Примеры

Создайте простой umat с одним неопределенным действительным параметром. Выберите определенные элементы, обратите внимание, что результат остается в классе umat. Упростите те те же элементы и отметьте тот класс изменения.

p1 = ureal('p1',3,'Range',[2 5]); 
L = [2 p1]; 
L(1) 
UMAT: 1 Rows, 1 Columns 
L(2) 
UMAT: 1 Rows, 1 Columns 
  p1: real, nominal = 3, range = [2  5], 1 occurrence 
simplify(L(1)) 
ans = 
     2 
simplify(L(2)) 
Uncertain Real Parameter: Name p1, NominalValue 3, Range [2  5] 

Создайте четыре неопределенных действительных параметра, со значением по умолчанию AutoSimplify('basic'), и задайте высокого уровня полином [1].

m = ureal('m',125000,'Range',[100000 150000]); 
xcg = ureal('xcg',.23,'Range',[.15 .31]); 
zcg = ureal('zcg',.105,'Range',[0 .21]); 
va = ureal('va',80,'Range',[70 90]); 
cw = simplify(m/(va*va)*va,'full') 
UMAT: 1 Rows, 1 Columns 
   m: real, nominal = 1.25e+005, range = [100000  150000],
1 occurrence 
  va: real, nominal = 80, range = [70  90], 1 occurrence               
cw = m/va; 
fac2 = .16726*xcg*cw*cw*zcg - .17230*xcg*xcg*cw ... 
      -3.9*xcg*cw*zcg - .28*xcg*xcg*cw*cw*zcg ... 
      -.07*xcg*xcg*zcg + .29*xcg*xcg*cw*zcg ... 
      + 4.9*xcg*cw - 2.7*xcg*cw*cw ... 
      +.58*cw*cw - 0.25*xcg*xcg - 1.34*cw ... 
      +100.1*xcg -14.1*zcg - 1.91*cw*cw*zcg ... 
      +1.12*xcg*zcg + 24.6*cw*zcg ... 
      +.45*xcg*xcg*cw*cw - 46.85 
UMAT: 1 Rows, 1 Columns 
    m: real, nominal = 1.25e+005, range = [100000  150000],
18 occurrences 
   va: real, nominal = 80, range = [70  90], 8 occurrences                
  xcg: real, nominal = 0.23, range = [0.15  0.31], 18 occurrences         
  zcg: real, nominal = 0.105, range = [0  0.21], 1 occurrence 

Результатом старшего полинома является неэффективное представление, включающее 18 копий m, 8 копий va, 18 копий xcg и 1 копию zcg. Упростите выражение, с помощью алгоритма упрощения 'full'

fac2s = simplify(fac2,'full') 
UMAT: 1 Rows, 1 Columns 
    m: real, nominal = 1.25e+005, range = [100000  150000],
4 occurrences 
   va: real, nominal = 80, range = [70  90], 4 occurrences               
  xcg: real, nominal = 0.23, range = [0.15  0.31], 2 occurrences         
  zcg: real, nominal = 0.105, range = [0  0.21], 1 occurrence 

который приводит к намного более экономичному представлению.

Также измените свойство AutoSimplify каждого параметра к 'full' прежде, чем сформировать полином.

m.AutoSimplify = 'full'; 
xcg.AutoSimplify = 'full'; 
zcg.AutoSimplify = 'full'; 
va.AutoSimplify = 'full'; 

Можно сформировать полином, который сразу дает представление низкоуровневое.

cw = m/va; 
fac2f = .16726*xcg*cw*cw*zcg - .17230*xcg*xcg*cw ... 
      -3.9*xcg*cw*zcg - .28*xcg*xcg*cw*cw*zcg ... 
      -.07*xcg*xcg*zcg + .29*xcg*xcg*cw*zcg ... 
      + 4.9*xcg*cw - 2.7*xcg*cw*cw ... 
      +.58*cw*cw - 0.25*xcg*xcg - 1.34*cw ... 
      +100.1*xcg -14.1*zcg - 1.91*cw*cw*zcg ... 
      +1.12*xcg*zcg + 24.6*cw*zcg ... 
      +.45*xcg*xcg*cw*cw - 46.85 
UMAT: 1 Rows, 1 Columns 
    m: real, nominal = 1.25e+005, range = [100000  150000],
4 occurrences 
   va: real, nominal = 80, range = [70  90], 4 occurrences               
  xcg: real, nominal = 0.23, range = [0.15  0.31], 2 occurrences         
  zcg: real, nominal = 0.105, range = [0  0.21], 1 occurrence 

Создайте два действительных параметра, da и dx, и 2 3 матрица, ABmat, вовлекая многочленные выражения в два действительных параметра.

da = ureal('da',0,'Range',[-1 1]); 
dx = ureal('dx',0,'Range',[-1 1]); 
a11 = -.32 + da*(.8089 + da*(-.987 + 3.39*da)) + .15*dx; 
a12 = .934 + da*(.0474 - .302*da); 
a21 = -1.15 + da*(4.39 + da*(21.97 - 561*da*da)) ... 
     + dx*(9.65 - da*(55.7 + da*177)); 
a22 = -.66 + da*(1.2 - da*2.27) + dx*(2.66 - 5.1*da); 
b1 = -0.00071 + da*(0.00175 - da*.00308) + .0011*dx; 
b2 = -0.031 + da*(.078 + da*(-.464 + 1.37*da)) + .0072*dx; 
ABmat = [a11 a12 b1;a21 a22 b2] 
UMAT: 2 Rows, 3 Columns 
  da: real, nominal = 0, range = [-1  1], 19 occurrences 
  dx: real, nominal = 0, range = [-1  1], 2 occurrences 

Используйте упрощение 'full', чтобы уменьшать сложность описания.

ABmatsimp = simplify(ABmat,'full') 
UMAT: 2 Rows, 3 Columns 
  da: real, nominal = 0, range = [-1  1], 7 occurrences 
  dx: real, nominal = 0, range = [-1  1], 2 occurrences 

Также можно установить свойство AutoSimplify параметра на 'full'.

da.AutoSimplify = 'full'; 
dx.AutoSimplify = 'full'; 

Теперь можно восстановить матрицу

a11 = -.32 + da*(.8089 + da*(-.987 + 3.39*da)) + .15*dx; 
a12 = .934 + da*(.0474 - .302*da); 
a21 = -1.15 + da*(4.39 + da*(21.97 - 561*da*da)) ... 
     + dx*(9.65 - da*(55.7 + da*177)); 
a22 = -.66 + da*(1.2 - da*2.27) + dx*(2.66 - 5.1*da); 
b1 = -0.00071 + da*(0.00175 - da*.00308) + .0011*dx; 
b2 = -0.031 + da*(.078 + da*(-.464 + 1.37*da)) + .0072*dx; 
ABmatFull = [a11 a12 b1;a21 a22 b2] 
UMAT: 2 Rows, 3 Columns 
  da: real, nominal = 0, range = [-1  1], 7 occurrences 
  dx: real, nominal = 0, range = [-1  1], 2 occurrences 

Ограничения

Многомерное снижение сложности модели и теория реализации являются только частично полными теориями. Эвристика, используемая simplify, является этим - эвристика. Порядок, в котором выражения, включающие неопределенные элементы, создаются, например, распределяющий на сложении и умножении, может влиять на детали представления (т.е. количество случаев ureal в неопределенной матрице). Возможно, что наивные методы simplify не могут полностью разрешить эти различия, таким образом, можно быть обеспечен, чтобы работать с “неминимальными” представлениями неопределенных систем.

Алгоритмы

simplify использует эвристику наряду с одномерными алгоритмами снижения сложности модели, чтобы частично уменьшать размерность представления неопределенной матрицы или системы.

Ссылки

[1] Varga, А. и Г. Лоой, “Символьные и числовые программные инструменты для основанного на LFT моделирования неуверенности низкоуровневого”, IEEE Международный Симпозиум по Компьютеру помог Проекту Системы управления, 1999, стр 5-11.

[2] Белькастро, C.M., К.Б. Лим и Э.А. Морелли, “Компьютер помог моделированию неуверенности для нелинейной зависимой параметром системной Второй части: пример F-16”, IEEE Международный Симпозиум по Компьютеру помог Проекту Системы управления, 1999, стр 17-23.

Смотрите также

| | | |

Представлено до R2006a