Esto sí es amar, matmet

elbichosiu

%derivación 5 puntos
syms x
disp('Fórmula de 5 puntos');
f=input('Escriba la función: ');
h=input('Escriba el valor de h: ');
x0=input('Escriba el valor de x0: ');
j=diff(f);
fprintf('Seleccione 1 o 2 según la fórmula que desea usar:nt1- Cinco términos nt2- Cuatro términos (fórmula centrada)')
op=input('nopción: ');
if op==1
        fprintf('n')
        x1=x0+h;
        fprintf('x1= x0+h= %9.15fn',double(x1))
        x2=x0+2*h;
        fprintf('x2= x0+2*h= %9.15fn',double(x2))
        x3=x0+3*h;
        fprintf('x3= x0+3*h= %9.15fn',double(x3))
        x4=x0+4*h;
        fprintf('x4= x0+4*h= %9.15fn',double(x4))
        yaprox=1/(12*h)*(-25*subs(f,x0)+48*subs(f,x1)-36*subs(f,x2)+16*subs(f,x3)-3*subs(f,x4));
        fprintf('Valor aproximado: (1/12h)*(-25fx0+48fx1-36fx2+16fx3-3fx4)) = %9.15fn',double(yaprox))
        yex=subs(j,x0);
        e=abs(yaprox-yex);
end
if op==2
        fprintf('n')
        x1=x0-2*h;
        fprintf('x1= x0-2*h= %9.15fn',double(x1))
        x2=x0-h;
        fprintf('x2= x0-h= %9.15fn',double(x2))
        x3=x0+h;
        fprintf('x3= x0+h= %9.15fn',double(x3))
        x4=x0+2*h;
        fprintf('x4= x0+2*h= %9.15fn',double(x4))
        yaprox=1/(12*h)*(subs(f,x1)-8*subs(f,x2)+8*subs(f,x3)-subs(f,x4));
        fprintf('Valor aproximado = (1/12h)(fx1-8fx2+8fx3-fx4)= %9.15fn',double(yaprox))
        yex=subs(j,x0);
        e=abs(yaprox-yex);
               
end
fprintf('El valor exacto es: %9.15fn',double(yex));
fprintf('El error es: %9.15fn',double(e));

%Derivación 3 puntos________________________________________________________________________________________________________________
%derivación // Hecho por Diego Quintanilla
syms x
disp('Fórmula de 3 puntos');
f=input('Escriba la función: ');
h=input('Escriba el valor de h: ');
x0=input('Escriba el valor de x0: ');
j=diff(f);
fprintf('Seleccione 1 o 2 según la fórmula que desea usar:nt1-Tres puntos con tres términos nt2-Tres puntos con dos términos (fórmula centrada)')
op=input('nopción: ');
if op==1
        fprintf('n')
        x1=x0+h;
        fprintf('x1= x0+h = %9.15fn',double(x1));
        x2=x0+2*h;
        fprintf('x2= x0+2*h = %9.15fn',double(x2));
        yaprox=1/(2*h)*(-3*subs(f,x0)+4*subs(f,x1)-subs(f,x2));
        fprintf('Valor aproximado= (1/2h)(-3fx0+4fx1-fx2) = %9.15fn',double(yaprox))
        yex=subs(j,x0);
        e=abs(yaprox-yex);
end
if op==2
        fprintf('n')
        x1=x0+h;
        fprintf('x1=x0+h = %9.15fn',double(x1));
        x2=x0-h;
        fprintf('x1=x0-h = %9.15fn',double(x2));
        yaprox=1/(2*h)*(subs(f,x1)-subs(f,x2));
        fprintf('El valor aproximado es: (1/2h)(fx1-fx2) = %9.15fn',double(yaprox));
        yex=subs(j,x0);
        e=abs(yaprox-yex);
               
end
fprintf('El valor exacto es: %9.15fn',double(yex));
fprintf('El error es: %9.15fn',double(e));

