Enviado em 14/12/2015 - 10:29h
Olá pessoal,
sou totalmente novo nessa area de programação e virei a noite tentando fazer esse programa em C que é pra trabalho de faculdade pra amanhã. Mas acho que esta com alguns problemas que não sei resolver.
Quem puder ajudar serei muito grato.
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main () {
printf ("Programa para Estimar Raízes\n\n");
//Declaração de Variáveis
double a=0, b=0, t=0, erro,f=0,fd=0;
int i=0, potencia=0, cnt=0, opcao=0;
double coef[15]={0};
//Processo
printf ("Escolha o Método de aproximação:\n\n [1] Newton\n [2] Bissecção\n [3] Secante\n\n Escolha 1, 2 ou 3:\n\n");
scanf ("%d", opcao);
printf ("\n\nInsira extremo inferior do intervalo:\n");
scanf ("%f", a);
printf ("\nInsira extremo superior do intervalo:\n");
scanf ("%f", b);
a=((a+b)/2);
printf ("\nInsira a maior potência da equação:\n");
scanf ("%f", potencia);
for (i=0; i<=potencia; i++)
{
printf ("\nInsira coeficiente de x^%d:\n", i);
scanf ("%f", coef[i]);
}
printf ("\nSeu polinômio é:\n");
for (i=potencia; i>=0; i--){
printf ("+(%dx^%d)", coef[i], i);
printf ("\nInsira o erro máximo:\n");
}
scanf ("%f", erro);
switch (opcao) {
case 1:
i=0;
b=0;
printf("\n\n---------------------------------------\n");
printf("\n Iteração \t x \t F(x) \t \tF'(x) ");
printf("\n------------------------------------------\n");
do
{
cnt++;
f=fd=0;
for(i=potencia;i>=1;i--)
{
f+=coef[i] * (pow(a,i)) ;
}
f+=coef[0];
for(i=potencia;i>=0;i--)
{
fd+=coef[i]* (i*pow(a,(i-1)));
}
t=b;
b=(a-(f/fd));
a=b;
printf("\n\t %d \t%.3f \t %.3f\t\t%.3f ",cnt,b,f,fd);
}while((abs(t - a))>=erro);
printf("\n A Raiz aproximadamente é: %f",b);
break;
case 2:
i=0;
while ((b-a)/2>=erro)
{
printf ("\nA aproximação %d é: %f\n ", i, coef[i]);
for (i=potencia; i>=0; i--)
{
f=coef[i]*(pow(a,i))+f;
fd=coef[i]*(pow(t,i))+fd;
}
if (f*fd>0)
{
a=t;
t=((a+b)/2);
}
else
{
b=t;
t=((a+b)/2);
}
}
printf("\n A Raiz aproximadamente é: %f",t);
break;
case 3:
i=0;
for (i=potencia; i>=0; i--)
{
f=coef[i]*(pow(a,i))+f;
fd=coef[i]*(pow(b,i))+fd;
}
while((abs(f)>=erro))
{
t=b-((fd*(b-a))/(fd-f));
f=coef[i]*(pow(t,i))+f;
if (cnt<=150)
{
cnt++;
a=b;
b=t;
}
}
printf("\n A Raiz aproximadamente é: %f",t);
break;
default:
printf ("Escolher um método válido inserindo o 1, 2 ou 3:\n\n");
}
return 0;
}
sou totalmente novo nessa area de programação e virei a noite tentando fazer esse programa em C que é pra trabalho de faculdade pra amanhã. Mas acho que esta com alguns problemas que não sei resolver.
Quem puder ajudar serei muito grato.
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main () {
printf ("Programa para Estimar Raízes\n\n");
//Declaração de Variáveis
double a=0, b=0, t=0, erro,f=0,fd=0;
int i=0, potencia=0, cnt=0, opcao=0;
double coef[15]={0};
//Processo
printf ("Escolha o Método de aproximação:\n\n [1] Newton\n [2] Bissecção\n [3] Secante\n\n Escolha 1, 2 ou 3:\n\n");
scanf ("%d", opcao);
printf ("\n\nInsira extremo inferior do intervalo:\n");
scanf ("%f", a);
printf ("\nInsira extremo superior do intervalo:\n");
scanf ("%f", b);
a=((a+b)/2);
printf ("\nInsira a maior potência da equação:\n");
scanf ("%f", potencia);
for (i=0; i<=potencia; i++)
{
printf ("\nInsira coeficiente de x^%d:\n", i);
scanf ("%f", coef[i]);
}
printf ("\nSeu polinômio é:\n");
for (i=potencia; i>=0; i--){
printf ("+(%dx^%d)", coef[i], i);
printf ("\nInsira o erro máximo:\n");
}
scanf ("%f", erro);
switch (opcao) {
case 1:
i=0;
b=0;
printf("\n\n---------------------------------------\n");
printf("\n Iteração \t x \t F(x) \t \tF'(x) ");
printf("\n------------------------------------------\n");
do
{
cnt++;
f=fd=0;
for(i=potencia;i>=1;i--)
{
f+=coef[i] * (pow(a,i)) ;
}
f+=coef[0];
for(i=potencia;i>=0;i--)
{
fd+=coef[i]* (i*pow(a,(i-1)));
}
t=b;
b=(a-(f/fd));
a=b;
printf("\n\t %d \t%.3f \t %.3f\t\t%.3f ",cnt,b,f,fd);
}while((abs(t - a))>=erro);
printf("\n A Raiz aproximadamente é: %f",b);
break;
case 2:
i=0;
while ((b-a)/2>=erro)
{
printf ("\nA aproximação %d é: %f\n ", i, coef[i]);
for (i=potencia; i>=0; i--)
{
f=coef[i]*(pow(a,i))+f;
fd=coef[i]*(pow(t,i))+fd;
}
if (f*fd>0)
{
a=t;
t=((a+b)/2);
}
else
{
b=t;
t=((a+b)/2);
}
}
printf("\n A Raiz aproximadamente é: %f",t);
break;
case 3:
i=0;
for (i=potencia; i>=0; i--)
{
f=coef[i]*(pow(a,i))+f;
fd=coef[i]*(pow(b,i))+fd;
}
while((abs(f)>=erro))
{
t=b-((fd*(b-a))/(fd-f));
f=coef[i]*(pow(t,i))+f;
if (cnt<=150)
{
cnt++;
a=b;
b=t;
}
}
printf("\n A Raiz aproximadamente é: %f",t);
break;
default:
printf ("Escolher um método válido inserindo o 1, 2 ou 3:\n\n");
}
return 0;
}