From a9ce24d2c41521dc0c48264b875343a8afaf82aa Mon Sep 17 00:00:00 2001 From: JoseFilipeFerreira Date: Tue, 13 Oct 2020 20:50:25 +0100 Subject: [PATCH 1/6] Write first MNOL draft --- MNOL-MATLAB/README.md | 252 ++++++++++++++++++++++++++++++++++++++++++ README.md | 3 + 2 files changed, 255 insertions(+) create mode 100644 MNOL-MATLAB/README.md diff --git a/MNOL-MATLAB/README.md b/MNOL-MATLAB/README.md new file mode 100644 index 0000000..ee4dafe --- /dev/null +++ b/MNOL-MATLAB/README.md @@ -0,0 +1,252 @@ +# MNOL - MATLAB +Nesta secção vamos explorar a parte de MATLAB lecionada em MNOL. + +# Índice + +* [Utilitários](#Utilitários) +* [Definir Funções](#Definir-Funções) +* [Resolver sistemas de equações](#Resolver-sistemas-de-equações) +* [Resolver equação](#Resolver-equação) +* [Estimar valores](#Estimar-valores) + * [Polinómio Interpolador de Newton](#Polinómio-Interpolador-de-Newton) + * [Spline](#Spline) + * [Spline Cúbica](#Spline-Cúbica) + * [Spline Cúbica Completa](#Spline-Cúbica-Completa) + * [Segmento de Spline](#Segmento-de-Spline) +* [Valor do Integral](#Valor-de-Integral) + * [Função](#Função) + * [Valores](#Valores) +* [Mínimos Quadrados](#Mínimos-Quadrados) + * [Polinómios Ortogonais](#Polinómios-Ortogonais) + * [Modelo não polinomial linear](#Modelo-não-polinomial-linear) +* [Quasi-Newton](#Quasi-Newton) + * [Sem derivadas](#Sem-derivadas) + * [Com derivadas](#Com-derivadas) +* [Método de Nelder-Head](#Método-de-Nelder-Head) + + +- - - - + +# Utilitários +> Alterar a precisão +```matlab +format long % 15 casas decimais +format short % 5 casas decimais +``` + +> Funções importantes +* ones(n) -> matriz de 1s tamanho nxn +* zeros(n) -> matriz nula de ordem n +* eye(n) -> matriz identidade de ordem n +* ()’ -> transposta da matriz +* det () -> determinante da matriz +* rank() -> característica da matriz +* inv() -> inversa da matriz +* diag()-> diagonal da matriz +* triu(), tril() -> matriz triangular superior/inferior da matriz +* norm(,1), norm(,inf)-> normas (1 e inf) da matriz +* A \ b -> resolução do sistema linear + +``` +>> b=[1; 3; -6] +>> A=[1 -3 4; 2 5 -2; 3 8 10] +>> A\b %sistema linear Ax=b +ans = +2.2703 +-0.6216 +-0.7838 +>> norm(A,1) %norm +``` + +- - - - + +# Definir Funções +```Matlab +function [output] = function_name(input) +output = operation_on_input +``` +NOTA: definir na Function Window + +## Exemplos +* definir uma função "normal" +```Matlab +function [f] = fun1(x) +f = x^2 + x +1 +``` +* definir um sistema de equações +```Matlab +function [f] = fun2(x) +f(1) = x +f(2) = x^2 +``` + +NOTA: é possível definir lambdas com `@(x) operation_on_x` + +- - - - + +# Resolver sistemas de equações +* definir a função +* utilizar o comando **fsolve** +```Matlab +op = optimset('tolfun',TolFun_Value,'tolx',TolX_Value); +x1 = Aproximação_inicial; +format long; +[x,fval,exitflag, output] = fsolve('fun2', x1, op) +``` +NOTA: tolx é o critério de paragem + +- - - - + +# Resolver equação +* definir a função +* utilizar o comando **fsolve** +```Matlab +op = optimset('tolx',TolX_Value); +x1 = Aproximação_inicial; +format long; +[x,fval,exitflag, output] = fsolve('fun2', x1, op) +``` +- - - - + +# Estimar valores +## Polinómio Interpolador de Newton +* obter os grau + 1 pontos em torno do ponto x (por proximidade) +* calcular o polinómio interpolador +```Matlab +pol = polyfit(points_X, points_Y, grau); +``` +* calcular um ponto nesse polinómio +```Matlab +format long; +polyval(pol, point_X) +``` + +## Spline +### Spline Cúbica +```Matlab +sp = spline(points_X, points_Y, x) +``` + +### Spline Cúbica Completa +```Matlab +sp = spline(points_X, [declive_inferior points_Y declive_superior], x) +``` + +NOTAS(apenas utilizar se for explicitado que é necessário): +* se tiver função e não tiver declives + * derivar função + * calcular declive para pontos +* se não tiver função nem declives + * calcular declive dos primeiros dois e últimos dois + * remover o segundo ponto e último ponto dos vetores + +### Segmento de Spline +```Matlab +sp = spline(points_X, points_Y) +% OU +sp = spline(points_X, [declive_inferior points_Y declive_superior]) +sp.coefs +``` + +- - - - + +# Valor do Integral + +## Função +```matlab +quad(fun,a,b) +quadl(fun,a,b) +quad(fun,a,b,error) +``` +NOTA: +* fazer `[z, nf] = quad(@(x) x+1 , 1, 2, 0.00001)` + * z -> result + * nf -> número de avaliações da função + +## Valores +```matlab +trapz(points_X, points_Y) +``` + + +- - - - + +# Mínimos Quadrados +## Polinómios Ortogonais +```matlab +x = [1.5 2 3 4] +y = [4.9 3.3 2 1.5] + +[p,s] = polyfit(x,y,1) + +polyval(p,2.5) + +%Residuo do erro +(s.normr)^2 +``` + +## Modelo não polinomial linear +```matlab +x = [1.5 2 3 4] +y = [4.9 3.3 2 1.5] + +foo = @(c,x) c(1)./x + c(2).*x +[c,resnorm,residual,exitflag,out] = lsqcurvefit(foo,[1 1],x,y) + +%Residuo do erro +resnorm +``` + +- - - - + +# Quasi-Newton +Este método apenas calcula o mínimo. Assim, para calcular o máximo utilizamos a +seguinte formula: +``` +max = -min(-f(x)) +``` + +## Sem derivadas +```matlab +foo = @(x) 0.25*x(1)^4-0.5*x(1)^2+0.1*x(1)+0.5*x(2)^2 +fminunc(foo) +% OU +[x,y,ef,out] = fminunc(@(x) 0.25*x(1)^4-0.5*x(1)^2+0.1*x(1)+0.5*x(2)^2,[-1 0.5]) +``` + +> Se `ef < 0` não converge + +> Se `ef = 0` atinge nº max iterações -> aumentar maxIter + +> Se `ef > 0` converge + +## Com derivadas +```matlab +function [f,g] = foo(x) + f = 0.25*x(1)^4-0.5*x(1)^2+0.1*x(1)+0.5*x(2)^2; + g(1) = x(1)^3 %derivada em x1 + g(2) = x(2) %derivada em x2 +end + +op = optimset('gradobj','on') +[x,y,ef,out] = fminunc('foo',[-1 0.5],op) + +``` + +### optimset options: +* 'tolfun',10 +* 'tolx',10 +* 'HessUpdate','DFP' +* 'MaxIter',10000 +* 'MaxFunEvals',10000 + +- - - - + +# Método de Nelder-Mead +```matlab +foo = @(x) max(abs(x(1)),abs(x(2)-1)) + +op = optimset('display','iter') + +[x,y,ef,out] = fminsearch(foo,[1 1],op) +``` diff --git a/README.md b/README.md index 9412f7b..98a8c3f 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,9 @@ Para guardarem este repositório podem fazer `star`. * [Java](POO-Java/README.md) * [SO](SO/README.md) +## Terceiro ano + * [MNOL](MNOL-MATLAB/README.md) + # Contribuidores ## Resumos From 2c060ddba0a18fb1bd3adc9ccba9063e4f51afec Mon Sep 17 00:00:00 2001 From: JoseFilipeFerreira Date: Tue, 13 Oct 2020 21:07:38 +0100 Subject: [PATCH 2/6] separate topics in diferent files --- MNOL-MATLAB/README.md | 254 +------------------------------ MNOL-MATLAB/equacoes.md | 22 +++ MNOL-MATLAB/estimar_valores.md | 39 +++++ MNOL-MATLAB/integral.md | 25 +++ MNOL-MATLAB/introducao.md | 56 +++++++ MNOL-MATLAB/minimos_quadrados.md | 25 +++ MNOL-MATLAB/nelder-mead.md | 8 + MNOL-MATLAB/quasi-newton.md | 40 +++++ 8 files changed, 222 insertions(+), 247 deletions(-) create mode 100644 MNOL-MATLAB/equacoes.md create mode 100644 MNOL-MATLAB/estimar_valores.md create mode 100644 MNOL-MATLAB/integral.md create mode 100644 MNOL-MATLAB/introducao.md create mode 100644 MNOL-MATLAB/minimos_quadrados.md create mode 100644 MNOL-MATLAB/nelder-mead.md create mode 100644 MNOL-MATLAB/quasi-newton.md diff --git a/MNOL-MATLAB/README.md b/MNOL-MATLAB/README.md index ee4dafe..e91174e 100644 --- a/MNOL-MATLAB/README.md +++ b/MNOL-MATLAB/README.md @@ -3,250 +3,10 @@ Nesta secção vamos explorar a parte de MATLAB lecionada em MNOL. # Índice -* [Utilitários](#Utilitários) -* [Definir Funções](#Definir-Funções) -* [Resolver sistemas de equações](#Resolver-sistemas-de-equações) -* [Resolver equação](#Resolver-equação) -* [Estimar valores](#Estimar-valores) - * [Polinómio Interpolador de Newton](#Polinómio-Interpolador-de-Newton) - * [Spline](#Spline) - * [Spline Cúbica](#Spline-Cúbica) - * [Spline Cúbica Completa](#Spline-Cúbica-Completa) - * [Segmento de Spline](#Segmento-de-Spline) -* [Valor do Integral](#Valor-de-Integral) - * [Função](#Função) - * [Valores](#Valores) -* [Mínimos Quadrados](#Mínimos-Quadrados) - * [Polinómios Ortogonais](#Polinómios-Ortogonais) - * [Modelo não polinomial linear](#Modelo-não-polinomial-linear) -* [Quasi-Newton](#Quasi-Newton) - * [Sem derivadas](#Sem-derivadas) - * [Com derivadas](#Com-derivadas) -* [Método de Nelder-Head](#Método-de-Nelder-Head) - - -- - - - - -# Utilitários -> Alterar a precisão -```matlab -format long % 15 casas decimais -format short % 5 casas decimais -``` - -> Funções importantes -* ones(n) -> matriz de 1s tamanho nxn -* zeros(n) -> matriz nula de ordem n -* eye(n) -> matriz identidade de ordem n -* ()’ -> transposta da matriz -* det () -> determinante da matriz -* rank() -> característica da matriz -* inv() -> inversa da matriz -* diag()-> diagonal da matriz -* triu(), tril() -> matriz triangular superior/inferior da matriz -* norm(,1), norm(,inf)-> normas (1 e inf) da matriz -* A \ b -> resolução do sistema linear - -``` ->> b=[1; 3; -6] ->> A=[1 -3 4; 2 5 -2; 3 8 10] ->> A\b %sistema linear Ax=b -ans = -2.2703 --0.6216 --0.7838 ->> norm(A,1) %norm -``` - -- - - - - -# Definir Funções -```Matlab -function [output] = function_name(input) -output = operation_on_input -``` -NOTA: definir na Function Window - -## Exemplos -* definir uma função "normal" -```Matlab -function [f] = fun1(x) -f = x^2 + x +1 -``` -* definir um sistema de equações -```Matlab -function [f] = fun2(x) -f(1) = x -f(2) = x^2 -``` - -NOTA: é possível definir lambdas com `@(x) operation_on_x` - -- - - - - -# Resolver sistemas de equações -* definir a função -* utilizar o comando **fsolve** -```Matlab -op = optimset('tolfun',TolFun_Value,'tolx',TolX_Value); -x1 = Aproximação_inicial; -format long; -[x,fval,exitflag, output] = fsolve('fun2', x1, op) -``` -NOTA: tolx é o critério de paragem - -- - - - - -# Resolver equação -* definir a função -* utilizar o comando **fsolve** -```Matlab -op = optimset('tolx',TolX_Value); -x1 = Aproximação_inicial; -format long; -[x,fval,exitflag, output] = fsolve('fun2', x1, op) -``` -- - - - - -# Estimar valores -## Polinómio Interpolador de Newton -* obter os grau + 1 pontos em torno do ponto x (por proximidade) -* calcular o polinómio interpolador -```Matlab -pol = polyfit(points_X, points_Y, grau); -``` -* calcular um ponto nesse polinómio -```Matlab -format long; -polyval(pol, point_X) -``` - -## Spline -### Spline Cúbica -```Matlab -sp = spline(points_X, points_Y, x) -``` - -### Spline Cúbica Completa -```Matlab -sp = spline(points_X, [declive_inferior points_Y declive_superior], x) -``` - -NOTAS(apenas utilizar se for explicitado que é necessário): -* se tiver função e não tiver declives - * derivar função - * calcular declive para pontos -* se não tiver função nem declives - * calcular declive dos primeiros dois e últimos dois - * remover o segundo ponto e último ponto dos vetores - -### Segmento de Spline -```Matlab -sp = spline(points_X, points_Y) -% OU -sp = spline(points_X, [declive_inferior points_Y declive_superior]) -sp.coefs -``` - -- - - - - -# Valor do Integral - -## Função -```matlab -quad(fun,a,b) -quadl(fun,a,b) -quad(fun,a,b,error) -``` -NOTA: -* fazer `[z, nf] = quad(@(x) x+1 , 1, 2, 0.00001)` - * z -> result - * nf -> número de avaliações da função - -## Valores -```matlab -trapz(points_X, points_Y) -``` - - -- - - - - -# Mínimos Quadrados -## Polinómios Ortogonais -```matlab -x = [1.5 2 3 4] -y = [4.9 3.3 2 1.5] - -[p,s] = polyfit(x,y,1) - -polyval(p,2.5) - -%Residuo do erro -(s.normr)^2 -``` - -## Modelo não polinomial linear -```matlab -x = [1.5 2 3 4] -y = [4.9 3.3 2 1.5] - -foo = @(c,x) c(1)./x + c(2).*x -[c,resnorm,residual,exitflag,out] = lsqcurvefit(foo,[1 1],x,y) - -%Residuo do erro -resnorm -``` - -- - - - - -# Quasi-Newton -Este método apenas calcula o mínimo. Assim, para calcular o máximo utilizamos a -seguinte formula: -``` -max = -min(-f(x)) -``` - -## Sem derivadas -```matlab -foo = @(x) 0.25*x(1)^4-0.5*x(1)^2+0.1*x(1)+0.5*x(2)^2 -fminunc(foo) -% OU -[x,y,ef,out] = fminunc(@(x) 0.25*x(1)^4-0.5*x(1)^2+0.1*x(1)+0.5*x(2)^2,[-1 0.5]) -``` - -> Se `ef < 0` não converge - -> Se `ef = 0` atinge nº max iterações -> aumentar maxIter - -> Se `ef > 0` converge - -## Com derivadas -```matlab -function [f,g] = foo(x) - f = 0.25*x(1)^4-0.5*x(1)^2+0.1*x(1)+0.5*x(2)^2; - g(1) = x(1)^3 %derivada em x1 - g(2) = x(2) %derivada em x2 -end - -op = optimset('gradobj','on') -[x,y,ef,out] = fminunc('foo',[-1 0.5],op) - -``` - -### optimset options: -* 'tolfun',10 -* 'tolx',10 -* 'HessUpdate','DFP' -* 'MaxIter',10000 -* 'MaxFunEvals',10000 - -- - - - - -# Método de Nelder-Mead -```matlab -foo = @(x) max(abs(x(1)),abs(x(2)-1)) - -op = optimset('display','iter') - -[x,y,ef,out] = fminsearch(foo,[1 1],op) -``` +* [Introducao ao MATLAB](introducao.md) +* [Resolver equacoes e sistemas de equações](#Resolver-sistemas-de-equações) +* [Estimar valores](estimar_valores.md) +* [Valor do Integral](integral.md) +* [Mínimos Quadrados](minimos_quadrados.md) +* [Quasi-Newton](quasi-newton.md) +* [Método de Nelder-Mead](nelder-mead.md) diff --git a/MNOL-MATLAB/equacoes.md b/MNOL-MATLAB/equacoes.md new file mode 100644 index 0000000..87ec900 --- /dev/null +++ b/MNOL-MATLAB/equacoes.md @@ -0,0 +1,22 @@ +# Resolver sistemas de equações +* definir a função +* utilizar o comando **fsolve** +```Matlab +op = optimset('tolfun',TolFun_Value,'tolx',TolX_Value); +x1 = Aproximação_inicial; +format long; +[x,fval,exitflag, output] = fsolve('fun2', x1, op) +``` +NOTA: tolx é o critério de paragem + +- - - - + +# Resolver equação +* definir a função +* utilizar o comando **fsolve** +```Matlab +op = optimset('tolx',TolX_Value); +x1 = Aproximação_inicial; +format long; +[x,fval,exitflag, output] = fsolve('fun2', x1, op) +``` diff --git a/MNOL-MATLAB/estimar_valores.md b/MNOL-MATLAB/estimar_valores.md new file mode 100644 index 0000000..c515ad3 --- /dev/null +++ b/MNOL-MATLAB/estimar_valores.md @@ -0,0 +1,39 @@ +# Estimar valores +## Polinómio Interpolador de Newton +* obter os grau + 1 pontos em torno do ponto x (por proximidade) +* calcular o polinómio interpolador +```Matlab +pol = polyfit(points_X, points_Y, grau); +``` +* calcular um ponto nesse polinómio +```Matlab +format long; +polyval(pol, point_X) +``` + +## Spline +### Spline Cúbica +```Matlab +sp = spline(points_X, points_Y, x) +``` + +### Spline Cúbica Completa +```Matlab +sp = spline(points_X, [declive_inferior points_Y declive_superior], x) +``` + +NOTAS(apenas utilizar se for explicitado que é necessário): +* se tiver função e não tiver declives + * derivar função + * calcular declive para pontos +* se não tiver função nem declives + * calcular declive dos primeiros dois e últimos dois + * remover o segundo ponto e último ponto dos vetores + +### Segmento de Spline +```Matlab +sp = spline(points_X, points_Y) +% OU +sp = spline(points_X, [declive_inferior points_Y declive_superior]) +sp.coefs +``` diff --git a/MNOL-MATLAB/integral.md b/MNOL-MATLAB/integral.md new file mode 100644 index 0000000..26369e6 --- /dev/null +++ b/MNOL-MATLAB/integral.md @@ -0,0 +1,25 @@ +# Mínimos Quadrados +## Polinómios Ortogonais +```matlab +x = [1.5 2 3 4] +y = [4.9 3.3 2 1.5] + +[p,s] = polyfit(x,y,1) + +polyval(p,2.5) + +%Residuo do erro +(s.normr)^2 +``` + +## Modelo não polinomial linear +```matlab +x = [1.5 2 3 4] +y = [4.9 3.3 2 1.5] + +foo = @(c,x) c(1)./x + c(2).*x +[c,resnorm,residual,exitflag,out] = lsqcurvefit(foo,[1 1],x,y) + +%Residuo do erro +resnorm +``` diff --git a/MNOL-MATLAB/introducao.md b/MNOL-MATLAB/introducao.md new file mode 100644 index 0000000..5e08bcd --- /dev/null +++ b/MNOL-MATLAB/introducao.md @@ -0,0 +1,56 @@ +# Introducão + +# Utilitários +> Alterar a precisão +```matlab +format long % 15 casas decimais +format short % 5 casas decimais +``` + +> Funções importantes +* ones(n) -> matriz de 1s tamanho nxn +* zeros(n) -> matriz nula de ordem n +* eye(n) -> matriz identidade de ordem n +* ()’ -> transposta da matriz +* det () -> determinante da matriz +* rank() -> característica da matriz +* inv() -> inversa da matriz +* diag()-> diagonal da matriz +* triu(), tril() -> matriz triangular superior/inferior da matriz +* norm(,1), norm(,inf)-> normas (1 e inf) da matriz +* A \ b -> resolução do sistema linear + +``` +>> b=[1; 3; -6] +>> A=[1 -3 4; 2 5 -2; 3 8 10] +>> A\b %sistema linear Ax=b +ans = +2.2703 +-0.6216 +-0.7838 +>> norm(A,1) %norm +``` + +- - - - + +# Definir Funções +```Matlab +function [output] = function_name(input) +output = operation_on_input +``` +NOTA: definir na Function Window + +## Exemplos +* definir uma função "normal" +```Matlab +function [f] = fun1(x) +f = x^2 + x +1 +``` +* definir um sistema de equações +```Matlab +function [f] = fun2(x) +f(1) = x +f(2) = x^2 +``` + +NOTA: é possível definir lambdas com `@(x) operation_on_x` diff --git a/MNOL-MATLAB/minimos_quadrados.md b/MNOL-MATLAB/minimos_quadrados.md new file mode 100644 index 0000000..26369e6 --- /dev/null +++ b/MNOL-MATLAB/minimos_quadrados.md @@ -0,0 +1,25 @@ +# Mínimos Quadrados +## Polinómios Ortogonais +```matlab +x = [1.5 2 3 4] +y = [4.9 3.3 2 1.5] + +[p,s] = polyfit(x,y,1) + +polyval(p,2.5) + +%Residuo do erro +(s.normr)^2 +``` + +## Modelo não polinomial linear +```matlab +x = [1.5 2 3 4] +y = [4.9 3.3 2 1.5] + +foo = @(c,x) c(1)./x + c(2).*x +[c,resnorm,residual,exitflag,out] = lsqcurvefit(foo,[1 1],x,y) + +%Residuo do erro +resnorm +``` diff --git a/MNOL-MATLAB/nelder-mead.md b/MNOL-MATLAB/nelder-mead.md new file mode 100644 index 0000000..55f75ad --- /dev/null +++ b/MNOL-MATLAB/nelder-mead.md @@ -0,0 +1,8 @@ +# Método de Nelder-Mead +```matlab +foo = @(x) max(abs(x(1)),abs(x(2)-1)) + +op = optimset('display','iter') + +[x,y,ef,out] = fminsearch(foo,[1 1],op) +``` diff --git a/MNOL-MATLAB/quasi-newton.md b/MNOL-MATLAB/quasi-newton.md new file mode 100644 index 0000000..ccda635 --- /dev/null +++ b/MNOL-MATLAB/quasi-newton.md @@ -0,0 +1,40 @@ +# Quasi-Newton +Este método apenas calcula o mínimo. Assim, para calcular o máximo utilizamos a +seguinte formula: +``` +max = -min(-f(x)) +``` + +## Sem derivadas +```matlab +foo = @(x) 0.25*x(1)^4-0.5*x(1)^2+0.1*x(1)+0.5*x(2)^2 +fminunc(foo) +% OU +[x,y,ef,out] = fminunc(@(x) 0.25*x(1)^4-0.5*x(1)^2+0.1*x(1)+0.5*x(2)^2,[-1 0.5]) +``` + +> Se `ef < 0` não converge + +> Se `ef = 0` atinge nº max iterações -> aumentar maxIter + +> Se `ef > 0` converge + +## Com derivadas +```matlab +function [f,g] = foo(x) + f = 0.25*x(1)^4-0.5*x(1)^2+0.1*x(1)+0.5*x(2)^2; + g(1) = x(1)^3 %derivada em x1 + g(2) = x(2) %derivada em x2 +end + +op = optimset('gradobj','on') +[x,y,ef,out] = fminunc('foo',[-1 0.5],op) + +``` + +### optimset options: +* 'tolfun',10 +* 'tolx',10 +* 'HessUpdate','DFP' +* 'MaxIter',10000 +* 'MaxFunEvals',10000 From 164e0f8100af12dd97a368b4b5456da021fe8431 Mon Sep 17 00:00:00 2001 From: JoseFilipeFerreira Date: Tue, 13 Oct 2020 21:11:29 +0100 Subject: [PATCH 3/6] fix link in README.md --- MNOL-MATLAB/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MNOL-MATLAB/README.md b/MNOL-MATLAB/README.md index e91174e..6d07ccf 100644 --- a/MNOL-MATLAB/README.md +++ b/MNOL-MATLAB/README.md @@ -3,8 +3,8 @@ Nesta secção vamos explorar a parte de MATLAB lecionada em MNOL. # Índice -* [Introducao ao MATLAB](introducao.md) -* [Resolver equacoes e sistemas de equações](#Resolver-sistemas-de-equações) +* [Introdução ao MATLAB](introducao.md) +* [Resolver equações e sistemas de equações](equacoes.md) * [Estimar valores](estimar_valores.md) * [Valor do Integral](integral.md) * [Mínimos Quadrados](minimos_quadrados.md) From 2154977259eae6ddac3fb85208a31967ed952b24 Mon Sep 17 00:00:00 2001 From: JoseFilipeFerreira Date: Tue, 13 Oct 2020 21:35:35 +0100 Subject: [PATCH 4/6] add explanation on variable types --- MNOL-MATLAB/introducao.md | 94 ++++++++++++++++++++++++++++++++------- 1 file changed, 78 insertions(+), 16 deletions(-) diff --git a/MNOL-MATLAB/introducao.md b/MNOL-MATLAB/introducao.md index 5e08bcd..db3f196 100644 --- a/MNOL-MATLAB/introducao.md +++ b/MNOL-MATLAB/introducao.md @@ -1,26 +1,88 @@ -# Introducão +# Introdução -# Utilitários -> Alterar a precisão +## Variáveis +MATLAB e dinamicamente tipado o que significa que não se indica qual e o tipo da +variável. Desta forma, para declarar uma variável utiliza-se o operador `=`: +```matlab +>> x = 20 +x = + 20 +>> x = 'JBB' +x = +JBB +>> x = [10*2, pi] +x = + 20.0000 3.1416 +``` + +- - - - + +## Vetores +Para facilmente declarar um vetor pode-se utilizar o método de MATLAB em que se +indica o valor inicial e final do vetor e o incremento entre cada elemento. +```matlab +>> array = 1:2:9 +array = + 1 3 5 7 9 +``` +Omitindo o campo relativo ao incremento assume-se que seja 1. +```matlab +>> array = 1:4 +array = + 1 2 3 4 +``` + +- - - - + +## Matrizes +Para declarar uma matriz fila a fila, separando os elementos de cada fila com um +`;` ou com um `\n` e a lista de elementos deve ser rodeada de `[]` +```matlab +>> A = [ 1:4 ; 5 6 7 8 ; 9:12 ; 14:17] +A = + 1 2 3 4 + 5 6 7 8 + 9 10 11 12 + 14 15 16 17 +``` +Para aceder a uma matriz utiliza-se o operador `()`, podendo ser indicado um +intervalo para obter uma slice da matriz +```matlab +>> A(2,3) +ans = + 7 + +>> A(2:4, 3:4) +ans = + 7 8 + 11 12 + 16 17 +``` + +- - - - + +## Utilitários +### Alterar a precisão ```matlab format long % 15 casas decimais format short % 5 casas decimais ``` -> Funções importantes +### Funções importantes * ones(n) -> matriz de 1s tamanho nxn * zeros(n) -> matriz nula de ordem n * eye(n) -> matriz identidade de ordem n -* ()’ -> transposta da matriz -* det () -> determinante da matriz -* rank() -> característica da matriz -* inv() -> inversa da matriz -* diag()-> diagonal da matriz -* triu(), tril() -> matriz triangular superior/inferior da matriz -* norm(,1), norm(,inf)-> normas (1 e inf) da matriz -* A \ b -> resolução do sistema linear +* (A)’ -> transposta da matriz A +* det(A) -> determinante da matriz A +* rank(A) -> característica da matriz A +* inv(A) -> inversa da matriz A +* diag(A)-> diagonal da matriz A +* triu(A), tril(A) -> matriz triangular superior/inferior da matriz A +* norm(A,1), norm(A,inf)-> normas (1 e inf) da matriz A +* A \ b -> resolução do sistema linear Ax = b -``` +#### Exemplo +```matlab >> b=[1; 3; -6] >> A=[1 -3 4; 2 5 -2; 3 8 10] >> A\b %sistema linear Ax=b @@ -28,24 +90,24 @@ ans = 2.2703 -0.6216 -0.7838 ->> norm(A,1) %norm ``` - - - - -# Definir Funções +## Definir Funções ```Matlab function [output] = function_name(input) output = operation_on_input ``` NOTA: definir na Function Window -## Exemplos +### Exemplos * definir uma função "normal" ```Matlab function [f] = fun1(x) f = x^2 + x +1 ``` + * definir um sistema de equações ```Matlab function [f] = fun2(x) From 7548859e85292ad2376b819c9694cba81819209e Mon Sep 17 00:00:00 2001 From: JoseFilipeFerreira Date: Tue, 13 Oct 2020 21:37:37 +0100 Subject: [PATCH 5/6] change order of introduction --- MNOL-MATLAB/introducao.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/MNOL-MATLAB/introducao.md b/MNOL-MATLAB/introducao.md index db3f196..ee8aa5b 100644 --- a/MNOL-MATLAB/introducao.md +++ b/MNOL-MATLAB/introducao.md @@ -1,5 +1,11 @@ # Introdução +## Alterar a precisão +```matlab +format long % 15 casas decimais +format short % 5 casas decimais +``` + ## Variáveis MATLAB e dinamicamente tipado o que significa que não se indica qual e o tipo da variável. Desta forma, para declarar uma variável utiliza-se o operador `=`: @@ -61,14 +67,7 @@ ans = - - - - -## Utilitários -### Alterar a precisão -```matlab -format long % 15 casas decimais -format short % 5 casas decimais -``` - -### Funções importantes +## Funções pré-definidas importantes * ones(n) -> matriz de 1s tamanho nxn * zeros(n) -> matriz nula de ordem n * eye(n) -> matriz identidade de ordem n @@ -81,7 +80,7 @@ format short % 5 casas decimais * norm(A,1), norm(A,inf)-> normas (1 e inf) da matriz A * A \ b -> resolução do sistema linear Ax = b -#### Exemplo +### Exemplo ```matlab >> b=[1; 3; -6] >> A=[1 -3 4; 2 5 -2; 3 8 10] From 06f1fd6324fce381454fc71d9ed5a1c4d510dea9 Mon Sep 17 00:00:00 2001 From: JoseFilipeFerreira <36403066+JoseFilipeFerreira@users.noreply.github.com> Date: Tue, 13 Oct 2020 21:55:17 +0100 Subject: [PATCH 6/6] improve aesthetics --- MNOL-MATLAB/introducao.md | 45 ++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/MNOL-MATLAB/introducao.md b/MNOL-MATLAB/introducao.md index ee8aa5b..1081c22 100644 --- a/MNOL-MATLAB/introducao.md +++ b/MNOL-MATLAB/introducao.md @@ -1,11 +1,5 @@ # Introdução -## Alterar a precisão -```matlab -format long % 15 casas decimais -format short % 5 casas decimais -``` - ## Variáveis MATLAB e dinamicamente tipado o que significa que não se indica qual e o tipo da variável. Desta forma, para declarar uma variável utiliza-se o operador `=`: @@ -42,7 +36,7 @@ array = ## Matrizes Para declarar uma matriz fila a fila, separando os elementos de cada fila com um -`;` ou com um `\n` e a lista de elementos deve ser rodeada de `[]` +`;` ou com `\n` e a lista de elementos deve ser rodeada de `[]` ```matlab >> A = [ 1:4 ; 5 6 7 8 ; 9:12 ; 14:17] A = @@ -68,17 +62,21 @@ ans = - - - - ## Funções pré-definidas importantes -* ones(n) -> matriz de 1s tamanho nxn -* zeros(n) -> matriz nula de ordem n -* eye(n) -> matriz identidade de ordem n -* (A)’ -> transposta da matriz A -* det(A) -> determinante da matriz A -* rank(A) -> característica da matriz A -* inv(A) -> inversa da matriz A -* diag(A)-> diagonal da matriz A -* triu(A), tril(A) -> matriz triangular superior/inferior da matriz A -* norm(A,1), norm(A,inf)-> normas (1 e inf) da matriz A -* A \ b -> resolução do sistema linear Ax = b +| funcao | descricão | +| ----------- | -------------------------------------- | +| ones(n) | matriz de 1s tamanho nxn | +| zeros(n) | matriz nula de ordem n | +| eye(n) | matriz identidade de ordem n | +| (A)’ | transposta da matriz A | +| det(A) | determinante da matriz A | +| rank(A) | característica da matriz A | +| inv(A) | inversa da matriz A | +| diag(A) | diagonal da matriz A | +| triu(A) | matriz triangular superior da matriz A | +| tril(A) | matriz triangular inferior da matriz A | +| norm(A,1) | norma 1 da matriz A | +| norm(A,inf) | norma inf da matriz A | +| A \ b | resolução do sistema linear Ax = b | ### Exemplo ```matlab @@ -98,7 +96,7 @@ ans = function [output] = function_name(input) output = operation_on_input ``` -NOTA: definir na Function Window +**NOTA:** definir na *Function Window* ### Exemplos * definir uma função "normal" @@ -114,4 +112,11 @@ f(1) = x f(2) = x^2 ``` -NOTA: é possível definir lambdas com `@(x) operation_on_x` +**NOTA:** é possível definir lambdas com `@(x) operation_on_x` + + +## Alterar precisão +```matlab +format long % 15 casas decimais +format short % 5 casas decimais +```