%________________________________________________________________________________________________________________________________

%funcion entre comillas, o punto y coma al final

   disp('1-->Extrapolacion con funcion');
   disp('2-->Extrapolacion con tabla');
   select = input('seleccion : ');
   arreglo = zeros();
  switch(select)
       case 1
          syms x
           f=input('digite la funcion f(x) : ' );
           N=input('digite la cantidad de iteraciones N(j) : ');
           h=input('digite h : ');
           x0=input('digite el punto inicial x0 : ');
           fprintf('nn');
           for i=1: N
               div=h;
               d=1;
               if(i~=1)
                 div = (h/2^(i-1));
                 d=2^(i-1);
               end
               superior = x0+div;
               inferior = x0-div;
               arreglo(1,i) = (1/(2*div))*(subs(f,superior)-subs(f,inferior));
               fprintf('N(%1.0f)(h/%1.0f)=(1/(2h/%1.0f))*(F(x0+h/%1.0f)-F(x0-h/%1.0f))=%3.15fnn',1,d,d,d,d,arreglo(1,i));
           end
           for i=1:N
               m=1;
               fprintf('n---------------------------------------------------------------------------------nn');
               for j=1:(N-i)
                   k=2^(j);
                   d=(4^(i)-1);
                   arreglo((i+1) , j)=(arreglo(i,(j+1)))+((arreglo(i,(j+1))-arreglo(i,j))/d);
                   fprintf('nn N(%1.0f)(h/%1.0f)=N(%1.0f)(h/%1.0f)+((N(%1.0f)(h/%1.0f)-N(%1.0f)(h/%1.0f))/%1.0f =%3.15f',(i+1),m,i,k,i,k,(j+1),m,d,arreglo((i+1),j));
                   m=m*2;
                   Vaprox = arreglo((i+1),j);
               end
           end
           syms x;
           dif=diff(f,x);
           Vreal = double(subs(dif , x0));
           fprintf('nValor aproximado es =%9.15f ',Vaprox);
           fprintf('nValor exacto es =%9.15f ' , Vreal );
           err=abs(Vreal-Vaprox);
           fprintf('nError =%3.3e nn',err);
       case 2
           
       otherwise
           return;
  end
%n(2,2)=n(2,1)+[n(2,1)-n(1,1)]/k   
%n(3,2)=n(3,1)+[n(3,1)-n(2,1)]/k 
%n(4,2)=n(4,1)+[n(4,1)-n(3,1)]/k

%____________________________________________________________________________________________________________________________________

%Integracion de Romberg
format long
syms x  y  z;
g=input('Escriba el integrando g(x)=');
n=input('Escriba el tamaño R(n,n) n: ');
a=input('limite a=');
b=input('limite b=');
RM=zeros(n,n);
fa=subs(g,a);
fb=subs(g,b);
for j=1:n
    h(j)=(b-a)/(2^(j-1));
    fprintf('Valores para h cuando j=1:n')
    h(j)
end
RM(1,1)=(h(1)/2)*(fa+fb);
for j=2:n
    Sum=0;
    for i=1:(2^(j-2))
        c=(a+((2*i-1)*h(j)));
        fc=subs(g,c);
        Sum=Sum+fc;
    end
    RM(j,1)=(1/2)*(RM(j-1,1)+h(j-1)*Sum);
end
for j=2:n
    for i=j:n
        RM(i,j)=RM(i,j-1) + (RM(i,j-1)-RM(i-1,j-1))/((4^(j-1))-1);
    end
