Ir ao conteúdo

Posts recomendados

Postado

Olá, tenho uma questão que se pede para descobrir os valores do coeficiente A e B, entretanto, na formula os valores de A e B não resultam corretamente. Ajuda?

Enunciado da questão: Faça um programa que use uma subrotina para receber como parâmetro dois vetores, contendo valores da coordenada x e valores da coordenada y de pontos no plano cartesiano. A subrotina deve calcular os coeficientes a e b (conforme equações abaixo) de uma reta y=ax+b que é a regressão linear dos pontos.

a=(nΣxy-Σx*Σy)/(nΣx2-(Σx)2      b=(Σy*Σx2-Σx*Σxy)/(nΣx2-(Σx)2)

#include <stdio.h>
#include <math.h>
#define tam 2

void funcaoaeb( int va[], int vb[], int  i);
int main(){
	//declaração de variaveis 
	
	int va[tam],vb[tam], xa,ya,xb,yb,i;	
	
	//Leitura de x e y para vetor a e b
	printf("Digite valores das cordenadas x e y do vetor A: \n");
		for(i=0; i<tam; i++){
			scanf("%d",&va[i]);
		}
	printf("\n Digite valores das coordenadas x e y do vetor B: \n");
		for(i=0; i<tam; i++){
			scanf("%d",&vb[i]);
		}
	
	funcaoaeb( va, vb, i );
	
}
	void funcaoaeb( int va[], int vb[], int i){
	float n,a,b,somax,somay;
		// Solicita um valor n, pois o mesmo se encontra na formula de regressão linear, entretanto no algoritmo não especifica sua função.
		printf("Digite um valor N \n");
		scanf("%d",&n);
		
		somax=(va[0]+vb[0]);
		somay=(va[1]+vb[1]);
		//descobrir valor de A e B 
	a=((((n*(somax*somay)))-((somax)*(somay))) - ((somax*somay)) )/((n*(somax*somax))-((somax*somax)*(somax*somax)));
	b=(((somay)*(somax*somax))-((somax)*(somax*somay))) /((n*(somax*somax))-((somax*somax)*(somax*somax)));
	
		printf("valor de A: %.2f \n", a);
		printf("Valord de B: %.2f",b);
}


 

Postado

N é o a quantidade de pontos. No seu caso, você fixou como 2 (TAM).

Σxy (somatório do produto) não é a mesa coisa que Σx*Σy (produto do somatório), assim como Σx2 (soma dos quadrados) não é igual a (Σx)2 (quadrado da soma).

Vai precisar criar mais variáveis auxiliares.

Alem disso o problema pede que você leia uma série de coordenadas x e y. Acho que você deveria primeiro ler o valor de N e depois criar dois vetores x e y:

int n=0, i;

printf("Digite um valor N \n");
scanf("%d",&n);		

float x[n],y[n];	
	
	//Leitura de x e y
printf("Digite valores das cordenadas x e y: \n");
	for(i=0; i<n; i++){
			scanf("%d %d",&x[i], &y[i]);
	}

A partir desse array de coordenadas x e y você calcula a e b . Ex.:

float somax = 0, somay = 0; somaxy = 0; somax2 =0;
for (int i = 0; i< n; i++) {
	somax+=x[i];
    somay+=y[i];
    somaxy = x[i]*y[i];
    somax2 = x[i]*x[i];
}

 Veja se consegue implementa o resto.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!