Escolar Documentos
Profissional Documentos
Cultura Documentos
#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define MAX 100
int main(void){
int quociente,resto,divisor,dividendo,i,j,vet[MAX],teste;
printf("\n\n ------ Conversor de base decimal para uma base qualquer ------\n\n\n\n");
printf("Digite o numero: ");
scanf("%ld",÷ndo);
printf("Digite a base a ser convertida: ");
scanf("%ld",&divisor);
teste = TRUE;
i = 0;
while(teste){
resto = dividendo % divisor;
quociente = dividendo/divisor;
vet[i] = resto;
dividendo = quociente;
i++;
if(quociente == 0){
teste = FALSE;
vet[i] = 1;
}
}
for(j = i-1; j >= 0; j--){ /*impressão do último para o primeiro*/
printf(" %d", vet[j]);
}
printf("\n\n");
system("pause");
return 0;
}
_________________________________________________________________
// MÉTODOS NUMÉRICOS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int menu(void);
void bissecao(float a, float b, float c);
void posicaofalsa(float a, float b, float c);
void pontofixo(float a, float b, float c, float x0);
void newton(float a, float b, float c, float x0);
void secante(float a, float b, float c, float x0, float x1);
float polinomio(float);
float derivada(float);
float quici(float);
float mod(float);
//função x³-x-1
main(){
int opc;
float a,b,e,x,fx,d,h,x0,x1;
do{
opc = menu();
switch(opc){
case 1:
printf("\nMETODO DA BISSECAO:\n\n");
printf("Entre com a: ",a);
scanf("%f",&a);
printf("Entre com b: ",b);
scanf("%f",&b);
printf("Entre com a precisao: ",e);
scanf("%f",&e);
d=b-a;
if (d<e){
x= a+b;
x=x/2;
fx= polinomio(x);
printf(" \nx= %f e f(x)= %f",x,fx);
}
bissecao(a,b,e);
break;
case 2:
printf("\nMETODO DA POSICAO FALSA:\n\n");
printf("Entre com a: ",a);
scanf("%f",&a);
printf("Entre com b: ",b);
scanf("%f",&b);
printf("Entre com a precisao: ",e);
scanf("%f",&e);
d=b-a;
if (d<e){
x= a+b;
x=x/2;
fx= polinomio(x);
printf(" \nx= %f e f(x)= %f",x,fx);
}
posicaofalsa(a,b,e);
break;
case 3:
printf("\nMETODO DO PONTO FIXO:\n\n");
printf("Q(x) = (x+1)^1/3\n\n");
printf("Entre com a: ",a);
scanf("%f",&a);
printf("Entre com b: ",b);
scanf("%f",&b);
printf("Entre com a precisao: ",e);
scanf("%f",&e);
printf("Entre com o x0: ",x0);
scanf("%f",&x0);
h=polinomio(x0);
h=mod(h);
if (h<e){
x= x0;
fx= polinomio(x);
printf(" \nx= %f e f(x)= %f",x,fx);
}
pontofixo(a,b,e,x0);
break;
case 4:
printf("\nMETODO DE NEWTON:\n\n");
printf("Entre com a: ",a);
scanf("%f",&a);
printf("Entre com b: ",b);
scanf("%f",&b);
printf("Entre com a precisao: ",e);
scanf("%f",&e);
printf("Entre com o x0: ",x0);
scanf("%f",&x0);
h=polinomio(x0);
h=mod(h);
if (h<e){
x= x0;
fx= polinomio(x);
printf(" \nx= %f e f(x)= %f",x,fx);
}
newton(a,b,e,x0);
break;
case 5:
printf("Entre com a: ",a);
scanf("%f",&a);
printf("Entre com b: ",b);
scanf("%f",&b);
printf("Entre com a precisao: ",e);
scanf("%f",&e);
printf("Entre com o x0: ",x0);
scanf("%f",&x0);
printf("Entre com o x1: ",x1);
scanf("%f",&x1);
h=polinomio(x0);
h=mod(h);
if (h<e){
x= x0;
fx= polinomio(x);
printf(" \nx= %f e f(x)= %f",x,fx);
}
secante(a,b,e,x0,x1);
break;
case 6:
system("funcao.pdf");
break;
case 7:
printf("Encerrando o programa.\n\n");
break;
default:
printf("Opcao invalida.\n<Enter>" );
fflush(stdin);
getchar();
break;
}
}while(opc!=7);
}
int menu(void){
int ret;
printf("\n\n\n");
printf("===== f(x)= X^3 - X - 1 =====\n\n\n");
printf("[1] - bissecao\n");
printf("[2] - posicao falsa\n");
printf("[3] - pontofixo \n");
printf("[4] - newton\n");
printf("[5] - secante\n");
printf("[6] - grafico\n");
printf("[7] - Sair\n");
printf("\n\nEntre com a opcao: ");
fflush(stdin);
scanf("%d",&ret);
return ret;
}
cont = cont+1;
fa=polinomio(a);
fb=polinomio(b);
y=fb-fa;
j=a*fb;
l=b*fa;
x=j-l;
x=x/y;
fx=polinomio(x);
m=mod(fx);
if(fx<0){
a=x;
s=b-a;
}
if(fx>0){
b=x;
s=b-a;
}
//x0=1;
int cont=0;
float x,s,v,d,fx;
do{
cont = cont+1;
x = quici(x0);
fx=polinomio(x);
v=mod(fx);
d=x-x0;
d=mod(d);
if((v<c)||(d<c)){
printf("\n iteracao : %d | x = %f | f(x) = %f ",cont,x,fx);
break;
}
x0=x;
int cont=0;
float x,s,v,d,fx,w,k,h;
do{
cont = cont+1;
w = polinomio(x0);
k=derivada(x0);
h=w/k;
x=x0-h;
fx=polinomio(x);
v=mod(fx);
d=x-x0;
d=mod(d);
if((v<c)||(d<c)){
printf("\n iteracao : %d | x = %f | f(x) = %f ",cont,x,fx);
break;
}
x0=x;
int cont=0;
float x,s,v,d,fx,w,k,h,j,l,t;
j=polinomio(x1);
j=mod(j);
l=x1-x0;
l=mod(l);
if ((j<c)||(l<c)){
x= x1;
fx= polinomio(x);
printf(" \nx= %f e f(x)= %f",x,fx);
}
do{
cont = cont+1;
w=x1-x0;
k=polinomio(x1);
h=polinomio(x0);
t=k-h;
k= k/t;
k=k*w;
x=x1-k;
fx=polinomio(x);
v=mod(fx);
d=x-x1;
d=mod(d);
if((v<c)||(d<c)){
printf("\n iteracao : %d | x = %f | f(x) = %f ",cont,x,fx);
break;
}
x0=x1;
x1=x;
_________________________________________________________________
//SISTEMA DIRETO
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int menu(void);
void trisuperior(float a[4][4], float b[4]);
void gauss(float a[4][4], float b[4]);
void LU(float a[4][4], float b[4]);
void cholesky(float a[4][4]);
main(){
int opc,i,j;
float a[4][4];
float b[4];
float x[4];
do{
opc = menu();
switch(opc){
case 1:
printf("\nMETODO DE GAUSS:\n\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
printf("Entre com a[%d][%d]: ",i+1,j+1,a[i][j]);
scanf("%f",&a[i][j]);
}
}
for(i=0;i<4;i++){
printf("Entre com b[%d]: ",i+1,b[i]);
scanf("%f",&b[i]);
}
for(i=0;i<4;i++){
printf("|");
for(j=0;j<4;j++){
printf(" %3.2f ",a[i][j]);
}
printf("| %.2f |\n",b[i]);
}
printf("\n");
gauss(a,b);
break;
case 2:
printf("\nFATORACAO LU:\n\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
printf("Entre com a[%d][%d]: ",i+1,j+1,a[i][j]);
scanf("%f",&a[i][j]);
}
}
for(i=0;i<4;i++){
printf("Entre com b[%d]: ",i+1,b[i]);
scanf("%f",&b[i]);
}
for(i=0;i<4;i++){
printf("|");
for(j=0;j<4;j++){
printf(" %3.2f ",a[i][j]);
}
printf("| %.2f |\n",b[i]);
}
printf("\n");
LU(a,b);
break;
case 3:
printf("\nFATORACAO DE CHOLESKY:\n\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
printf("Entre com a[%d][%d]: ",i+1,j+1,a[i][j]);
scanf("%f",&a[i][j]);
}
}
cholesky(a);
break;
case 4:
printf("Encerrando o programa.\n\n");
break;
default:
printf("Opcao invalida.\n<Enter>" );
fflush(stdin);
getchar();
break;
}
}while(opc!=4);
}
int menu(void){
int ret;
printf("\n\n\n");
printf("SISTEMAS METODO DIRETO\n\n");
printf("[1] - Gauss\n");
printf("[2] - LU\n");
printf("[3] - Cholesky \n");
printf("[4] - Sair\n");
printf("\n\nEntre com a opcao: ");
fflush(stdin);
scanf("%d",&ret);
return ret;
}
for (k=n-1;k>-1;k--){
s=0;
for(j=k+1;j<n;j++){
h=a[k][j]*x[j];
s=s+h;
x[k]=b[k]-s;
}
x[k]=x[k]/a[k][k];
}
for(i=0;i<4;i++){
printf("|");
for(j=0;j<4;j++){
printf("%3.2f ",a[i][j]);
}
printf("| %.2f | = | %.2f |\n",b[i],x[i]);
}
printf("\n");
}
for (k=0;k<n-1;k++){
for (i=k+1;i<n-1;i++){
m=a[i][k]/a[k][k];
a[i][k]=0;
for (j=k+1;j<n-1;j++){
h=m*a[k][j];
a[i][j]=a[i][j]- h;
}
y=m*b[k];
b[i]=b[i]-y;
}
}
trisuperior(a,b);
linha=0.0;
for(i=n-1;i>=0;i--){
for(j=0;j<n;j++){
linha = linha + a[i][j];
}
if(linha==0){
n=n-1;
}
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
l[i][j]=0;
u[i][j]=0;
}
l[i][i]=1;
}
j=n-1;
for (i=0;i<n;i++){
p[i]=j;
j--;
}
for(k=0;k<n-1;k++){
pv = mod(a[k][k]);
r=k;
for(i=k+1;i<n;i++){
m = mod(a[i][k]);
if (m >pv){
pv=m;
r=i;
}
}
if(pv==0){
printf("a matriz A é singular");
break;
}
if(r!=k){
aux =p[k];
p[k]=p[r];
p[r]=aux;
for(j=0;j<n;j++){
ux=a[k][j];
a[k][j]=a[r][j];
a[r][j]=ux;
}
}
for(i=k+1;i<n;i++){
m=a[i][k]/a[k][k];
a[i][k]=m;
for(j=k+1;j<n;j++){
q=m*a[k][j];
a[i][j]=a[i][j]-q;
}
}
}
for(i=0;i<n;i++){
r=p[i];
c[i]=b[r];
}
for(i=0;i<n;i++){
soma=0;
for(j=0;j<=i-1;j++){
t=(a[i][j]*y[j]);
l[i][j]=a[i][j];
soma=soma+t;
}
y[i]=c[i]-soma;
}
for(i=n-1;i>=0;i--){
soma=0;
for(j=i+1;j<n+1;j++){
t=(a[i][j]*x[j]);
//u[i][j]=a[i][j];
soma=soma+t;
}
z=y[i]-soma;
x[i]=z/a[i][i];
}
for (i=0;i<n;i++){
p[i]=i;
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
r=p[i];
printf("p[%d]=%d\n",i,p[i]);
u[i][j]=a[r][j];
}
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(i>j){
u[i][j]=0;
}
}
}
printf("L= \n");
for(i=0;i<n;i++){
printf("|");
for(j=0;j<n;j++){
printf(" %3.2f ",l[i][j]);
}
printf("|\n");
}
printf("\n");
printf("U= \n");
for(i=0;i<n;i++){
printf("|");
for(j=0;j<n;j++){
printf(" %3.2f ",u[i][j]);
}
printf("|\n");
}
printf("\n");
for(i=0;i<n;i++){
// printf("|");
printf("x = | %.2f | e y = | %.2f |\n",x[i],y[i]);
}
printf("\n");
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(i<j){
g[i][j]=0;
}
}
}
g[0][0]=sqrt(a[0][0]);
for(i=0;i<n;i++){
g[i][0]=a[i][0]/g[0][0];
}
q=g[1][0]*g[1][0];
g[1][1]=a[1][1]- q;
g[1][1]=sqrt(g[1][1]);
m=g[2][0]*g[1][0];
g[2][1]= a[2][1]-m;
g[2][1]=g[2][1]/g[1][1];
q=g[2][0]*g[2][0];
q=q+(g[2][1]*g[2][1]);
g[2][2]=a[2][2]-q;
g[2][2]=sqrt(g[2][2]);
m=g[3][0]*g[1][0];
g[3][1]= a[3][1]-m;
g[3][1]=g[3][1]/g[1][1];
m=g[3][0]*g[2][0];
h=g[3][1]*g[1][1];
m=m+h;
g[3][2]= a[3][2]-m;
g[3][2]=g[3][2]/g[2][2];
q=g[3][0]*g[3][0];
q=q+(g[3][1]*g[3][1]);
q=q+(g[3][2]*g[3][2]);
g[3][3]=a[3][3]-q;
g[3][3]=sqrt(g[3][3]);
linha=0.0;
for(i=n-1;i>=0;i--){
for(j=0;j<n;j++){
linha = linha + a[i][j];
}
if(linha==0){
n=n-1;
}
}
for(i=n-1;i>=0;i--){
for(j=0;j<n;j++){
if(a[i][j]!=a[j][i]){
ts=1;
printf("\nErro ! Matriz nao e simetrica\n");
break;
}
if(ts==1){
break;
}
}
}
if(ts!=1){
for(i=0;i<n;i++){
printf("|");
for(j=0;j<n;j++){
printf("%3.2f ",g[i][j]);
}
printf("|\n");
}
printf("\n");
}
}
_________________________________________________________________
//SISTEMA ITERATIVO
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int menu(void);
void jacobi(float a[4][4], float b[4],float x[4],float e);
void seidel(float a[4][4], float b[4],float x[4],float e);
main(){
int opc,i,j;
float a[4][4];
float b[4];
float x[4];
float e;
do{
opc = menu();
switch(opc){
case 1:
printf("\nMETODO DE GAUSS-JACOBI:\n\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
printf("Entre com a[%d][%d]: ",i+1,j+1);
scanf("%f",&a[i][j]);
}
}
for(i=0;i<4;i++){
printf("Entre com b[%d]: ",i+1);
scanf("%f",&b[i]);
}
for(i=0;i<4;i++){
printf("Entre com x0[%d]: ",i+1);
scanf("%f",&x[i]);
}
printf("Entre com a precisao: ");
scanf("%f",&e);
printf("\n");
for(i=0;i<4;i++){
printf("|");
for(j=0;j<4;j++){
printf(" %3.2f ",a[i][j]);
}
printf("| %.2f |\n",b[i]);
}
printf("\n");
jacobi(a,b,x,e);
break;
case 2:
printf("\nMETODO DE GAUSS-SEIDEL:\n\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
printf("Entre com a[%d][%d]: ",i+1,j+1);
scanf("%f",&a[i][j]);
}
}
for(i=0;i<4;i++){
printf("Entre com b[%d]: ",i+1);
scanf("%f",&b[i]);
}
for(i=0;i<4;i++){
printf("Entre com x0[%d]: ",i+1);
scanf("%f",&x[i]);
}
printf("Entre com a precisao: ");
scanf("%f",&e);
printf("\n");
for(i=0;i<4;i++){
printf("|");
for(j=0;j<4;j++){
printf(" %3.2f ",a[i][j]);
}
printf("| %.2f |\n",b[i]);
}
printf("\n");
seidel(a,b,x,e);
break;
case 3:
printf("Encerrando o programa.\n\n");
break;
default:
printf("Opcao invalida.\n<Enter>" );
fflush(stdin);
getchar();
break;
}
}while(opc!=3);
}
int menu(void){
int ret;
printf("\n\n\n");
printf("SISTEMAS METODO ITERATIVO\n\n");
printf("[1] - Gauss-Jacobi\n");
printf("[2] - Gauss-Seidel\n");
printf("[3] - Sair\n");
printf("\n\nEntre com a opcao: ");
fflush(stdin);
scanf("%d",&ret);
return ret;
}
linha=0.0;
for(i=n-1;i>=0;i--){
for(j=0;j<n;j++){
linha = linha + a[i][j];
}
if(linha==0){
n=n-1;
}
}
max= 0;
for(i=0;i<n;i++){
soma = 0;
for(j=0;j<n;j++){
if(i!=j){
m=mod(a[i][j]);
soma=soma+ m;
}
}
m=mod(a[i][j]);
soma=soma/m;
if(max<soma){
max=soma;
}
}
if(max<1){
printf("\n\nCriterio das linhas satisfeito\n");
CL=1;
}else{
CL=0;
for(j=0;j<n;j++){
soma=0;
for(i=0;i<n;i++){
if(i!=j){
m=mod(a[i][j]);
soma=soma+m;
}
}
m=mod(a[i][j]);
soma=soma/m;
if(max<soma){
max=soma;
}
}
if(max<1){
printf("\n\nCriterio das colunas satisfeito\n");
CC=1;
}else{
CC=0;
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
md=md+mod(a[i][j]);
}
if(md>nm){
nm=md;
}
}
if(nm<1){
printf("\n\nCriterio das normas satisfeito\n");
CN=1;
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
md=md+mod(a[j][i]);
}
if(md>nm){
nm=md;
}
}
if(nm<1){
printf("\n\nCriterio das normas satisfeito\n");
CN=1;
}
dv=numerador/denominador;
}while(dv<e);
for(i=0;i<n;i++){
printf("x = |%.2f|\n",x[i]);
}
printf("iteracao : %d\n",cont);
}
void seidel(float a[4][4], float b[4], float x[4], float e){
int i,j,CL,CC,CS,CN,cont,n=4;
float numerador,denominador,linha,t,h,d,v,dv,y[4],m,max,mb,aux,md,nm,bt[4],bta[4],soma;
linha=0.0;
for(i=n-1;i>=0;i--){
for(j=0;j<n;j++){
linha = linha + a[i][j];
}
if(linha==0){
n=n-1;
}
}
max= 0;
for(i=0;i<n;i++){
soma = 0;
for(j=0;j<n;j++){
if(i!=j){
m=mod(a[i][j]);
soma=soma+ m;
}
}
m=mod(a[i][j]);
soma=soma/m;
if(max<soma){
max=soma;
}
}
if(max<1){
printf("\n\nCriterio das linhas satisfeito\n");
CL=1;
}else{
CL=0;
for(j=0;j<n;j++){
soma=0;
for(i=0;i<n;i++){
if(i!=j){
m=mod(a[i][j]);
soma=soma+m;
}
}
m=mod(a[i][j]);
soma=soma/m;
if(max<soma){
max=soma;
}
}
if(max<1){
printf("\n\nCriterio das colunas satisfeito\n");
CC=1;
}else{
CC=0;
}
for(i=0;i<n;i++){
for(i=0;i<n;i++){
for(j=0;j<n;j++){
bt[i]=bt[i]+mod(a[i][j]);
}
bt[i]=bt[i]/mod(a[i][i]);
for(j=0;j<n;j++){
aux=mod(a[i][j])*bt[i];
}
bta[i]=bta[i]+aux;
bta[i]=bta[i]/mod(a[i][i]);
}
for(i=0;i<n;i++){
if(mb<bta[i]){
mb=bta[i];
}
}
if(mb<1){
printf("\n\nCriterio de Sassenfeld satisfeito\n");
CS=1;
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
bt[i]=bt[i]+mod(a[j][i]);
}
bt[i]=bt[i]/mod(a[j][j]);
for(j=0;j<n;j++){
aux=mod(a[j][i])*bt[i];
}
bta[i]=bta[i]+aux;
bta[i]=bta[i]/mod(a[j][j]);
}
for(i=0;i<n;i++){
if(mb<bta[i]){
mb=bta[i];
}
}
if(mb<1){
printf("\n\nCriterio de Sassenfeld satisfeito\n");
CS=1;
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
md=md+mod(a[i][j]);
}
if(md>nm){
nm=md;
}
}
if(nm<1){
printf("\n\nCriterio das normas satisfeito\n");
CN=1;
}
for(i=0;i<n;i++){
for(j=0;j<n;j++){
md=md+mod(a[j][i]);
}
if(md>nm){
nm=md;
}
}
if(nm<1){
printf("\n\nCriterio das normas satisfeito\n");
CN=1;
}
cont=0;
if(CL==1)printf("\n\nCriterio das linhas satisfeito\n\n");
if(CC==1)printf("\n\nCriterio das colunas satisfeito\n\n");
if(CN==1)printf("\n\nCriterio das normas satisfeito\n\n");
if(CS==1)printf("\n\nCriterio de Sassenfeld satisfeito\n\n");
if((CL==1)||(CC==1)||(CN==1)||(CS==1)){
do{
cont=cont+1;
numerador=0;
denominador=0;
for(i=0;i<n;i++){
y[i]=0;
for(j=0;j<n;j++){
if(i!=j){
t=a[i][j]*x[j];
y[i]=y[i]+t;
}
}
h=b[i]-y[i];
y[i]=1.0/a[i][i];
y[i]=y[i]*h;
d=y[i]-x[i];
d=mod(d);
v=mod(y[i]);
if(numerador<d){
numerador = d;
}
if(denominador<v){
denominador=mod(y[i]);
x[i]=y[i];
dv=numerador/denominador;
}
}while(dv>e);
for(i=0;i<n;i++){
printf("x = |%.3f|\n",x[i]);
}
printf("\niteracao = %d",cont);
}
}
}
_________________________________________________________________
//INTERPOLAÇÃO
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int menu(void);
void lagrange(void);
void newton(void);
main(){
int opc,i,j;
do{
opc = menu();
switch(opc){
case 1:
printf("\nFORMA DE LAGRANGE:\n\n");
lagrange();
break;
case 2:
printf("\nFORMA DE NEWTON:\n\n");
newton();
break;
case 3:
printf("Encerrando o programa.\n\n");
break;
default:
printf("Opcao invalida.\n<Enter>" );
fflush(stdin);
getchar();
break;
}
}while(opc!=3);
}
int menu(void){
int ret;
printf("\n\n\n");
printf("INTERPOLACAO\n\n");
printf("[1] - Lagrange\n");
printf("[2] - Newton\n");
printf("[3] - Sair\n");
printf("\n\nEntre com a opcao: ");
fflush(stdin);
scanf("%d",&ret);
return ret;
}
void lagrange(void){
int n,i,j;
float *x,*f,xbarra,P,Pn,d,t,h;
printf("Entre com n: ");
scanf("%d",&n);
if(x!=NULL) free(x);
x = (float*)malloc(n*sizeof(float));
if(f!=NULL) free(f);
f = (float*)malloc(n*sizeof(float));
for(i=0;i<n;i++){
Pn = 0;
for(j=0;j<n;j++){
P=1;
for(i=0;i<n;i++){
if(i!=j){
d=xbarra - x[i];
h = x[j]-x[i];
P = P*(d/h);
}
}
t= P*f[j];
Pn = Pn + t;
}
printf("f(xbarra) = %.2f\n", Pn);
}
void newton(void){
int i,k,t,numPtos,teste,grau;
float p,h,u,r,m,termo,pto,*x,*y;
if(x!=NULL) free(x);
x = (float*)malloc(numPtos*sizeof(float));
if(y!=NULL) free(y);
y = (float*)malloc(numPtos*sizeof(float));
for(i=0;i<numPtos;i++){
}
for(i=0;i<numPtos;i++){
k = retornaIndiceInicial(numPtos,grau, pto, x, y );
termo = 1;
p = y[k];
if(numPtos>=grau){
teste = numPtos;
}else{
teste=k+1;
}
for(i=0;i<teste;i++){
/*t=k+i;*/
h=x[/*t-1*/i];
u=pto-h;
termo = termo * u;
}
r= retornaDiferencaDividida( k, pto, x, y );
//printf("termo=%f e r=%f\n",termo,r);
m=termo * r;
p = p + m;
//}
printf("O valor do polinomio no ponto dado e: %.2f", p);
if(pto<=x[grau]){
for(i=0;i<=grau;i++){
if(pto<=x[i]){
// printf("< grau pto=%f e x[%d]=%f e y[%d]=%f\n",pto,grau,x[grau],i+1,y[i]);
return i;
}
}
}
if(pto>x[grau]){
for(i=grau;i<=numPtos;i++){
if(pto<=x[i]){
return i;
}
return 0;
}
}
}
if(k!=0){
d=x[k]-pto;
d1=x[k]-x[k-1];
d2=pto-x[k-1];
d3=x[k]-x[k-1];
s=y[k-1]*(d/d1);
s1=y[k]*(d2/d3);
s=s+s1;
return s;
}
return y[0];
_________________________________________________________________
//INTEGRAL
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int menu(void);
void trapezio(void);
void simpson(void);
main(){
int opc,i,j;
do{
opc = menu();
switch(opc){
case 1:
printf("\nREGRA DOS TRAPEZIOS:\n\n");
trapezio();
break;
case 2:
printf("\nREGRA 1/3 SIMPSON:\n\n");
simpson();
break;
case 3:
printf("Encerrando o programa.\n\n");
break;
default:
printf("Opcao invalida.\n<Enter>" );
fflush(stdin);
getchar();
break;
}
}while(opc!=3);
}
int menu(void){
int ret;
printf("\n\n\n");
printf("INTEGRAL\n\n");
printf("[1] - Trapezio\n");
printf("[2] - Simpson\n");
printf("[3] - Sair\n");
printf("\n\nEntre com a opcao: ");
fflush(stdin);
scanf("%d",&ret);
return ret;
}
void trapezio(void){
/*Reais: h, x, soma, R;
Inteiras: i, n.*/
float h,x0,soma,sf,d,R,x[2],*f;
int i,n;
f = (float*)malloc(n*sizeof(float));
if(n==0){
printf("Divisao por zero");
}else if(n<0){
printf("Intervalo Invalido");
}else{
h = x[1] - x[0];
h=h/n;
x0 = x[0] + h;
soma = f[0]+f[n];
for(i=1;i<n;i++){
soma = soma + (2*f[i]);
x0 = x0 + h;
}
R = (h/2.0) * soma;
printf("O resultado da integral da funcao f e : %f ", R);
}
}
void simpson(void){
float h,x0,SomaPares,SomaImpares,soma,R,*f,x[2];
int i,n;
printf("Entre com n:");
scanf("%d",&n);
if(f!=NULL) free(f);
f = (float*)malloc(n*sizeof(float));
if(n==0){
printf("Divisao por zero");
}else if(n<0){
printf("Intervalo Invalido");
}else{
h = x[1] - x[0];
h=h/n;
x0 = x[0] + h;
soma = f[0]+f[n];
SomaPares =0.0;
SomaImpares=0.0;
for(i=1;i<n;i++){
if(i%2==0){
SomaPares = SomaPares + (2*f[i]);
}else{
SomaImpares=SomaImpares+(4*f[i]);
}
x0 = x0 + h;
}
soma = soma + SomaPares;
soma= soma + SomaImpares;
R = (h/3.0) * soma;
printf("O resultado da integral da funcao f e : %f ",R);
}