end
for j=1:n
    for i=j:n
        if j==1&&i==1
            fprintf('R(1,1)=h1/2[fa+fb]=%9.15fn',RM(1,1))
        elseif j==1&&i>1
            fprintf('R(%1.0f,1)=(1/2)[R(%1.0f,1)+h%1.0f SumF(a+(2i-1)h%1.0f]=%9.15fn',i,i-1,i-1,i,RM(i,1))
        else
        fprintf('R(%1.0f,%1.0f)=R(%1.0f,%1.0f)+R(%1.0f,%1.0f)-R(%1.0f,%1.0f)/(4^(%1.0f-1)-1)=%9.15fn',i,j,i,j-1,i,j-1,i-1,j-1,j,RM(i,j))
        end
    end
end
fxd=input('Escriba la misma función pero en términos de y, f(y): ');
iex=int(fxd,y,a,b);
e=abs(RM(n,n)-iex);
fprintf('nValor aproximado: %9.15fn',RM(n,n))
fprintf('nValor real: %9.15fn',double(iex))
fprintf('nEl error es: %9.15fn',double(e))


%_________________________________________________________________________________________________________________________
function D=nca(a,b,n) %Newton Cotes abierta
disp('Newton-Cotes abiertas')
syms x
F=input('Escriba la función f(x): ');
f=inline(F);
h=(b-a)/(n+2);
fprintf('Seleccione la fórmula a aplicar: nt 1-Regla del punto medio (n=0) nt 2-Para n=1 nt 3-Para n=2 nt 4-Para n=3n');
op=input('opción: ');


if op==1
    x0=a+h;
    fx0=f(x0);
    inte=2*h*fx0;
    iex=int(F,x,a,b);
    e=abs(iex-inte);
     
end
if op==2
    x0=a+h;
    x1=x0+h;
    fx0=f(x0);
    fx1=f(x1);
    inte=3*h/2*(fx0+fx1);
    iex=int(F,x,a,b);
    e=abs(iex-inte);
        
end
if op==3
    x0=a+h;
    x1=x0+h;
    x2=x0+2*h;
    fx0=f(x0);
    fx1=f(x1);
    fx2=f(x2);
    inte=4*h/3*(2*fx0-fx1+2*fx2);
    iex=int(F,x,a,b);
    e=abs(iex-inte);
    
end
if op==4
    x0=a+h;
    x1=x0+h;
    x2=x0+2*h;
    x3=x0+3*h;
    fx0=f(x0);
    fx1=f(x1);
    fx2=f(x2);
    fx3=f(x3);
    inte=5*h/24*(11*fx0+fx1+fx2+11*fx3);
    iex=int(F,x,a,b);
    e=abs(iex-inte);
       
end
    fprintf('nEl valor aproximado es: %9.15f',double(inte));
    fprintf('nEl valor exacto es: %9.15f',double(iex));
    fprintf('nEl error es: %9.15fn',double(e));
end
%______________________________________________________________________________________________________________________
function D=ncc(a,b,n)% Newton Cotes cerradas
disp('Newton-Cotes cerradas')
syms x
F=input('Escriba la función f(x): ');
f=inline(F);
h=(b-a)/n;
fprintf('Seleccione la fórmula a aplicar: nt 1-Regla del trapecio nt 2-Regla de Simpson nt 3-Regla de 3/8 de Simpson nt 4-Regla de Boolen');
op=input('opción: ');

if op==1
    fa=f(a);
    fb=f(b);
    inte=h/2*(fa+fb);
    iex=int(F,x,a,b);
    e=abs(iex-inte);
     
end
if op==2
    fa=f(a);
    fb=f(b);
    x1=a+h;
    fx1=f(x1);
    inte=h/3*(fa+4*fx1+fb);
    iex=int(F,x,a,b);
    e=abs(iex-inte);
        
end
if op==3
    fa=f(a);
    fb=f(b);
    x1=a+h;
    x2=a+2*h;
    fx1=f(x1);
    fx2=f(x2);
    inte=3*h/8*(fa+3*fx1+3*fx2+fb);
    iex=int(F,x,a,b);
    e=abs(iex-inte);
    
