Professional Documents
Culture Documents
FACULTAD DE INGENIERIA
EQUIPO # 4
INTEGRANTES:
Sánchez Narváez Mario Nolberto.
Morales de la Cruz Enrique.
Vázquez Martínez Edilberto.
Grado y Grupo:
2° “A”
MATERIA:
Programación por Computadoras.
TEMA:
Método de Müller.
CATEDRATICO:
Dr. Herrera Galicia Ruben.
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
MÉTODO DE MULLER
Este es un método para encontrar las raíces de ecuaciones polinomiales con raíces
múltiples, de la forma general:
f n ( x ) a 0 a1 x a 2 x 2 ....... a n x n
Donde n es el orden del polinomio y las a son coeficientes constantes. Continuando con los
polinomios, estos cumplen con las siguientes reglas:
Para la ecuación de orden n, hay n raíces reales o complejas. Se debe notar que esas raíces
no son necesariamente distintas.
El método consiste en obtener los coeficientes de la parábola que pasa por tres puntos
elegidos, dichos coeficientes son sustituidos en la fórmula cuadrática para obtener el valor o
punto donde la parábola intercepta el eje x, es decir, la raíz estimada. La aproximación se
puede facilitar, si se escribe la ecuación de la parábola en una forma
conveniente .En forma conveniente esta sería:
f 2 ( x ) a ( x x 2 ) 2 b( x x 2 ) c Ec.1
Una de las mayores ventajas de este método, es que al trabajar con la fórmula
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
FIG 1 FIG. 2
f(x) = x2 + x - 12
Cuando lo igualamos a cero y lo resolvemos tenemos:
x2 + x - 12 = 0 Igualando a cero.
(x + 4)(x - 3) = 0 Factorizando.
x=- 4 Solución 1
x= 3 Solución 2
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
Puesto que x1 = - 4 y x2 = 3 son soluciones de f(x) entonces f( -4 )= 0 y f( 3
)= 0. Decimos entonces que x = - 4 y x = 3 son raíces del polinomio f(x)=
x2+ x – 12
¡NOTA!
El Teorema fundamental del Álgebra nos dice que: El número de factores en que
se puede descomponer un polinomio es igual al grado del polinomio, es decir: Todo
polinomio de grado n tiene n raíces.
RAICES REALES
Como las raíces de un polinomio hacen que este valga cero, en unplano
cartesiano esto lo identificamos como las intersecciones de la gráfica del polinomio
con el eje de las X (abscisas). Esto es, los puntos en donde cruza la gráfica al eje
horizontal tienen como abscisa la raíz del polinomio graficado.
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
f(x)= - 1, 2 y f(x) = (x +
x3 - 4 3 1) (x - 2) (x
- 3)
x2 + x
+6
f(x)= - 2, - 1, f(x) = (x +
x4 - 5 1 y 2 1) (x + 2) (x
- 1) (x - 2)
x2 + 4
Ejemplo:
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
Esta función tiene una singularidad removible en x=-2. Si eliminamos el factor (x+2)
en el numerador y el denominador, obtenemos la función
La cual coincide con f(x) excepto en x=-2. Las raíces involucradas en esta función
son:
Raíces de p(x) = 0, 3,
Raíces de q(x) = -1, 1.
Para analizar el comportamiento de f (x) una vez eliminado el factor x= -2, se debe
tomaren cuenta que estas raíces, organizadas en orden creciente (-1,0,1,3), indican
los intervalos de estudio que deben considerarse para la función.
f(x)
FIG. 3
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
Lo que se pretende demostrar es que DADO UN COCIENTE DE POLINOMIOS ,
RAICES IMAGINARIAS
y = xxx-4xx+5x y
y = xxx-4xx+5x y
Las raíces de la
función son:
X= 0, x=2+i, x=2-i
x
x
FORMULAS
y = x^(3)+x y
a utilizar
y = x^(3)+x
Las
raíces de
¿CÓMO CALCULAR LA
PARÁBOLA?
la función son:
i
x
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
Ec. 2
Ec. 3
Ec. 4
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
7. Ahora se encontrará a (coeficientes de la parábola).
esúnicamente .
-Despejando-
Es decir, si
Se escoge
Si no, se escoge:
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
10.Si pretendemos iterar, es decir, una vez que se determinó x3 el proceso se repetirá,
esto con el fin de tener una mayor aproximación a la raíz X3, por lo cual esto traerá
de que un valor es descartado.
VENTAJA
Por medio de este método se encuentran tanto raíces reales como complejas.
DESVENTAJA
Si sólo se localizan raíces reales, elegimos los dos valores originales más
cercanos a la nueva raíz.
DATO ADICIONAL
Si además deseamos conocer los puntos en los que f (x) posee máximos y mínimos
locales, el procedimiento consiste en encontrar las raíces de f´(X).
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
1)
Coeficientes de la parábola
denominador, elegiré :
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
¿COMO OBTENER LAS OTRAS DOS RAICES FALTANTES?
FORMULA
Obteniendo raíces de :
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
BIBILOGRAFIA
http://dinamica1.fciencias.unam.mx/Preparatoria8/polinomi/
http://mat156.wordpress.com/category/muller/
CENTRO DE INVESTIGACION EN MATEMATICAS APLICADAS/UNIVERSIDAD
AUTONOMA DE COAHUILA, MEXICO
http://mattec.matedu.cinvestav.mx/el_calculo/data/docs/IKl7s1110p0w.pdf
https://www.youtube.com/watch?v=TMKlYxfpL8Q
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
PROGRAMACION
Programando Form 1
//---------------------------------------------------------------------------
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Form2->Show();
Form1->Visible=false; /*--------------ENTRAR--------------*/
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Close(); /*--------------SALIR--------------*/
}
//---------------------------------------------------------------------------
Programando Form 2
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
//---------------------------------------------------------------------------
#include <vcl.h>
#include <math.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
double
a,b,c,d,e,x0,x1,x2,x3,j,z,D,A,B,C,fx0,fx1,fx2,h0,h1,d0,d1,w,ER=100,Er=100,o,p,q,r,s,u,v,rx1,lxl,m,l
,R1,R2;
TForm2 *Form2;
//---------------------------------------------------------------------------
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
Label3->Caption="";
Label4->Caption="";
Label5->Caption="";
if(Er>=0.00000000000001){
a=Edit1->Text.ToDouble();
b=Edit2->Text.ToDouble();
c=Edit3->Text.ToDouble();
d=Edit4->Text.ToDouble();
e=Edit5->Text.ToDouble();
x0=Edit6->Text.ToDouble();
x1=Edit7->Text.ToDouble();
x2=Edit8->Text.ToDouble();
fx0=a*pow(x0,4)+b*pow(x0,3)+c*pow(x0,2)+d*x0+e;
fx1=a*pow(x1,4)+b*pow(x1,3)+c*pow(x1,2)+d*x1+e;
fx2=a*pow(x2,4)+b*pow(x2,3)+c*pow(x2,2)+d*x2+e;
h0=x1-x0;
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
h1=x2-x1;
if(h0==0|| h1==0||h1+h0==0)
{Label5->Caption="Prueba con otras aproximaciones";}
else{ /*--------------R1--------------*/
d0=(fx1-fx0)/h0;
d1=(fx2-fx1)/h1;
A=(d1-d0)/(h1+h0);
B=(A*h1)+d1;
C=fx2;
D=B*B-4*A*C;
if(D<0)
{Label3->Caption="posiblemente la función solo tenga raicesimaginarias,grafica y prueba
nuevos valores de x1,x2,x3!";}
else
{z=pow(D,0.5);
x3=x2-(2*C)/(B+z);
w=(x3-x2)/x3;
Edit8->Text=AnsiString(x3);
if(w<0)
{Er=(-w)*100;}
else
{Er=w*100;}
Edit6->Text=AnsiString(x1);
Edit7->Text=AnsiString(x2);
Edit9->Text=AnsiString(x3);
Edit15->Text=AnsiString(Er); }}}
if(ER>=0.00000000000001){
b=Edit2->Text.ToDouble();
c=Edit3->Text.ToDouble();/*--------------R2--------------*/
d=Edit4->Text.ToDouble();
e=Edit5->Text.ToDouble();
x0=Edit6->Text.ToDouble();
x1=Edit7->Text.ToDouble();
x2=Edit8->Text.ToDouble();
fx0=b*pow(x0,3)+c*pow(x0,2)+d*x0+e;
fx1=b*pow(x1,3)+c*pow(x1,2)+d*x1+e;
fx2=b*pow(x2,3)+c*pow(x2,2)+d*x2+e;
h0=x1-x0;
h1=x2-x1;
if(h0==0|| h1==0||h1+h0==0)
{Label5->Caption="Prueba con otras aproximaciones";}
else{
d0=(fx1-fx0)/h0;
d1=(fx2-fx1)/h1;
A=(d1-d0)/(h1+h0);
B=(A*h1)+d1;
C=fx2;
D=B*B-4*A*C;
if(D<0)
{Label3->Caption="posiblemente la función solo tenga raicesimaginarias,grafica y prueba
nuevos valores de x1,x2,x3!";}
if(D>=0)
{z=pow(D,0.5);
x3=x2-(2*C)/(B+z);
w=(x3-x2)/x3;
Edit8->Text=AnsiString(x3);
w=(x3-x2)/x3;
if(w<0)
{ER=(-w)*100;}
else
{ER=w*100;}
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
Edit6->Text=AnsiString(x1);
Edit7->Text=AnsiString(x2);
Edit8->Text=AnsiString(x3);
Edit10->Text=AnsiString(x3);
Edit16->Text=AnsiString(ER); }}}
else {Label4->Caption="!EL ERROR YA ES CERO!";}}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button3Click(TObject *Sender)
{
Label3->Caption="";
Label4->Caption="";
Label5->Caption="";
a=Edit3->Text.ToDouble();
b=Edit4->Text.ToDouble();
c=Edit5->Text.ToDouble();
D=b*b-4*a*c;
if(D<0) /*--------------R3--------------*/
{x1=(-b)/(2*a);
Edit11->Text=AnsiString(x1);
l=pow(-l*D,0.5)/(2*a);
Edit13->Text=AnsiString(l);}
else if(D>=0)
{r=pow(D,0.5);
x1=(-b+r)/(2*a);
Edit11->Text=AnsiString(x1);}
else{ D=-D;
r=pow(D,0.5);
rx1=(-b)/(2*a);
lxl=D/(2*a);
Edit11->Text=AnsiString(rx1);}}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button4Click(TObject *Sender)
{
Label3->Caption="";
Label4->Caption="";
Label5->Caption="";
a=Edit3->Text.ToDouble();
b=Edit4->Text.ToDouble();
c=Edit5->Text.ToDouble();
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
D=b*b-4*a*c; /*--------------R4--------------*/
if(D<0)
{x1=(-b)/(2*a);
Edit12->Text=AnsiString(x1);
l=pow(-l*D,0.5)/(2*a);
Edit14->Text=AnsiString(l);}
else if(D>=0)
{r=pow(D,0.5);
x1=(-b-r)/(2*a);
Edit12->Text=AnsiString(x1);}
else{D=-D;
r=pow(D,0.5);
rx1=(-b)/(2*a);
lxl=D/(2*a);
Edit12->Text=AnsiString(rx1);}}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button5Click(TObject *Sender)
{
Label3->Caption="";
Label4->Caption="";
Label5->Caption="";
a=Edit1->Text.ToDouble();
b=Edit2->Text.ToDouble();
c=Edit3->Text.ToDouble();
d=Edit4->Text.ToDouble();
e=Edit5->Text.ToDouble();
R1=Edit9->Text.ToDouble();
o=a*R1;
p=b+o; /*--------------DEGRADAR CON R1--------------*/
q=p*R1;
r=c+q;
s=r*R1;
u=d+s;
v=u*R1;
w=e+v;
Edit1->Text="0";
Edit2->Text=AnsiString(a);
Edit3->Text=AnsiString(p);
Edit4->Text=AnsiString(r);
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
Edit5->Text=AnsiString(u);
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button6Click(TObject *Sender)
{
Label3->Caption="";
Label4->Caption="";
Label5->Caption="";
a=Edit2->Text.ToDouble();
b=Edit3->Text.ToDouble();
c=Edit4->Text.ToDouble();
d=Edit5->Text.ToDouble();
R2=Edit10->Text.ToDouble();
o=a*R2;
p=b+o; /*--------------DEGRADAR CON R2--------------*/
q=p*R2;
r=c+q;
s=r*R2;
u=d+s;
Edit2->Text="0";
Edit3->Text=AnsiString(a);
Edit4->Text=AnsiString(p);
Edit5->Text=AnsiString(r);
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button7Click(TObject *Sender)
{
ER=100;
Er=100;
a=b=c=d=e=0;
Edit1->Text="";
Edit2->Text="";
Edit3->Text="";
Edit4->Text="";
Edit5->Text="";
Edit6->Text="";
Edit7->Text=""; /*--------------RESET--------------*/
Edit8->Text="";
Edit9->Text="";
Edit10->Text="";
Edit11->Text="";
Edit12->Text="";
Edit13->Text="0";
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
Edit14->Text="0";
Edit15->Text="";
Edit16->Text="";
Label3->Caption="";
Label4->Caption="";
Edit1->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button8Click(TObject *Sender)
{
Form3->Show(); /*--------------GRAFICAR--------------*/
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button9Click(TObject *Sender)
{
Form1->Show(); /*--------------INICIO-------------*/
Close();
}
//---------------------------------------------------------------------------
Programando Form 3
//---------------------------------------------------------------------------
#include <vcl.h>
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
#include <math.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
double a,b,c,d,e,x,y,av,pri,seg;
TForm3 *Form3;
//---------------------------------------------------------------------------
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm3::Button1Click(TObject *Sender)
{
Canvas->PenPos=TPoint(160,320);
Canvas->LineTo(800,320);
Canvas->PenPos=TPoint(480,400);
Canvas->LineTo(480,80);
Canvas->PenPos=TPoint(500,310);
Canvas->LineTo(500,330);
Canvas->PenPos=TPoint(520,310);
Canvas->LineTo(520,330);
Canvas->PenPos=TPoint(540,310);
Canvas->LineTo(540,330);
Canvas->PenPos=TPoint(560,310);
Canvas->LineTo(560,330);
Canvas->PenPos=TPoint(580,310);
Canvas->LineTo(580,330);
Canvas->PenPos=TPoint(600,310);
Canvas->LineTo(600,330);
Canvas->PenPos=TPoint(620,310);
Canvas->LineTo(620,330);
Canvas->PenPos=TPoint(640,310);
Canvas->LineTo(640,330);
Canvas->PenPos=TPoint(660,310);
Canvas->LineTo(660,330);
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
Canvas->PenPos=TPoint(680,310);
Canvas->LineTo(680,330);
Canvas->PenPos=TPoint(700,310);
Canvas->LineTo(700,330);
Canvas->PenPos=TPoint(460,310);
Canvas->LineTo(460,330);
Canvas->PenPos=TPoint(440,310);
Canvas->LineTo(440,330);
Canvas->PenPos=TPoint(420,310);
Canvas->LineTo(420,330);
Canvas->PenPos=TPoint(400,310);
Canvas->LineTo(400,330);
Canvas->PenPos=TPoint(380,310);
Canvas->LineTo(380,330);
Canvas->PenPos=TPoint(360,310);
Canvas->LineTo(360,330);
Canvas->PenPos=TPoint(340,310);
Canvas->LineTo(340,330);
Canvas->PenPos=TPoint(320,310);
Canvas->LineTo(320,330);
Canvas->PenPos=TPoint(300,310);
Canvas->LineTo(300,330);
Canvas->PenPos=TPoint(280,310);
Canvas->LineTo(280,330);
Canvas->PenPos=TPoint(470,120);
Canvas->LineTo(490,120);
Canvas->PenPos=TPoint(470,140);
Canvas->LineTo(490,140);
Canvas->PenPos=TPoint(470,300);
Canvas->LineTo(490,300);
Canvas->PenPos=TPoint(470,280);
Canvas->LineTo(490,280);
Canvas->PenPos=TPoint(470,260);
Canvas->LineTo(490,260);
Canvas->PenPos=TPoint(470,240);
Canvas->LineTo(490,240);
Canvas->PenPos=TPoint(470,220);
Canvas->LineTo(490,220);
Canvas->PenPos=TPoint(470,200);
Canvas->LineTo(490,200);
Canvas->PenPos=TPoint(470,180);
Canvas->LineTo(490,180);
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
Canvas->PenPos=TPoint(470,160);
Canvas->LineTo(490,160);
Label5->Caption="Y";
Label6->Caption="X";
Label7->Caption="2";
Label8->Caption="4";
Label9->Caption="6";
Label10->Caption="8";
Label11->Caption="10";
Label12->Caption="-2";
Label13->Caption="-4";
Label14->Caption="-6";
Label15->Caption="-8";
Label16->Caption="-10";
Label17->Caption="10";
a=Edit1->Text.ToDouble();
b=Edit2->Text.ToDouble();
c=Edit3->Text.ToDouble();
d=Edit4->Text.ToDouble();
e=Edit5->Text.ToDouble();
pri=Edit6->Text.ToDouble();
seg=Edit7->Text.ToDouble();
av=(seg-pri)/1000;
x=pri;
y=a*pow(x,4)+b*pow(x,3)+c*pow(x,2)+d*x+e;
Canvas->PenPos=TPoint(480+x*20,320-y*20);
for(pri;pri<=seg;pri=pri+av)
{x=pri;
y=a*pow(x,4)+b*pow(x,3)+c*pow(x,2)+d*x+e;
Canvas->LineTo(480+x*20,320-y*20);}
}
//---------------------------------------------------------------------------
void __fastcall TForm3::Button3Click(TObject *Sender)
{
Form2->Show();/*--------------REGRESAR-------------*/
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm3::Button4Click(TObject *Sender)
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20
{
Form1->Close();/*--------------SALIR-------------*/
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm3::Button2Click(TObject *Sender)
{
Edit1->Text="";
Edit2->Text="";
Edit3->Text="";
Edit4->Text="";/*--------------RESET-------------*/
Edit5->Text="";
Label5->Caption="";
Label6->Caption="";
Label7->Caption="";
Label8->Caption="";
Label9->Caption="";
Label10->Caption="";
Label11->Caption="";
Label12->Caption="";
Label13->Caption="";
Label14->Caption="";
Label15->Caption="";
Label16->Caption="";
Label17->Caption="";
Edit1->SetFocus();}
//---------------------------------------------------------------------------
U N A C H / FA C U LTA D D E I N G E N I E R I A C I V I L Página 20