Baixe o app para aproveitar ainda mais
Prévia do material em texto
______ Página 1 de 3 Departamento de Matemática Disciplina: Cálculo Numérico Professor: Ismael R. F. Lins Método das Diferenças Divididas de Newton em Linguagem C Aluno: ____________________________ Matrícula: _________________________ ______ Página 2 de 3 #include<stdio.h> int main(){ system("Color 4F"); float x[5], y[5], a[5], f[5], aux; int Op, i=1; printf("\nEste programa utiliza o metodo das diferencas divididas de Newton \npara interpolar ate 4 prontos informados pelo usuario.\n\n"); printf("Quantos pontos deseja interpolar?\nInforme o numero da opcao desejada.\n\n\t(1) - Um.\n\t(2) - Dois.\n\t(3) - Tres.\n\t(4) - Quatro.\n\t>Opcao: "); scanf("%d",&Op); while((Op!=1) && (Op!=2) && (Op!=3) && (Op!=4)){ /*Enquanto o usuario digitar um numero fora das opcoes, o programa informa o erro e pede um novo numero.*/ printf("Opcao invalida! Informe um numero dentre as opcoes.\n\t>Opcao: "); scanf("%d",&Op); } while(i<=Op){/*Recebendo os pontos para interpolar. Enquanto o for menor que o numero da opcao informada, que e o numero de pontos para interpolar, o programa vai pedir os pontos.*/ printf("\nInforme o(s) ponto(s).\n"); printf("\n\t>X%d: ",i); scanf("%f",&x[i]);/*Vetor x que recebe os pontos em x.*/ printf("\t>Y%d: ",i); scanf("%f",&y[i]);/*Vetor y que recebe os pontos em y.*/ i++; } if(Op==1){/*Se o usuario deseja interpolar apenas um ponto.*/ printf("\nPonto a ser interpolado e:\n\t (%.2f,%.2f)",x[1],y[1]); f[0]=y[1];/*Polinomio de grau 0, entao apenas f[x1] que e a0.*/ printf("\n\nA funcao interpoladora de grau 0 e:\n\t> P0(x) = (%.2f)",f[0]); } if(Op==2){/*Se o usuario deseja interpolar dois pontos.*/ printf("\nOs pontos a serem interpolados sao:\n\t (%.2f,%.2f) (%.2f,%.2f)",x[1],y[1],x[2],y[2]); f[0]=y[1];/*f[x1] que e a0.*/ f[1]=(y[2]-y[1])/(x[2]-x[1]);/*Polinomio de grau 1, entao apenas f[x1 x2] que e a1.*/ printf("\n\nA funcao interpoladora de grau 1 e:\n\t> P1(x) = (%.2f)+(%.2f(x-(%.2f)))",f[0],f[1],x[1]); } if(Op==3){/*Se o usuario deseja interpolar tres pontos.*/ printf("\nOs pontos a serem interpolados sao:\n\t (%.2f,%.2f) (%.2f,%.2f) (%.2f,%.2f)",x[1],y[1],x[2],y[2],x[3],y[3]); f[0]=y[1];/*f[x1] que e a0.*/ f[1]=(y[2]-y[1])/(x[2]-x[1]);/*f[x1 x2] que e a1.*/ f[2]=(y[3]-y[2])/(x[3]-x[2]);/*f[x2 x3]*/ f[2]=(f[2]-f[1])/(x[3]-x[1]);/*Polinomio de grau 2. f[x1 x2 x3] que e a2.*/ printf("\n\nA funcao interpoladora de grau 2 e:\n\t> P2(x) = (%.2f)+(%.2f(x-(%.2f)))+(%.2f(x-(%.2f))(x- (%.2f)))",f[0],f[1],x[1],f[2],x[1],x[2]); } ______ Página 3 de 3 if(Op==4){/*Se o usuario deseja interpolar quatro pontos.*/ printf("\nOs Pontos a serem interpolados sao:\n\t (%.2f,%.2f) (%.2f,%.2f) (%.2f,%.2f) (%.2f,%.2f)",x[1],y[1],x[2],y[2],x[3],y[3],x[4],y[4]); f[0]=y[1];/*f[x1] que e a0.*/ f[1]=(y[2]-y[1])/(x[2]-x[1]);/*f[x1 x2] que e a1.*/ f[2]=(y[3]-y[2])/(x[3]-x[2]);/*f[x2 x3]*/ aux=f[2];/*variável auxiliar recebe f[x2 x3]*/ f[2]=(f[2]-f[1])/(x[3]-x[1]);/*f[x1 x2 x3] que e a2.*/ f[3]=(y[4]-y[3])/(x[4]-x[3]);/*f[x3 x4]*/ f[3]=(f[3]-aux)/(x[4]-x[2]);/*f[x2 x3 x4]*/ f[3]=(f[3]-f[2])/(x[4]-x[1]);/*Polinomio de grau 3. f[x1 x2 x3 x4] que e a3*/ printf("\n\nA funcao interpoladora de grau 3 e:\n\t> P3(x) = (%.2f)+(%.2f(x-(%.2f)))+(%.2f(x-(%.2f))(x- (%.2f)))+(%.2f(x-(%.2f))(x-(%.2f))(x-(%.2f)))",f[0],f[1],x[1],f[2],x[1],x[2],f[3],x[1],x[2],x[3]); } printf("\n\n"); return(0); }
Compartilhar