Transformação linear

Publicado por Tiago Bittencourt Nazare 13/09/2006

[ Hits: 5.889 ]

Homepage: www.doctumcat.com.br/geranet

Download algebra.c




Verificar de um espaço vetorial R2 para R qualquer se existe transformação linear. Você digita as coordenadas de u e v, a equação e a constante. Verifica as duas condições e informa se é ou não uma transformação linear.

  



Esconder código-fonte

/* Tiago bittencourt
   Verificar se eh transformação lienar 
   Espaço R2 para qualquer espaço*/
   
/* declaração de biblioteca */

#include <stdio.h>
#include <stdlib.h>

int main (void)
{
      /* declaração das variáveis */
      
      int x[10], y[10];
      int vetux, vetuy, vetvx, vetvy, vetfx, vetfy;
      int i, esp;
      int tx[10], ty[10], txf[10];
      int txvx[10], tyvy[10], txfu[10];
      int txvxfv[10], tyvyfv[10], txfufv[10];
      int fuv[10];
      int k, xk, yk;
      int kx1[10], kx2[10], kx1x[10], ktxfufv[10];
      printf (" \n Vetores R2 para R qualquer \n ");
      
      /* O usuario informa para qual espaço quer verificar */
      
      printf (" \n Digite o espaco vetorial ==> ");
      scanf ("%d",&esp);
      
      /* O usuario informa as coordenadas x e y dos vetores u e v */
      
      printf (" \n F(x,y) \n");
      printf (" \n Digite os valores do vetor u \n");
      printf (" \n Digite o valor de x ==> ");
      scanf ("%d",&vetux);
      printf (" \n Digite o valor de y ==> ");
      scanf ("%d",&vetuy);
      printf (" \n Digite os valores do vetor v \n");
      printf (" \n Digite o valor de x ==> ");
      scanf ("%d",&vetvx);
      printf (" \n Digite o valor de y ==> ");
      scanf ("%d",&vetvy);
      
      /* Mostra os vetores u e v digitado */
      
      printf (" \n Vetor u eh %d , %d ", vetux , vetuy);
      printf (" \n ");
      printf (" \n Vetor v eh %d , %d ", vetvx , vetvy);
      vetfx=vetux+vetvx;
      vetfy=vetuy+vetvy;
      
      /* Mostra a soma de u + v */
      
      printf (" \n \n F(u+v) ==> (%d, %d)", vetfx ,vetfy); 
    
    /* O usuário informa a equação */
    
    for (i=1; i<=esp; i++)
    {
        printf (" \n \n O termo numero %d da equacao ", i);
        printf (" \n \n Digite o valor de x ==> ");
        scanf("%d",&x[i]);
        printf (" \n Digite o valor de y ==> ");
        scanf("%d",&y[i]);  
        printf (" \n \n ");  
    }
    
    /* Verificando a primeira condição */
    
    printf (" \n ******* A equacao ******** ");
    printf (" \n \n ");
    for (i=1; i<=esp; i++)
    {
      if (y[i]>=0)
         printf (" %dx +%dy, ", x[i], y[i]);
      else  
         printf (" %dx %dy, ", x[i], y[i]);
    } 
    printf (" \n \n******* F(u+v) ******** \n\n");
    printf (" \n \n F(u+v) ==> (%d, %d)\n", vetfx ,vetfy);
    for (i=1; i<=esp; i++)
    {
        tx[i]=x[i]*vetfx;
        ty[i]=y[i]*vetfy;
    } 
    printf (" \n \n******* F(u+v) na equacao ******** \n \n ");
    for (i=1; i<=esp; i++)
    {
        if (y[i]>=0)
            txf[i]=tx[i]+ty[i]; 
        else
           txf[i]=ty[i]-tx[i];    
        printf ("%d ,",txf[i]);
    } 
    for (i=1; i<=esp; i++)
    {
        txvx[i]=x[i]*vetvx;
        tyvy[i]=y[i]*vetvy;
    } 
    printf (" \n \n******* F(v) na equacao ******** \n \n ");
    for (i=1; i<=esp; i++)
    {
        if (y[i]>=0)
            txfu[i]=txvx[i]+tyvy[i]; 
        else
           txfu[i]=tyvy[i]-txvx[i];    
        printf ("%d ,",txfu[i]);
    }
    for (i=1; i<=esp; i++)
    {
        txvxfv[i]=x[i]*vetux;
        tyvyfv[i]=y[i]*vetuy;
    } 
    printf (" \n \n******* F(u) na equacao ******** \n \n ");
    for (i=1; i<=esp; i++)
    {
        if (y[i]>=0)
            txfufv[i]=txvxfv[i]+tyvyfv[i]; 
        else
           txfufv[i]=tyvyfv[i]-txvxfv[i];    
        printf ("%d ,",txfufv[i]);
    }
    printf (" \n \nSomando os vetores u+v depois de jogados na equacao \n\n");
    for (i=1; i<=esp; i++)
    {
        fuv[i]=txfu[i]+txfufv[i];
        printf ("%d,", fuv[i]);
    }   
    printf (" \n \nComparando F(u+v) com F(u) + F(v) \n");
    for (i=1; i<=esp; i++)
    {
        if (fuv[i]==txf[i])
           printf (" \n  %d = %d ", fuv[i] , txf[i]);
        else   
          printf (" \n Condicao nao aceita \n");
    }
    /* Verificando a segunda condição */
    
    printf (" \n \n Digite o valor do escalar ==>");
    scanf ("%d",&k);
    printf (" \n F(k*u) = k*F(u) \n ");
    printf (" \n F(k*u) = ");
    xk=k*vetux;
    yk=k*vetuy;
    printf ("%d,%d", xk , yk);
    for (i=1; i<=esp; i++)
    {
        kx1[i]=x[i]*xk;
        kx2[i]=y[i]*yk;
    } 
    printf (" \n \n******* k*F(u) na equacao ******** \n \n ");
    for (i=1; i<=esp; i++)
    {
        if (y[i]>=0)
            kx1x[i]=kx1[i]+kx2[i]; 
        else
           kx1x[i]=kx2[i]-kx1[i];    
        printf ("%d ,",kx1x[i]);
    }
    printf (" \n \n******* k*F(u)******** \n \n ");
    for (i=1; i<=esp; i++)
    {
        if (y[i]>=0)
            ktxfufv[i]=2*(txvxfv[i]+tyvyfv[i]); 
        else
           ktxfufv[i]=2*(tyvyfv[i]-txvxfv[i]);    
        printf ("%d ,",ktxfufv[i]);
    }
    printf (" \n \n ");
    printf (" \n \n Verificando \n \n ");
    for (i=1; i<=esp; i++)
    {
        if(kx1x[i]==ktxfufv[i])
          printf (" \n  %d = %d ", kx1x[i] ,ktxfufv[i]);
        else   
          printf (" \n Condicao nao aceita \n");
    }
    printf (" \n \n \n ");
    
    /* Caso rode no linux (compilador gcc)
    esta linha tem de ser escluída */
    /* Para windows o programa não dever
    ser alterado */  
    
    system ("pause"); 
}  

Scripts recomendados

Formatar strings em C (RG, telefone, CEP etc)

Gauss Seidel

Validação de emails em C/C++

Equações de primeiro e segundo grau

Sequência de Fibonacci


  

Comentários
[1] Comentário enviado por marquimsc em 06/07/2006 - 08:50h

Nossa,esseprograma é muito bom,salvou minha vida lá na faculdade.Valeu mesmo.

[2] Comentário enviado por Garonce em 07/07/2006 - 15:00h

Esse script é muito util na hora das provas de Algebra linear


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts