lunes, 5 de diciembre de 2011

mi proyecto de analisis ke la vdd si costo

aki dejo solo las imagenes del programa corriendo porke la vdd el codigo si costo trabajo y no se lo vayan a fusilar jeje

el primer metodo es el de GAUSS


 la matriz se puede insertar de cualkier tamaño solo ke escogi el 3 ke es la mas comun









 el programa es repetivo y permite la opcion de si se kiere volver a empezar sk me falto una imagen


el segundo metodo es el de GAUSS-JORDAN
















el ulitmo metodo es el de GAUSS-SEIDEL







y asi terminan los tres metodos de Gauss.

mi segundo programa...minimos cuadrados

este es mi segundo programa ke corrio correctamente..este es su codigo



 #include <stdio.h>
 #include <math.h>
 #include <conio.h>
 #include <iostream.h>
 #include <stdlib.h>

 class Punto{
   private:
       float x,y;
         Punto *nxt;
      public:
       Punto(float=0,float=0,Punto* =NULL);
         void leeDatos(void);
         void modifNxt(Punto* p);
         float dameX(void);
         float dameY(void);
         Punto* dameNxt(void);
 };
 Punto::Punto(float a, float b, Punto* c): 
   x(a),y(b),nxt(c){
 }
 void Punto::leeDatos(void){
   cout<<endl<<"Dame el valor de la X: ";
      cin>>x;
      cout<<endl<<"Dame el valor d ela Y: ";
      cin>>y;
 }
 void Punto::modifNxt(Punto* p){
   nxt=p;
 }
 float Punto::dameX(void){
   return x;
 }
 float Punto::dameY(void){
   return y;
 }
 Punto* Punto::dameNxt(void){
   return nxt;
 }
 class Lista{
   private:
       Punto *inicio,*fin;
      public:
       Lista(Punto* =NULL,Punto* =NULL);
         void nuevoPunto(void);
         float SumaX();
         float SumaY();
         float SumaXY();
         float SumaX2();
 };
 Lista::Lista(Punto* a,Punto* b):
   inicio(a),fin(b){
 }
 void Lista::nuevoPunto(void){
      if(inicio==NULL){
       inicio=new Punto;
         inicio->leeDatos();
         fin=inicio;
      }
      else{
       fin->modifNxt(new Punto);
         fin=fin->dameNxt();
         fin->leeDatos();
   }
 }
 float Lista::SumaX(){
   float SX=0;
      Punto *aux;
  for(aux=inicio;aux!=NULL;){
       SX=(aux->dameX()+SX);
         aux=aux->dameNxt();
      }
      return SX;
 }
 float Lista::SumaY(){
   float SY=0;
      Punto *aux;
      for(aux=inicio;aux!=NULL;){
       SY=(aux->dameY()+SY);
         aux=aux->dameNxt();
      }
      return SY;
 }
 float Lista::SumaXY(){
   float SXY=0;
      Punto *aux;
      for(aux=inicio;aux!=NULL;){
       SXY=((aux->dameX())*(aux->dameY()))+SXY;
         aux=aux->dameNxt();
      }
      return SXY;
 }
 float Lista::SumaX2(){
   float SX2=0;
      Punto *aux;
      for(aux=inicio;aux!=NULL; ){
       SX2=(pow(aux->dameX(),2)+SX2);
         aux=aux->dameNxt();
      }
      return SX2;
 }
 int main(){
  system("cls");
   Lista L;
   int M,N,O;
   float V,m,b,R;
   cout<<"\tMinimos Cuadrados"
     <<endl<<endl<<"¿Cuantos Puntos a Dar?: ";
   cin>>N;
   M=N-1;
   O=N-M;
   do{
    cout<<endl<<"Valores del Punto "<<O<<" :"<<endl;
      L.nuevoPunto();
      O++;
   }
   while(O!=(N+1));
   m=(N*L.SumaXY()-L.SumaX()*L.SumaY())/(N*L.SumaX2()-pow(L.SumaX(),2));
   b=(L.SumaX2()*L.SumaY()-L.SumaX()*L.SumaXY())/(N*L.SumaX2()-pow(L.SumaX(),2));
   cout<<endl<<"¿Que Valor de X Deseas Calcular?: ";
   cin>>V;
   R=m*V+b;
   cout<<endl<<"El Valor de Y para X= "<<V<<" es de: "<<R;
   getch();
   return 0;
 }