end
if op==4
    fa=f(a);
    fb=f(b);
    x1=a+h;
    x2=a+2*h;
    x3=a+3*h;
    fx1=f(x1);
    fx2=f(x2);
    fx3=f(x3);
    inte=2*h/45*(7*fa+32*fx1+12*fx2+32*fx3+7*fb);
    iex=int(F,x,a,b);
    e=abs(iex-inte);
    
    
end
    fprintf('nEl valor aproximado es: %9.15f',double(inte));
    fprintf('nEl valor exacto es: %9.15f',double(iex));
    fprintf('nEl error es: %9.15fn',double(e));
end
%____________________________________________________________________________________________________________________________________

%Compuesta de Simpson 
fprintf('>>clcn');
fprintf('>>syms x;n');
n=input('>>n=');
a=input('>>a=');
b=input('>>b=');
disp('>>h=(b-a)/n;');
h=(b-a)/n;
disp('>>x0=a');
a
for i=1:n
   fprintf('>>x%1.0f=(a+%1.0f*h)n',i,i);
   z=a+(i)*h;
   fprintf('n x%1.0f=nnt%1.15fnn',i,z);
end
disp('>>x12=b');
b
syms x;
g=input('>>g=');
iex=int(g,x,a,b);
g
sum1=0;
sum2=0;
cad1='';
cad2='';
for i=1:n-1
    y=a+i*h;
    if(mod(i,2)==0)
        sum1 = sum1 + subs(g,y);
        nod=strcat('subs(g,x' ,num2str(i) ,')'); 
        cad1 = strcat(cad1 , '+' , nod);
    else
        nod2=strcat('subs(g,x' ,num2str(i) ,')'); 
        sum2= sum2 + subs(g,y);
        cad2 = strcat(cad2 , '+' , nod2);
    end
end
fprintf('>>sum1=%s n',cad1);
sum1
fprintf('n');
fprintf('>>sum2=%s n',cad2);
sum2
fprintf('n');
fa=subs(g,a);
disp('>>fa=subs(g,a);');
fb=subs(g,b);
disp('>>fb=subs(g,b);');
fprintf('>>faprox=(h/3)*(fa + 2*sum1 + 4*sum2 + fb)n');
faprox=(h/3)* (fa + 2*sum1 + 4*sum2 + fb);
e=abs(iex-faprox);
fprintf('El valor aproximado es: %9.15fn',double(faprox));
fprintf('El valor exacto es: %9.15fn',double(iex));
fprintf('El error es: %9.15fn',double(e));

%___________________________________________________________________________________________________________

%Trapecio compuesto:
function D=trapeciocomp(a,b,n)
syms y
f=input('Escriba la función f(y): ');
fa=subs(f,a);
fb=subs(f,b);
h=(b-a)/n;
iex=int(f,y,a,b);
%función suma = fs
fs=0;
    for i=1:n-1;
        x(i)=a+h*i;
        fs=fs+subs(f,x(i));
        
    end
    
    inte=0.5*h*(fa+2*fs+fb);
    e=abs(inte-iex);
    fprintf('El valor aproximado de la integral es: %9.15fn',double(inte));
    fprintf('El valor exacto de la integral es: %9.15fn',double(iex));
    fprintf('El error es: %9.15fn',double(e));
end

%_________________________________________________________________________________________________________________________
%Cuadratura Gaussiana
format long;
P=input('>> Escriba Polinomio como vector [1 0 ...]=');
N=input('>> Escriba cuánto vale N=: ');
disp('>>r=roots(P)');
r=roots(P); display(r); c=zeros(N);
syms x;
for i=1:N
    fprintf('>>x%1.0f=%9.15f n', i, r(i));
