Ir ao conteúdo
  • Cadastre-se

MatLab Output argument "maxA" (and maybe others) not assigned during call to...


Ir à solução Resolvido por isrnick,

Posts recomendados

Bom dia galera fiz o programa abaixo que calcula o maior autovalor de uma matriz, ele funcionou bem para o exemplo que eu tinha aqui, matriz A=[3 0 1;2 2 2;4 2 5], porém quando tentei usar outra matriz recebi o seguinte erro:

 

Error in autov (line 4)
[m,n]=size(A);
 
Output argument "maxA" (and maybe others) not assigned during call to
"C:\Users\Mateus\Dropbox\Mestrado\Métodos numéricos\listas\Lista 2\menu\autov.m>autov".
 
se alguem puder me ajudar agradeço. Sei que meu programa é meio complicado, mas talvez alguém possa me ajudar apenas com o erro.
    function [ maxA,iter ] = autov( A,toler,itermax )%entrada: matriz, precisão, usada no exemplo, 0.001, e número máximo de iterações%Saída: o maior autovalor e o numero de iterações[m,n]=size(A);y0=ones(n,1);erro=toler+1;iter=0;z1=zeros(n,1);av=z1;av0=av;z1=A*y0;%calcula o z inicialvetor_E=zeros(n,1);%ITERAÇÕES. ATÉ ENCONTRAR A PRECISÃO DESEJADAwhile erro>=toler && itermax>iter     iter=iter+1;    alpha=0;    for i=1:1:n %encontra o maior elemento de Z1 em módulo e armazena em alpha        if abs(z1(i,1))>alpha        alpha=abs(z1(i,1));        end    end    y1=(1/alpha)*z1; %CALCULA O Y INICIAL        z1=A*y1; %CALCULA O NOVO VALOR DE Z(K+1)           for i=1:1:n %encontra o vetor erro    vetor_E(i,1)=abs(y1(i,1)-y0(i,1))/abs(y1(i,1));    end        menor=0;    maior=0;     for i=1:1:n %encontra o maior e o menor elementos do vetor erro em módulo para o cálculo da precisão        if abs(vetor_E(i,1))>maior        maior=abs(vetor_E(i,1));        end        if abs(vetor_E(i,1))<menor        menor=abs(vetor_E(i,1));        end    end        erro=maior-menor;%calcula a precisão para verificar se chegou a esperada    av0=(z1./y1);%CARREGA O VETOR DE AUTOVALORES%VERIFICA QUAL VALOR TEVE MENOR VARIAÇÃO    menor=0;     for i=1:1:n %encontra o maior e o menor elementos do vetor erro em módulo para o cálculo da precisão    menor=abs(av(i,1));        if abs(av0(i,1)-av(i,1))<menor        maxA=abs(av(i,1));        end    end      y0=y1; %CARREGA Y0 COM O VALOR DE Y1 PARA A ITERAÇÃO SEGUINTEav=av0; %endy1end

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...