Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
clc BG=[0 0 0] BG2=[1 1 1] fonte=16 tx_ali_esq=0.22 lb_ali_esq=0.01 lb_tam=0.2 lb_h=0.053 global g_resin global g_int global b_graf b_graf=0 g_int=[] g_resin=[] // This GUI file is generated by guibuilder version 3.0 ////////// f=figure('figure_position',[10,50],'figure_size',[1000,800],'figure_name','Janela gráfica número %d','BackgroundColor',BG) ////////// delmenu(f.figure_id,gettext('File')) delmenu(f.figure_id,gettext('?')) delmenu(f.figure_id,gettext('Tools')) delmenu(f.figure_id,gettext('Edit')) toolbar(f.figure_id,'off') handles.dummy = 0; ////////// //Botões de Inf ////////// handles.bt_info1=uicontrol(f,'unit','normalized','FontSize',[11],'Position',[0.725,0.895-0.015,0.035,0.035],'String','i','Style','pushbutton','Value',[0],'Visible','on','Tag','bt_teste','Callback','bt_info1_callback()') handles.bt_info2=uicontrol(f,'unit','normalized','FontSize',[11],'Position',[0.425,0.797,0.035,0.035],'String','i','Style','pushbutton','Value',[0],'Visible','on','Tag','bt_teste','Callback','bt_info2_callback()') handles.bt_info3=uicontrol(f,'unit','normalized','FontSize',[11],'Position',[0.325,0.697,0.035,0.035],'String','i','Style','pushbutton','Value',[0],'Visible','on','Tag','bt_teste','Callback','bt_info3_callback()') handles.bt_info4=uicontrol(f,'unit','normalized','FontSize',[11],'Position',[0.325,0.597,0.035,0.035],'String','i','Style','pushbutton','Value',[0],'Visible','on','Tag','bt_teste','Callback','bt_info4_callback()') ////////// //Botões de Ação ///////// handles.bt_calculo=uicontrol(f,'unit','normalized','FontSize',[12],'Position',[0.07,0.2,0.15,0.08],'String','Calcular','Style','pushbutton','Value',[0],'Visible','on','Callback','bt_calculo_callback(handles)') ///////// //Textos ///////// handles.label=uicontrol(f,'unit','normalized','Position',[0,0.941,1,0.06],'String','MÉTODO DE GAUSS-JACOBI - RESOLUÇÃO DE SISTEMAS LINEARES','Style','text','Visible','on','FontSize',[fonte],'BackgroundColor',[1 1 1],'FontWeight','bold','HorizontalAlignment','center') handles.label=uicontrol(f,'unit','normalized','Position',[lb_ali_esq,0.8864-0.015,lb_tam,lb_h],'String','Coeficientes:','Style','text','Visible','on','FontSize',[fonte],'BackgroundColor',BG2,'FontWeight','bold') handles.label=uicontrol(f,'unit','normalized','Position',[lb_ali_esq,0.6871,lb_tam,lb_h],'String','Tolerância:','Style','text','Visible','on','FontSize',[fonte],'BackgroundColor',BG2,'FontWeight','bold') handles.label=uicontrol(f,'unit','normalized','Position',[lb_ali_esq,0.5875,lb_tam,lb_h],'String','N.Max:','Style','text','Visible','on','FontSize',[fonte],'BackgroundColor',BG2,'FontWeight','bold') handles.label=uicontrol(f,'unit','normalized','Position',[lb_ali_esq,0.7872,lb_tam,lb_h],'String','Termos Independentes:','Style','text','Visible','on','FontSize',[fonte],'BackgroundColor',BG2,'FontWeight','bold') handles.label=uicontrol(f,'unit','normalized','Position',[lb_ali_esq,0.5,lb_tam,0.05864],'String','Resultados:','Style','text','Visible','on','FontSize',[fonte],'BackgroundColor',BG2,'FontWeight','bold') handles.label=uicontrol(f,'unit','normalized','Position',[lb_ali_esq,0.41,lb_tam,0.05864],'String','Nº de Iterações:','Style','text','Visible','on','FontSize',[fonte],'BackgroundColor',BG2,'FontWeight','bold') ///////// //Caixas de saida /////////// handles.resultados=uicontrol(f,'unit','normalized','Position',[tx_ali_esq,0.5,0.2,0.06],'Style','text','Visible','on','FontSize',[fonte]) handles.n=uicontrol(f,'unit','normalized','Position',[tx_ali_esq,0.41,0.2,0.06],'Style','text','Visible','on','FontSize',[fonte]) //////// //Caixas de entrada //////// handles.tx_results=uicontrol(f,'unit','normalized','Position',[tx_ali_esq,0.786,0.2,0.06],'String','[7;-8;6]','Style','edit','Visible','on','FontSize',[fonte]) handles.tx_matriz=uicontrol(f,'unit','normalized','Position',[tx_ali_esq,0.886-0.018,0.5,0.06],'String','[10 2 1;1 5 1; 2 3 10]','Style','edit','Visible','on','FontSize',[fonte]) handles.tx_tol=uicontrol(f,'unit','normalized','Position',[tx_ali_esq,0.686,0.1,0.06],'String','1E-4','Style','edit','Visible','on','FontSize',[fonte]) handles.tx_nmax=uicontrol(f,'unit','normalized','Position',[tx_ali_esq,0.586,0.1,0.06],'String','50','Style','edit','Visible','on','FontSize',[fonte]) function bt_calculo_callback(handles) clc //primeiro tratamento de erro //////// erro="" proceder = 1 global b_graf b_graf=0 if isnum(handles.tx_nmax.String) then else proceder=0 erro="N.Max não é um número!!" end if isnum(handles.tx_tol.String) then else proceder=0 erro="Tolerância não é um número!!" end if proceder==0 then messagebox(erro,"Erro!","error") else //Obtenção das Matrizes e variaveis //////////////////////////////////// matriz_principal=eval(handles.tx_matriz.String) matriz_independentes=eval(handles.tx_results.String) nmax =eval(handles.tx_nmax.String) tol=eval(handles.tx_tol.String) tamanho_matriz=size(matriz_principal) tamanho=tamanho_matriz(1) tamanho_matriz_termos=size(matriz_independentes) resultados = zeros(tamanho,1) global g_resin global g_int g_int=[] g_resin=[] g_resi=[] /////// ////condições /////////// if modulo(nmax,1)>0 then proceder=0 erro="N.max não é um inteiro!!" end if tamanho_matriz(1)<>tamanho_matriz(2) then erro="A matriz de coeficientes não é uma matriz quadrada!!" proceder =0 end if tamanho_matriz_termos(1)<>tamanho then proceder=0 erro="A matriz de termos independentes não tem o mesmo numero de linhas que a matriz de coeficientes!!" end if tamanho_matriz_termos(2)<>1 then proceder=0 erro="A matriz de termos independentes não é uma matriz coluna!!" end if proceder==0 then messagebox(erro,"Erro!","error") else b_graf=1 //Repartição das Matrizes //////////////////////// matriz_diagonal=diag(diag(matriz_principal)) matriz_diag_inv=inv(matriz_diagonal) matriz_triangular=(matriz_principal-matriz_diagonal)*(-1) D=matriz_diag_inv*matriz_triangular indeps=matriz_diag_inv*matriz_independentes //preparaçao para o laço ////////////////////////// n=1 resultados= (D*resultados)+indeps residuos=(matriz_principal*resultados)-matriz_independentes residuo = norm(residuos) residuo = (residuo^(1/2)) //laço principal ////////////////// while residuo>tol & n < nmax residuo=0 resultados= (D*resultados)+indeps residuos=(matriz_principal*resultados)-matriz_independentes residuo = norm(residuos) g_int(n)=n g_resi(n)=residuo g_resin(n)=residuos(1) n= n+1 //disp(resultados) end //Mostrar valores /////////////// resultados = resultados*10 resultados = round(resultados) resultados = resultados/10 texto=sci2exp(resultados) texto2=sci2exp(n) handles.resultados.String = texto handles.n.String=texto2 end end endfunction function bt_info1_callback() stg1= ["Neste campo deve ser adcionado uma matriz referente aos coeficientes do sistema.";"";"- Ela deve ser obrigatóriamente uma matriz quadrada.";"- Ela deve ser obrigatóriamente uma matriz estritamente dominante na diagonal.";"-A matriz deve ser adcionada na forma: [A,B,C ; D,E,F ; G,H,I].";"Onde as letras de A até I são os coeficiente do sistema.";"Os coeficientes de mesma linha devem ser separados por vírgula e as linhas separadas por ponto e vírgula, como no exemplo."] messagebox(stg1,"Informações: Coeficientes","info") endfunction function bt_info2_callback() stg2=["Neste campo deve ser adcionado uma matriz referente aos termos independentes do sistema.";"";"-Ela deve ser obrigatóriamente uma matriz coluna.";"-O numero de termos deve coincidir com o numero de linhas/colunas da matriz de coeficientes.";"-Deve ser adcionada na forma [A ; B ; C.]";"Onde as letras de A até C são os termos independentes do sistema.";"Cada termo deve ser separado por um ponto e vírgula."] messagebox(stg2,"Informações: Termos Independentes","info") endfunction function bt_info3_callback() stg3=["Neste campo deve ser adcionado um valor para a tolerância.";"";"Tolerância é um parâmetro utilizado para encerrar o cálculo do sistema.";"A cada cálculo que o programa faz, ele obtém um resíduo.";"O resíduo é obtido de uma forma que, quanto menor, mais preciso é o resultado.";"";"A tolerância é então o valor máximo do resíduo permitido pelo usuário."] messagebox(stg3,"Informações: Tolerância","info") endfunction function bt_info4_callback() stg4=["Neste campo deve ser adcionado um valor para o número máximo de ciclos que o programa fará.";"";"Esse valor é um parâmetro de parada do programa.";"Se o programa executar um número de ciclos que exceda o N.max, o programa ira parar e mostrar o último resultado obtido."] messagebox(stg4,"Informações: Nmax","info") endfunction function bt_limpa_callback(handles) a=get("current_axes") delete(a.children) endfunction
Compartilhar