Resolventes de 3 y 4 grado mediante matlab

Solo disponible en BuenasTareas
  • Páginas : 5 (1094 palabras )
  • Descarga(s) : 4
  • Publicado : 25 de noviembre de 2009
Leer documento completo
Vista previa del texto
es el codigo de los 3 archivos
TP1.M
RESOL3GRADO.M
RESOL4GRADO.M
(todo en minusculas)

TP1.M
clear all
clc
clf
echo on
% __________________________________________________________
%| UNIVERSIDAD TECNOLOGICA NACIONAL |
%| FACULTAD REGIONAL ROSARIO |
%| Matematica Superior Aplicada |%|__________________________________________________________|
%
% PROBLEMA Nº 2
%
%Alumnos:
%xxxx
%xxxx
%xxxx
%
%Las raices de los siguientes polinomios estan resueltas mediante las
%funciones pedidas: resol3grado y resol4grado.
%se compara su valor con las raices obtenidas mediante el comando roots de
%Matlab, y se las evalua para verificar que realmente sean raices del Px.

echo offMSG='ResolXgrado(Px) Roots(Px) Polyval(Px, resolXgrado)';

R1=resol4grado(1,2,-1,1,1/4);
R1m=roots([1 2 -1 1,1/4]);
for n=1:4
Ceros1(n,1)=polyval([1 2 -1 1,1/4],R1(n));
end
MSG1=[R1 R1m Ceros1];
disp('_______________________________________________________')
disp(' R1=resol4grado(1,2,-1,1,1/4)')disp('_______________________________________________________')
disp(MSG)
disp(MSG1)

R2=resol4grado(1,-1,-7,1,6);
R2m=roots([1 -1 -7 1 6]);
for n=1:4
Ceros1(n,1)=polyval([1 -1 -7 1 6],R2(n));
end
MSG1=[R2 R2m Ceros1];
disp('_______________________________________________________')
disp(' R1=resol4grado(1,-1,-7,1,6)')
disp('_______________________________________________________')
disp(MSG)
disp(MSG1)R3=resol3grado(1,9,39,63);
R3m=roots([1 9 39 63]);
for n=1:3
Ceros2(n,1)=polyval([1 9 39 63],R3(n));
end
MSG1=[R3 R3m Ceros2];
disp('_______________________________________________________')
disp(' R3=resol3grado(1,9,39,63);')
disp('_______________________________________________________')
disp(MSG)
disp(MSG1)

R4=resol3grado(1,-4,7,-5);
R4m=roots([1 -4 7 -5]);
for n=1:3Ceros2(n,1)=polyval([1 -4 7 -5],R4(n));
end
MSG1=[R4 R4m Ceros2];
disp('_______________________________________________________')
disp(' R4=resol3grado(1,-4,7,-5);')
disp('_______________________________________________________')
disp(MSG)
disp(MSG1)

resol3grado.m

function Y=resol3grado(a,b,c,d)

%esta funcion devuelve las 3 raices (Reales o Complejas)
%de un polinomio de grado 3.%si P3=aX^3 + bX^2 + cX + d = 0
%Y=resol3grado(a,b,c,d) --> Y=[r1
% r2
% r3];
%
%____________________________________________________________

___________
%ADVERTENCIA!: esta funcion no devuelve un numero cuando "b" y "c" son
%simultaneamente nulos.
%Si los factores tienen varios ordenes de diferencia [ej: 10^(+/-)4]
%el error esgrande.
%____________________________________________________________

___________

%pasamos el polinomio de forma ax^3+bx^2+cx+d a la forma x^3+Ax^2+Bx+C
%dividiendo los factores por "a"
A=b/a;
B=c/a;
C=d/a;

%reemplazamos la variable x por x=t-A/3, y queda un polinomio de la forma
%t^3+Pt+Q=0 (eliminamos el termino cuadrado)

P=(3*B-A^2)/3;

Q=(2*(A^3)-9*A*B+27*C)/27;R=(Q/2)^2+(P/3)^3;

%las raices estan dadas por la ecuación y=U^(1/3)+V^(1/3)-A/3

U=-Q/2+R^(1/2);
V=-Q/2-R^(1/2);

%esta ecuacion nos daria 9 "soluciones"
%(U tiene 3 raices cubicas al igual que V, lo que da 9 combinaciones)
%pero las unicas respuestas que son raices del polinomio
%son aquellas que cumplen: U*V=-P/3

%calculamos las 3 raices cubicas de U
rU=roots([1 0 0 -U]);

%Calculamoslas raices cubicas de V que cumplan U*V=-P/3, y con ellas
%calculamos cada una de las 3 raices del polinomio
%NOTA: se resta A/3 debido al anterior cambio de variable:
%x=t-A/3
for n=1:3
rV(n)=-P/(3*rU(n));
Y(n,1)=rU(n)+rV(n)-A/3;
end.

resol4grado.m

function Y=resol4grado(a,b,c,d,e)

%esta funcion devuelve las raices reales o complejas de un polinomio de
%grado 4.
%si...
tracking img