end
for i=1:N
   num=1;
   denom=1;
   cad='';
   fprintf('>>c%1.0f=',i);
   for j=1:N
       if(i~=j)
           num= num * (x-r(j));
           denom= denom * (r(i)-r(j));
           a=['x',num2str(i)];
           b=['x',num2str(j)];
           if(j~= N)
                cad=strcat(cad ,strcat('(',a, '-' ,b , ')' , '*'));
                fprintf('(x-x%1.0f)*', j);
           else
                fprintf('(x-x%1.0f)', j);
                cad=strcat(cad ,strcat('(',a, '-' ,b , ');'));
           end
       end
   end
   fprintf('/(%s)', cad);
   fprintf('n>>int(c%1.0f, -1 , 1 , x )n',i);
   c(i)=int((num/denom),x,-1,1);
   c(i)
end
syms x t
%Respuestas del polinomio
f=input('Escriba el integrando: ');
pol=input('Escriba el polinomio f(x): ');
a=input('a= ');
b=input('b= ');
T=double(solve(pol,x));
n=length(T);
format long
%Integracion de polinomios de Lagrange
for i=1:n
    M=1;
    for j=1:n
        if(i==j)
        else
            M=M*((x-T(j))/(T(i)-T(j)));
        end
    end
    C(i)=double(int(M,x,-1,1));
end
%Sustitucion de la funcion integrando a la nueva funcion
V=(1/2)*(((b-a)*t)+a+b);
dV=(b-a)/2;
ft=subs(f,V)*dV;

S=0;
%Uso de las C y de la nueva funcion evaluada en las raices del polinomio
for i=1:n
   S=S+(C(i)*subs(ft,T(i))); 
end
double(S)
%Valor exacto
Exacto=(int(f,x,a,b));
fprintf('El valor aproximado es %9.15f n',double(S));
fprintf('El valor exacto es %9.15f n',double(Exacto));
fprintf('El error %e n',double(abs(S-Exacto)));

%___________________________________________________________________________________________________________________________________

%Adaptivo de cuadratura
function D=adapcua(a,b)
syms x
f=input('Escriba la función f(x): ');
h=(b-a)/2;
fa=subs(f,a);
fb=subs(f,b);
fx1=subs(f,a+h/2);
fx2=subs(f,a+h);
fx3=subs(f,a+3*h/2);
iaprox=(h/6)*(fa+4*fx1+fx2)+(h/6)*(fx2+4*fx3+fb);
fprintf('El valor aproximado de la integral es: %9.15fn',double(iaprox))
end
%__________________________________________________________________________________________________________________________________

%Segunda derivada
disp('Seguda derivada')
f=input('Escriba la función: ');
syms x
h=input('Escriba el valor de h: ');
x0=input('Escriba el valor de x0: ');
sd=1/h^2*(subs(f,x0-h)-2*subs(f,x0)+subs(f,x0+h));
y=diff(f);
yy=diff(y);
y2=subs(yy,x0);
fprintf('El valor aproximado de la segunda derivada es: %9.15fn',double(sd))
fprintf('El valor exacto de la segunda derivada es: %9.15fn',double(y2));

%____________________________________________________________________________________________________________________________

%Compuesta de Simpson para integrales impropias singularidad límite
%izquierdo, cuando es derecho, hacer cambio x=z;
%Ahorita está diseñado para n=16;
function D=compimpr(a,b,n,p,sl)
h=(b-a)/n;
H=double(h)
x0=a;
%Aquí agregar o quitar x según sea el tamaño de n
x1=x0+h;x2=x1+h;x3=x2+h;x4=x3+h;x5=x4+h;x6=x5+h;x7=x6+h;x8=x7+h;
x9=x8+h;x10=x9+h;x11=x10+h;x12=x11+h;x13=x12+h;x14=x13+h;x15=x14+h;x16=x15+h;

syms x;
g=input('Función g(x): ');
d1=diff(g);d2=diff(d1);d3=diff(d2);d4=diff(d3);
g1=subs(g,sl); g2=subs(d1,sl); g3=subs(d2,sl); g4=subs(d3,sl); g5=subs(d4,sl);
px=g1+g2*(x-(sl))+g3*(x-(sl))^2/2+g4*(x-(sl))^3/6+g5*(x-(sl))^4/24;
f=(g-px)/(x-(sl))^p;

%Aquí agregar los valores de x
sum1=subs(f,x2)+subs(f,x4)+subs(f,x6)+subs(f,x8)+subs(f,x10)+subs(f,x12)+subs(f,x14);%suma los pares - el último
sum2=subs(f,x1)+subs(f,x3)+subs(f,x5)+subs(f,x7)+subs(f,x9)+subs(f,x11)+subs(f,x13)+subs(f,x15);%Suma todo impar

sumatoria1=double(sum1)
sumatoria2=double(sum2)
w=px/(x-(sl))^p;
%Sí el límite con sigularidad es el a (izquierdo), no evaluar subs(f,a) dentro de i1.
%Si es el b (derecho), no evaluar subs(f,b);
i1=double(h/3*(2*sum1+4*sum2+subs(f,b)))
i2=double(int(w,x,a,b))
iaprox=double(i1+i2);
fprintf('El valor aproximado es: %9.15fn',double(iaprox))

end
%____________________________________________________________________________________________________________________________

%Derivadas
%función    derivada
%asin(u)=u'/sqrt(1-u^2)
%acos(u)=-u'/sqrt(1-u^2)
%atan(u)=u'/(1+u^2)
%acot(u)-u'/(1+u^2)
%asec(u)=u'/(abs(u)*sqrt(u^2  -1)
%acsc(u)=-u'/(abs(u)*sqrt(u^2  -1)
%a^u=a^u(ln(u))u'
%sinx = cosx
%cosx = -sinx
%tanx = sec^2
%cotx = -csc^2
%secx = secx tanx
%cscx = -cscx cotx

%integración
%sqrt(a^2-u^2)            sqrt(a^2+u^2)                    sqrt(u^2-a^2)
%u=a sin            u=a tan                     u= a sec
du= a cos                       du=a sec^2                                      du= a tan sec
sqrt = a cos                    sqrt= a sec                                     sqrt= a tan

%1/sqrt(a^2-u^2) = arcosin(u/a)
%1/(a^2 +u^2)=(1/a)(arcotan(u/a))
%1/(u*sqrt(u^2 - a^2) = 1/a(arcosec(u/a))


%longitud de arco__________________________________
%fórmula=sqrt(1+^[f'(x)]^2)

%area de superficie de revolución_____________________
%formula= 2pi*f(x)*sqrt(1+^[f'(x)]^2)

%trabajo________________________________
%formula= (densidad)(volumen pequeño diferencial)(distancia) 
%nota: bombeo es llenar, vaciar es distancia disco a bomba (k-y) llena es Y

%fuerza________________________________________
%formula= densidad*h(y)L(y)

%Arandela________________________________
%formula= pi(R^2  -   r^2)
%eje a la izquierda o abajo                 eje derecha o arriba
%f(x) - eje                                   eje -f(x)

%Capa cilindrica_____________________________
%formula= 2pi*p(x)h(x) nota: p(x)=x; h(x)= funcion de tope rec,tipico
%eje a la izquierda o abajo                 eje derecha o arriba
%f(x) - eje                                   eje -f(x)

%método de discos_____________________________--
%formula= pi[f(x)]^2

  • Autor: elbichosiu (Offline Offline)
  • Publicado: 25 de junio de 2021 a las 02:14
  • Categoría: Sin clasificar
  • Lecturas: 65
Llevate gratis una Antología Poética ↓

Recibe el ebook en segundos 50 poemas de 50 poetas distintos


Comentarios +

Comentarios1

  • Kapirutxo

    Te explicas igual que mi amada cuando le pido una cita



Para poder comentar y calificar este poema, debes estar registrad@. Regístrate aquí o si ya estás registrad@, logueate aquí.