{"id":336,"date":"2016-07-19T08:58:26","date_gmt":"2016-07-19T11:58:26","guid":{"rendered":"http:\/\/apcmode.com\/?page_id=336"},"modified":"2021-09-08T21:12:58","modified_gmt":"2021-09-09T00:12:58","slug":"metodos-computacionais","status":"publish","type":"page","link":"https:\/\/apcmode.com\/?page_id=336","title":{"rendered":"M\u00e9todo computacional"},"content":{"rendered":"<table style=\"width: 100%;\" border=\"1\" cellpadding=\"5\">\n<tbody>\n<tr>\n<td><a href=\"https:\/\/apcmode.com\/?page_id=334\">Retorna para t\u00f3pico anterior<\/a><\/td>\n<td><a href=\"https:\/\/apcmode.com\/?page_id=338\">Avan\u00e7a para pr\u00f3ximo t\u00f3pico<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\n\n<p>Considere a obten\u00e7\u00e3o de um modelo matem\u00e1tico de um processo G(s), por meio de um teste ao degrau em malha aberta. O primeiro passo \u00e9 determinar uma estrutura para o modelo, dos quais os mais usados s\u00e3o: primeira ordem com tempo morto e segunda ordem com tempo mordo, conforme mostrado abaixo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"965\" height=\"149\" src=\"https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp1.png\" alt=\"\" class=\"wp-image-1393\" srcset=\"https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp1.png 965w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp1-300x46.png 300w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp1-768x119.png 768w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp1-100x15.png 100w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp1-150x23.png 150w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp1-200x31.png 200w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp1-450x69.png 450w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp1-600x93.png 600w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp1-900x139.png 900w\" sizes=\"auto, (max-width: 965px) 100vw, 965px\" \/><\/figure>\n\n\n\n<p>O pr\u00f3ximo passo \u00e9 fazer a parametriza\u00e7\u00e3o do modelo, ou seja, obter os valores de <em>K<\/em>, <em>\u03b8<\/em> e <em>\u03c4<\/em> para o modelo de primeira ordem e os valores <em>K<\/em>, <em>\u03b8<\/em>, <em>\u03c4<sub>1<\/sub><\/em> e <em>\u03c4<sub>2<\/sub><\/em> no modelo de segunda ordem. Um crit\u00e9rio comum \u00e9 escolher os par\u00e2metros que resultem na curva que melhor se ajusta aos dados reais. Por exemplo, a figura abaixo mostra a resposta de um teste ao degrau realizado num processo e as curvas representando dois modelos propostos.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"493\" height=\"423\" src=\"https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp2.png\" alt=\"\" class=\"wp-image-1394\" srcset=\"https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp2.png 493w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp2-300x257.png 300w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp2-100x86.png 100w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp2-150x129.png 150w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp2-200x172.png 200w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp2-450x386.png 450w\" sizes=\"auto, (max-width: 493px) 100vw, 493px\" \/><\/figure>\n\n\n\n<p>Qual das curvas se ajusta melhor, o do modelo 1 ou a o modelo 2? Uma forma de responder essa quest\u00e3o \u00e9 somando, para cada instante de tempo, o erro quadr\u00e1tico entre os dados reais e os dados fornecidos pelo modelo, utilizando a express\u00e3o:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"747\" height=\"56\" src=\"https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp3.png\" alt=\"\" class=\"wp-image-1395\" srcset=\"https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp3.png 747w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp3-300x22.png 300w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp3-100x7.png 100w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp3-150x11.png 150w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp3-200x15.png 200w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp3-450x34.png 450w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp3-600x45.png 600w\" sizes=\"auto, (max-width: 747px) 100vw, 747px\" \/><\/figure>\n\n\n\n<p>O melhor modelo \u00e9 aquele que possui o menor erro quadr\u00e1tico. Este artigo apresenta um algoritmo em Matlab\u00ae capaz de fornecer os par\u00e2metros de um modelo que resultam no menor erro quadr\u00e1tico poss\u00edvel.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Algoritmo MATLAB para modelo de primeira ordem<\/h2>\n\n\n\n<p>O algoritmo mostrado abaixo permite obter os par\u00e2metros \u00f3timos para um modelo de primeira ordem. Os dados s\u00e3o inicialmente carregados em dois vetores: \u201cpv\u201d contem os dados da vari\u00e1vel controlada e \u201ct\u201d o vetor tempo. A vari\u00e1vel delta_MV deve ser inicializado com a amplitude do degrau na MV. Outra considera\u00e7\u00e3o importante \u00e9 eliminar no arquivo de dados os valores antes do in\u00edcio do testes (manter apenas os dados a partir do in\u00edcio do degrau). Antes de chamar a fun\u00e7\u00e3o de otimiza\u00e7\u00e3o \u201c<em>pminsearch<\/em>\u201d, deve-se inicializar o vetor de par\u00e2metros p0 com valores razo\u00e1veis para o ganho, constante de tempo e tempo morto. Isso garante a converg\u00eancia da fun\u00e7\u00e3o de busca. <br><\/p>\n\n\n\n<p><span class=\"has-inline-color has-button-color-color\">%normaliza\u00e7\u00e3o da PV. Dividindo-se a PV por delta_MV, temos a resposta ao degrau unit\u00e1rio<br>pv = pv-pv(1);<br>pv = pv\/delta_mv;<br>%vetor com valores iniciais para o modelo<br>%p0 = [ganho tal tempo_morto]<br>p0 = [1 5 2]; %vetor com valores de chute inicial para o modelo<br>p = fminsearch(&#8216;erro_med1&#8217;,p0); %chamada da fun\u00e7\u00e3o de otimiza\u00e7\u00e3o<\/span><\/p>\n\n\n\n<p>Repare que o primeiro par\u00e2metro da fun\u00e7\u00e3o de otimiza\u00e7\u00e3o \u201cpminsearch\u201d \u00e9 uma fun\u00e7\u00e3o que retorna o valor do erro quadr\u00e1tico a partir dos par\u00e2metros do modelo (<em>erro_med1<\/em>). Seu c\u00f3digo \u00e9 mostrado logo a seguir.<\/p>\n\n\n\n<p><span class=\"has-inline-color has-button-color-color\">function V=erro_med1(p)<br>% obtem resposta do modelo &#8220;y_mod&#8221;<br>Kp = p(1);<br>tal = p(2);<br>atraso = p(3);<br>G = tf(Kp,[tal 1]);<br>G.inputdelay = max(atraso,0);<br>pv_mod=lsim(G,mv,t);<br>%calcula erro m\u00e9dio quadr\u00e1tico<br>erro = pv-pv_mod;<br>V = mean(erro.^2);<\/span><\/p>\n\n\n\n<p>A figura a seguir mostra um exemplo de utiliza\u00e7\u00e3o destas rotinas. O modelo matem\u00e1tico obtido cont\u00e9m os melhores par\u00e2metros poss\u00edveis para seu ajuste com os dados reais.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"738\" height=\"356\" src=\"https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp4.png\" alt=\"\" class=\"wp-image-1397\" srcset=\"https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp4.png 738w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp4-300x145.png 300w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp4-100x48.png 100w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp4-150x72.png 150w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp4-200x96.png 200w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp4-450x217.png 450w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp4-600x289.png 600w\" sizes=\"auto, (max-width: 738px) 100vw, 738px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Algoritmo MATLAB para modelo de segunda ordem<\/h2>\n\n\n\n<p>Este algoritmo \u00e9 similar ao anterior, por\u00e9m permite obter os par\u00e2metros \u00f3timos para um modelo de segunda ordem com tempo morto. Portanto seu vetor de par\u00e2metros p0 cont\u00e9m 4 elementos [ganho tal1 tal2 tempo_morto]. Da mesma forma que o algoritmo anterior, os dados devem ser salvos em vetores \u201cpv\u201d e \u201ct\u201d e p0 deve ser iniciado com valores pr\u00f3ximo aos reais.<\/p>\n\n\n\n<p><span class=\"has-inline-color has-button-color-color\">%normaliza\u00e7\u00e3o da PV. Dividindo-se a PV por delta_MV, temos a resposta ao degrau unit\u00e1rio<br>pv = pv-pv(1);<br>pv = pv\/delta_mv;<br>%vetor com valores de chute inicial para o modelo<br>%p0 = [ganho tal1 tal2, tempo_morto]<br>p0 = [1 35 35 20];<br>p = fminsearch(&#8216;erro_med2&#8217;,p0);%chamada da fun\u00e7\u00e3o de otimiza\u00e7\u00e3o<\/span><\/p>\n\n\n\n<p>A fun\u00e7\u00e3o \u201cerro_med2\u201d utilizada como par\u00e2metro em fminsearch \u00e9 mostrada a seguir:<\/p>\n\n\n\n<p><span class=\"has-inline-color has-button-color-color\">function V=erro_med2(p)<br>% obtem resposta do modelo &#8220;y_mod&#8221;<br>Kp = p(1);<br>tal1 = p(2);<br>tal2 = p(3);<br>atraso = p(4);<br>G = tf(Kp,[tal1*tal2 tal1+tal2 1]);<br>G.inputdelay = max(atraso,0);<br>pv_mod=lsim(G,mv,t);<br>%calcula erro m\u00e9dio quadr\u00e1tico<br>erro = pv-pv_mod;<br>V = mean(erro.^2);<\/span><\/p>\n\n\n\n<p>A figura a seguir mostra um exemplo de utiliza\u00e7\u00e3o destas rotinas. O modelo matem\u00e1tico obtido, que \u00e9 de segunda ordem, cont\u00e9m os melhores par\u00e2metros poss\u00edveis para seu ajuste com os dados reais.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"755\" height=\"369\" src=\"https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp5.png\" alt=\"\" class=\"wp-image-1398\" srcset=\"https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp5.png 755w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp5-300x147.png 300w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp5-100x49.png 100w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp5-150x73.png 150w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp5-200x98.png 200w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp5-450x220.png 450w, https:\/\/apcmode.com\/wp-content\/uploads\/2021\/09\/metcomp5-600x293.png 600w\" sizes=\"auto, (max-width: 755px) 100vw, 755px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Retorna para t\u00f3pico anterior Avan\u00e7a para pr\u00f3ximo t\u00f3pico Considere a obten\u00e7\u00e3o de um modelo matem\u00e1tico de um processo G(s), por meio de um teste ao degrau em malha aberta. O primeiro passo \u00e9 determinar uma estrutura para o modelo, dos &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"more-link\" href=\"https:\/\/apcmode.com\/?page_id=336\"> <span class=\"screen-reader-text\">M\u00e9todo computacional<\/span> Read More &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":328,"menu_order":34,"comment_status":"closed","ping_status":"closed","template":"full-width-page.php","meta":{"footnotes":""},"class_list":["post-336","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/apcmode.com\/index.php?rest_route=\/wp\/v2\/pages\/336","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/apcmode.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/apcmode.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/apcmode.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/apcmode.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=336"}],"version-history":[{"count":4,"href":"https:\/\/apcmode.com\/index.php?rest_route=\/wp\/v2\/pages\/336\/revisions"}],"predecessor-version":[{"id":1400,"href":"https:\/\/apcmode.com\/index.php?rest_route=\/wp\/v2\/pages\/336\/revisions\/1400"}],"up":[{"embeddable":true,"href":"https:\/\/apcmode.com\/index.php?rest_route=\/wp\/v2\/pages\/328"}],"wp:attachment":[{"href":"https:\/\/apcmode.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=336"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}