Exercícios Resolvidos de Variáveis locais e variáveis globais

Ver Teoria

Enunciado

Uma grande área da matemática denominada de cálculo numérico se esforça cada vez mais para a obtenção de equações simplificadas que melhor aproxima o cálculo de derivadas e integrais.

Um engenheiro estava com dúvida para a estimativa do erro da aproximação de uma certa técnica denominada técnica do trapézio que é dada por:

∫ a b f x d x = b - a 2 * ( f a + f b )

Para isso ele queria utilizar a regra do trapézio para calcular a área abaixo da seguinte curva:

f ( x ) = x 2 + 3 * x + 2

Cuja a integral analítica corresponde a

F x = x 3 3 + 3 2 * x 2 + 2 * x

E a Área analítica é dada por A = F ( b ) - F ( a )

Passo 1

Em essência questão ela pede para montar um programa que calcule a área abaixo da seguinte curva:

y = x 2 + 3 * x + 2

Tanto pelo método aproximado do trapézio quanto pelo método analítico. Para o método analítico precisamos avaliar a seguinte curva entre os intervalos a e b.

Logo, precisaremos criar duas funções: uma para calcular a área analítica e outra para criar a área aproximada pela regra do trapézio e assim se possa comparar o erro entre elas.

Como nos queremos a diferença entre as áreas, ou seja o erro, então a variável da function que precisa ser armazenada na workpsace é a variável erro.

Logo, definiremos ela como uma variável global.

E lembrando novamente, a function no Matlab ela é o último componente do código, ou seja, você só a escreve no finalzinho, beleza?

Passo 2

Uma vez que a ideia da questão está esclarecida precisamos criar o código e como em qualquer linguagem de programação iremos começar o código com a entrada de dados:

g l o b a l   E r r o

  d i s p ( ' d i g i t e   u m   b   m a i o r   d o   q u e   a ' )

b = i n p u t ( ' d i g i t e   o   l i m i t e   s u p e r i o r   b = ' ) ;

a = i n p u t ( ' d i g i t e   o   l i m i t e   i n f e r i o r   a = ' ) ;

Após inserir a entrada de dados iremos programar a saída de dados:

z = a r e a ( a , b ) ;

f p r i n t f ( ' A   a r e a   d o   m e t o d o   a n a l i t i c o   e q u i v a l e   a   % f ' , z ( 1 ) )

f p r i n t f ( ' \ n A   a r e a   d o   m e t o d o   d o   t r a p e z i o   e q u i v a l e   a   % f ' , z ( 2 ) )

f p r i n t f ( ' \ n   o   e r r o   e n t r e   o s   m e t o d o s   é   a p r o x i m a d a m e n t e   % f ' , E r r o )

uma vez que programamos a entrada de dados e a saída de dados, iremos programar a função do problema:

f u n c t i o n   y = a r e a ( a , b )

g l o b a l   y   E r r o

y ( 1 ) = ( b ^ 3 ) / 3 + 3 * b ^ 2 / 2 + 2 * b + a ^ 3 / 3 + 3 * a ^ 2 / 2 + 2 * a ;

y ( 2 ) = ( b - a ) / 2 * ( a ^ 2 + 3 * a + 2 + b ^ 2 + 3 * b + 2 ) ;

E r r o = y ( 1 ) - y ( 2 ) ;

e n d

Passo 3

Uma vez implementando a rotina acima no Matlab e executando poderemos obter respostas do tipo:

Resposta

Ei, a resposta está no passo a passo :)