Ir para conteúdo
Fórum Script Brasil
  • 0

Algoritmo interpolador de lagrange


PauloHM

Pergunta

O código abaixo realiza interpolação de uma função através do método de lagrange,de fórmula genérica:

http://upload.wikimedia.org/math/a/7/8/a78...875653bbd2a.png

Minha solução compila sem apresentar erros, porém , o resultado não é exibido em tela. Se alguém encontrar alguma irregularidade, fico grato.

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

int main(int argc, char *argv[])
{
  
  int tamanho,cont,i,j;
     
     printf("Insira o numero de valores conhecidos da funcao que deseja interpolar:\t");
     scanf("%d",&tamanho);
     printf("\n"); 
     
  float vetfx[tamanho],vetx[tamanho],x,pdtparcial,pdtfinal,fx;
     
     printf("Valores de x pre existentes:\n");
     
     for(cont=0;cont<tamanho;cont++){
        printf("Insira o valor de x%d :\t",cont);
        scanf("%f",&vetx[cont]);
     }                                
     printf("\n");   
        
          
     printf("Valores de f<x> pre existentes:\n");    
     
     for(cont=0;cont<tamanho;cont++){
        printf("Insira o valor de y%d :\t",cont);
        scanf("%f",&vetfx[cont]);
     }                                
     printf("\n");   

     printf("Insira o valor de x para o qual deseja obter f<x>: ");
     scanf("%f",&x);
     printf("\n");
     
     fx=0;        
     pdtfinal=1;
          
     for(i=0;i<tamanho;i++){
       for(j=0;j<=tamanho;j++){
          if(j=i){j++;}
          pdtparcial=0;
          
          pdtparcial=(x-vetx[j])/(vetx[i]-vetx[j]);          
          
          if(j!=tamanho){ pdtfinal*=pdtparcial; }
       }
       
       fx=fx+vetfx[i]*pdtfinal;
        
       pdtfinal=0;                                            

     } 

     printf("O valor de f<%f> e : %.4f ",x,fx);
     printf("\n\n");
     

  system("PAUSE");    
  return 0;
}

[]'s

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0
O código abaixo realiza interpolação de uma função através do método de lagrange,de fórmula genérica:

http://upload.wikimedia.org/math/a/7/8/a78...875653bbd2a.png

Minha solução compila sem apresentar erros, porém , o resultado não é exibido em tela. Se alguém encontrar alguma irregularidade, fico grato.

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

int main(int argc, char *argv[])
{
  
  int tamanho,cont,i,j;
     
     printf("Insira o numero de valores conhecidos da funcao que deseja interpolar:\t");
     scanf("%d",&tamanho);
     printf("\n"); 
     
  float vetfx[tamanho],vetx[tamanho],x,pdtparcial,pdtfinal,fx;
     
     printf("Valores de x pre existentes:\n");
     
     for(cont=0;cont<tamanho;cont++){
        printf("Insira o valor de x%d :\t",cont);
        scanf("%f",&vetx[cont]);
     }                                
     printf("\n");   
        
          
     printf("Valores de f<x> pre existentes:\n");    
     
     for(cont=0;cont<tamanho;cont++){
        printf("Insira o valor de y%d :\t",cont);
        scanf("%f",&vetfx[cont]);
     }                                
     printf("\n");   

     printf("Insira o valor de x para o qual deseja obter f<x>: ");
     scanf("%f",&x);
     printf("\n");
     
     fx=0;        
     pdtfinal=1;
          
     for(i=0;i<tamanho;i++){
       for(j=0;j<=tamanho;j++){
          if(j=i){j++;}
          pdtparcial=0;
          
          pdtparcial=(x-vetx[j])/(vetx[i]-vetx[j]);          
          
          if(j!=tamanho){ pdtfinal*=pdtparcial; }
       }
       
       fx=fx+vetfx[i]*pdtfinal;
        
       pdtfinal=0;                                            

     } 

     printf("O valor de f<%f> e : %.4f ",x,fx);
     printf("\n\n");
     

  system("PAUSE");    
  return 0;
}