mi primer programa ke corrio de analisis

bueno aki les presento mi codigo del primer codigo ke me corrio..es el de interpolacion de lagrange

#include<iostream>
#include<string.h>
#include<stdio.h>
#include<conio.h>
#include<math.h>
#include<stdlib.h>
#include<iomanip>
using namespace std;
char opcion;
class Lagrange
{
      private:
              int n, i, j;
              float *vecx, *vecy, *li, x, res, mult, Ev, Vv;
      public:
              Lagrange();
              void guardado();
              void organiza();
              void Li();
              void resultado();
};
Lagrange::Lagrange()
{
   cout<<"\n\n\t\tPuntos conocidos =  ";
   cin>>n;
   vecx = new float[n];
   vecy = new float[n];
   li = new float[n];
  
   res = 0;
   mult = 1;
  
}

void Lagrange::guardado()
{
cout<<"\n\n\n\t\tIngrese el valor de las x y f(x) correspondiente\n";

    for(j=0; j<n; j++) 
    {
    cout<<"\n\t\t\t\tx"<<j<<" =  ";
    cin>>vecx[j];
    cout<<"\n\t\t\t\tf("<<j<<") = ";
    cin>>vecy[j];
    }
}
void Lagrange::Li()
{
cout<<"\n\n\t\tIngrese el valor de x a evaluar f(x) = ";
cin>>x;
 for(j=0; j<n; j++) 
    {
        for(i=0; i<n; i++) 
        {
            if(j != i)
   mult *= (x - vecx[i])/(vecx[j] - vecx[i]);
  }
 li[j] = mult;
 mult = 1;
 }

 cout<<"\n\n\t\t\t\tx\tf(x)";
 cout<<"\n\t\t\t\t";
 for(j=0; j<n; j++) 
    {
  cout<<vecx[j]<<"\t"<<vecy[j];
  cout<<"\n\t\t\t\t";
 }
}
void Lagrange::resultado()
{
 cout<<"\n\n\n\t\tEl polinomio es la suma de L(x)*f(x)";
 cout<<"\n\n\t\t\t\tL(x)"<<"\t\t"<<"f(x)"<<endl<<endl;

    for(j=0; j<n; j++)
  cout<<"\t\t\t\t"<<setprecision(4)<<li[j]<<"\t\t"<<vecy[j]<<endl;

    for(j=0; j<n; j++) 
    {
  res += (vecy[j]*li[j]);
 }
cout<<"\n\n\t\t\tResultado: "<<setprecision(5)<<res;
cout<<"\n\n\t\t\tIngresa el valor verdadero: ";
cin>>Vv;
Ev = ((Vv - res)/Vv)*100;
cout<<"\n\n\t\t\tEl error verdadero es: "<<Ev<<" %";
}
void Lagrange::organiza()
{
guardado();
Li();
getch();
resultado();
getch();
}
int main()
{
do
{
   
cout<<"\n\n\n\n\n\t\t\t INTERPOLACION DE LAGRANGE";
cout<<endl<<endl<<"\n\n\n\t\t\t";
system("pause");
system("cls");
Lagrange a;
a.organiza();
system("cls");
cout<<"\n\n\tCalcular otra interpolacion de Lagrange (s/n)?"<<"\t";
cin>>opcion;
system("cls");
if(toupper(opcion)!='S')
{
cout<<endl<<endl<<"\n\n\n\t\t\t";
cout<<"PROGRAMA FINALIZADO";
getch();
}
}
while(toupper(opcion)=='S');
}