Está en la página 1de 4

Métodos variacionales

Carlos Alberto Garces Moreno

Ejercicio 1

04 febrero 2021

Ejercicio Reddy 2.5.2

Table of Contents
Introducción ............................................................................................................................................................ 1
Métodos .................................................................................................................................................................. 2
Petrov-Galerkin.....................................................................................................................................................2
Galerkin ...............................................................................................................................................................2
Mínimos cuadrados ............................................................................................................................................ 3
Método de colocación ........................................................................................................................................ 3
Graficos ...................................................................................................................................................................3

Introducción

Integral ponderada:

clear all
close all
clc

syms x c1 c2

A continuación se definen las funciones base 1,2,3

fi0 = x;
fi1 = 2*x - x^2;
fi2 = x^2 - (2/3)*x^3;

A continuación se definen las ecuaciones peso o de ponderación

1
psi1 = x;
psi2 = x^2;

A continuación la primera derivada de las funciones base

dfi0 = diff(fi0,'x');
dfi1 = diff(fi1,'x');
dfi2 = diff(fi2,'x');

A continuación las dobles derivadas de las funciones base

dfi0 = diff(dfi0,'x');
dfi1 = diff(dfi1,'x');
dfi2 = diff(dfi2,'x');

Declarando la función u aproximada y sus respectivas derivadas

u = fi0 + c1*fi1 + c2*fi2;


du = diff(u,'x');
ddu = diff(du,'x');

Declarando la función residuo

rj= -ddu - u + x^2;

Métodos
Petrov-Galerkin

pg1 = int(psi1*rj,0,1);
pg2 = int(psi2*rj,0,1);
pg = solve(pg1,pg2);
u_pg = fi0 + pg.c1*fi1 + pg.c2*fi2

u_pg =

Galerkin

g1 = int(fi1*rj,0,1);
g2 = int(fi2*rj,0,1);
g = solve(g1,g2);
u_g = fi0 + g.c1*fi1 + g.c2*fi2

2
u_g =

Mínimos cuadrados

mc_psi1 = diff(rj,'c1');
mc_psi2 = diff(rj,'c2');

mc1 = int(fi1*rj,0,1);
mc2 = int(fi2*rj,0,1);
mc = solve(mc1,mc2);
u_mc = fi0 + mc.c1*fi1 + mc.c2*fi2

u_mc =

Método de colocación
Escojo dos coordenadas

mco1 = subs(rj,x,1/3);
mco2 = subs(rj,x,2/3);
mco = solve(mco1,mco2);
u_mco = fi0 + mco.c1*fi1 + mco.c2*fi2

u_mco =

Graficos
Declarando un vector en x

x_plot=[0:0.1:1];

Reemplazando en la solución aproximada por cada método

plot_pg = double(subs(u_pg,x,x_plot));
plot_g = double(subs(u_g,x,x_plot));
plot_mc = double(subs(u_mc,x,x_plot));
plot_mco = double(subs(u_mco,x,x_plot));

Ploteando los resultados

plot(x_plot,plot_pg,'r')
hold on

3
plot(x_plot,plot_g,'b-')
plot(x_plot,plot_mc,'g*')
plot(x_plot,plot_mco,'k')
legend('pg','g','mc','mco')

También podría gustarte