[]'s

Alguém ? =S

Link para o comentário
Compartilhar em outros sites

  • 0

//Verifique as linhas marcadas em vermelho. Seu código agora está 100%!!!

 

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

int main(int argc, char *argv[])
{
  
  int tamanho,cont,i,j;
     
     printf("Insira o numero de valores conhecidos da funcao que deseja interpolar:\t");
     scanf("%d",&tamanho);
     printf("\n"); 
     
  float vetfx[tamanho],vetx[tamanho],x,pdtparcial,pdtfinal,fx;
     
     printf("Valores de x pre existentes:\n");
     
     for(cont=0;cont<tamanho;cont++){
        printf("Insira o valor de x%d :\t",cont);
        scanf("%f",&vetx[cont]);
     }                                
     printf("\n");   
        
          
     printf("Valores de f<x> pre existentes:\n");    
     
     for(cont=0;cont<tamanho;cont++){
        printf("Insira o valor de y%d :\t",cont);
        scanf("%f",&vetfx[cont]);
     }                                
     printf("\n");   

     printf("Insira o valor de x para o qual deseja obter f<x>: ");
     scanf("%f",&x);
     printf("\n");
     
     fx=0;        
     pdtfinal=1;
          
     for(i=0;i<tamanho;i++){
       for(j=0;j<=tamanho;j++){
          if(j==i){j++;}
          pdtparcial=0;
          
          pdtparcial=(x-vetx[j])/(vetx-vetx[j]);          
          
          if(j!=tamanho){ pdtfinal*=pdtparcial; }

       }
       
       fx=fx+vetfx*pdtfinal;
        
      // pdtfinal=0;                                            
       pdtfinal=1;                                            
     } 

     printf("O valor de f<%f> e : %.4f ",x,fx);
     printf("\n\n");
     

  system("PAUSE");    
  return 0;
}

1 minuto atrás, rfabriciors disse:

//Verifique as linhas marcadas em vermelho. Seu código agora está 100%!!!

 

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

int main(int argc, char *argv[])
{
  
  int tamanho,cont,i,j;
     
     printf("Insira o numero de valores conhecidos da funcao que deseja interpolar:\t");
     scanf("%d",&tamanho);
     printf("\n"); 
     
  float vetfx[tamanho],vetx[tamanho],x,pdtparcial,pdtfinal,fx;
     
     printf("Valores de x pre existentes:\n");
     
     for(cont=0;cont<tamanho;cont++){
        printf("Insira o valor de x%d :\t",cont);
        scanf("%f",&vetx[cont]);
     }                                
     printf("\n");   
        
          
     printf("Valores de f<x> pre existentes:\n");    
     
     for(cont=0;cont<tamanho;cont++){
        printf("Insira o valor de y%d :\t",cont);
        scanf("%f",&vetfx[cont]);
     }                                
     printf("\n");   

     printf("Insira o valor de x para o qual deseja obter f<x>: ");
     scanf("%f",&x);
     printf("\n");
     
     fx=0;        
     pdtfinal=1;
          
     for(i=0;i<tamanho;i++){
       for(j=0;j<=tamanho;j++){
          if(j==i){j++;}
          pdtparcial=0;
          
          pdtparcial=(x-vetx[j])/(vetx-vetx[j]);          
          
          if(j!=tamanho){ pdtfinal*=pdtparcial; }

       }
       
       fx=fx+vetfx*pdtfinal;
        
      // pdtfinal=0;                                            
       pdtfinal=1;                                            
     } 

     printf("O valor de f<%f> e : %.4f ",x,fx);
     printf("\n\n");
     

  system("PAUSE");    
  return 0;
}

Ah... obrigado pelo código... salvou minha vida 😉

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...