Função matemática

1. Função matemática

Ayslan Alves
ydo

(usa Lubuntu)

Enviado em 27/01/2019 - 13:14h

Escreva uma função que calcula o comprimento L de uma curva definida por
uma função polinomial p(x) de grau n no intervalo [x0 x1]. Os valores dos
coeficientes a0 até an, bem como os limites do intervalo x0, x1 e a precisão e, devem ser fornecidos pelo usuário no programa principal e passados como
parâmetros da função. Seu programa deve ser capaz de lidar com polinômios
de qualquer grau. Para isso utilize ponteiros e alocação dinâmica.


  


2. Re: Função matemática

Ayslan Alves
ydo

(usa Lubuntu)

Enviado em 27/01/2019 - 17:30h

O problema é que o programa tem que funcionar com polinômios de qualquer grau , por isso tem que usar ponteiros e alocação dinâmica de memória.


3. Código

Ayslan Alves
ydo

(usa Lubuntu)

Enviado em 30/01/2019 - 17:00h

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

float calc_comp(float *, float, float, int );

int main(){

int n, i;
float *coef, x0, x1, comp_curva;

printf("Digite os intervalos x0 e x1: \n");
scanf("%f %f", &x0, &x1);
printf("Digite o grau do polinomio: \n");
scanf("%d", &n);

coef = (float *) malloc((n+1)*sizeof(float));//alocando dinamic. um vetor de reais tam n+1

for(i=0; i<=n; i++){
printf("Entre com o coeficiente de grau %d do polinomio: \n", i);
scanf("%f", &coef[i]);
}

comp_curva = calc_comp(coef, x0, x1, n);

printf("O comprimento da curva eh: %.3f\n\n", comp_curva);

free(coef);

return 0;
}

float calc_comp(float *coef, float x0, float x1, int n){

int i, m;
float *grau, x, y, fx0=0, fx1=0, L;

printf("Digite o numero de subintervalos: \n");
scanf("%d", &m);

x = (x1 - x0)/m;
fx0 += coef[0];
fx1 += coef[0];

grau = (int *) malloc(n*sizeof(int));
for(i=1; i<=n; i++){
grau[i-1] = i;
}

for(i=0; i<n; i++){
fx0 += pow(x0,grau[i]) * coef[i+1];
fx1 += pow(x1,grau[i]) * coef[i+1];
}

y = (fx1 - fx0);

L = sqrt(pow(x,2) + pow(y,2));

free(grau);

return L;
}

Fiz isto até agora, só que não está dando certo


4. Função matemática

Ayslan Alves
ydo

(usa Lubuntu)

Enviado em 30/01/2019 - 21:43h

Até aí está dando certo só que preciso usar a precisão que foi pedido no exercício, sei que tem que fazer um while(fabs(x1-x0)>preciso){} mas não sei como 'encaixa-lo' no código.



5. Re: Função matemática

Levi Gomes
Levi linux

(usa Arch Linux)

Enviado em 30/01/2019 - 22:02h

Creio que seria interessante dar uma olhada em comprimentos de arcos. Creio que seja o que você está procurando. Nesse caso, como a função seria polinomial a implementação seria simples.
Boa sorte!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts