Ir para o conteúdo
killzone3

Sistema de 2 incognitas

Mensagens Recomendadas

killzone3    0
killzone3

boas pessoal,

Queria fazer um código em C,para fazer este tipo de equações com duas incognitas:

a=45+5x

a=50-4x

Como daria para fazer?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    27
pedrotuga

Para resolveres esse tipo de problemas precisas de uma biblioteca (há quem chame motor) de calculo simbólico. Isto é uma área avançada, o tipo de programação a que deves estar habituado com variáveis numéricas e fórumlas simples permite-te encontrar soluções aproximadas só.

Se o num exercício em que te pedem para resolver um sistema, a respota correcta é por exemplo x=1 e y=1/3, tu colocas x=1 e y=0.33 tens o exercício mal.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    96
pmg

Usa matrizes para especificar o problema.

Depois, com multiplicação e inversão de matrizes, facilmente chegas ao resultado.

http://www.mathsisfun.com/algebra/systems-linear-equations-matrices.html


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
killzone3    0
killzone3

Pois por matriz é a melhor maneira de resolver o problema,mas ao pesquisar encontrei já um código que faz o que quero,mas agora preciso é de implementar,preciso saber como posso colocar o valores para calcular..

Como posso colocar os valores para o programa calcular o sistema?

Neste site mostra como o programa funciona:

http://computingforbeginners.blogspot.pt/2012/12/solving-linear-equations-using-gauss.html

A primeira parte do programa não é necessária porque eu já sei que é um sistema de equaçoes de 2 incognitas,mas eu agora não sei como vou dar os dados ao programa sem ser pelas perguntas e scanfs.

codigo:

// Compiled with Code::Blocks 10.05 over Windows 7
#include<stdio.h>
#define MAX 10
int lcm(int x,int y);
int main()
{
int i,j,k,r,c,det=1,l,d1,d2,fl=0,count;
float a[MAX][MAX],b[MAX][MAX],p[MAX],s;
printf("\nEnter the number of unknown Variables: ");
scanf("%d",&r);
printf("\nEnter the number of Equations: ");
scanf("%d",&c);
if(r==c)
{
 printf("\nEnter the Elements of the Coefficient Matrix:\n");
 for(i=0;i<r;i++)
 {
	 for(j=0;j<c;j++)
	 {
		 scanf("%f",&a[i][j]);
	 }
 }
 printf("\nEnter the Elements of the Product Matrix:\n");
 for(i=0;i<r;i++)
 {
	 scanf("%f",&a[i][r]);
	 p[i]=0.0;
 }
 printf("\n	 The Equations are\n");
 printf("##############################\n");
 for(i=0;i<r;i++)
 {
 for(j=0;j<=r;j++)
 {
	 if(j<r)
	 {
	 if(a[i][j]==1)
	 {
		 printf("X%d",j+1);
	 }
	 else
	 {
		 printf("%.0fX%d",a[i][j],j+1);
	 }
	 }
	 if(j<r-1)
	 {
	 printf(" + ");
	 }
	 if(j==r)
	 {
	 printf(" = %.0f",a[i][j]);
	 }
 }
 printf("\n");
 }
 for(i=0;i<r-1;i++)
 {
	 for(j=i+1;j<r;j++)
	 {
		 l=lcm(a[i][i],a[j][i]);
		 if(l!=0&&(a[i][i]!=0&&a[j][i]!=0))
		 {
		 l=(a[i][i]*a[j][i])/l;
		 d1=l/a[i][i];
		 d2=l/a[j][i];
		 a[j][i]=0;
		 for(k=i+1;k<=r;k++)
		 {
			 a[j][k]=(d2*a[j][k])-(d1*a[i][k]);
		 }
		 }
	 }
 }
 printf("\nThe Augmented Matrix after Gauss Elimination is:\n");
 for(i=0;i<r;i++)
 {
	 for(j=0;j<r+1;j++)
	 {
		 printf("%.0f\t",a[i][j]);
	 }
	 printf("\n");
 }
 for(i=0;i<r;i++)
 {
	 s=0;
	 if(a[i][i]==0)
	 {
		 fl=1;
	 }
	 for(j=0;j<r;j++)
	 {
		 s=s+a[i][j];
	 }
	 if(s==0)
	 {
		 fl=1;
	 }
 }
 if(fl==0)
 {
	 for(i=r-1;i>=0;i--)
	 {
		 s=a[i][r];
		 count=i;
		 for(j=r-1;j>=count;j--)
		 {
			 s=s-(a[i][j]*p[j]);
		 }
		 count--;
		 if(i==r-1)
		 {
			 p[i]=a[i][r]/a[i][i];
		 }
		 else
		 {
			 p[i]=s/a[i][i];
		 }
	 }
	 printf("\nThe Solution for the Equations\n");
	 printf("##############################\n");
	 for(j=0;j<r;j++)
	 {
		 printf("\nX%d is %f",j+1,p[j]);
	 }
	 printf("\n");
 }
 else
 {
	 printf("\nThe Set of Linear Equations may have a solution!!!");
	 printf("\nPlease Enter the equations in a different order to verify\n\n");
 }
 }
 else
 {
 printf("\nThe Program works only if number of equations and Unknown Variables are equal!!!");
 if(r>c)
 {
	 printf("\nNumber of equations are less than the unknowns, Infinite solutions or no soltion!!!\n\n");
 }
 else
 {
	 printf("\nYou have more equations,Select as many as the number of Unknown Variables and try again!!!\n\n");
 }
 }
 return 0;
}
int lcm(int x,int y)
{
int t;
while (y != 0)
{
 t=y;
 y=x%y;
 x=t;
}
return x;

Editado por killzone3
Falta LP no GeSHI, remove "quote" que aparentaba ser cópia da mensagem

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pmg    96
pmg

... eu agora não como vou dar os dados ao programa sem ser pelas perguntas e scanfs ...

Acho que não percebi :/

Talvez consigas obter um modulo de ESP (Extra Sensorial Perception)?

Segundo creio, a melhor e mais usual maneira de dar dados a programas é através de perguntas e respostas ... mas se arranjares um módulo de ESP, por favor, publica-o!


What have you tried?

Não respondo a dúvidas por PM

A minha bola de cristal está para compor; deve ficar pronta para a semana.

Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código!

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1140
HappyHippyHippo

eu tenho dúvidas se sabes exactamente o que o código faz.

olha que ele só calcula de as soluções de uma matriz, e para isso é necessário comvertar (a lapiz ou de cabeça) as equações para tal.

não foi isso que disseste no teu primeiro post : escrever as equações e calcular os coeficientes ...


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
killzone3    0
killzone3

eu tenho dúvidas se sabes exactamente o que o código faz.

olha que ele só calcula de as soluções de uma matriz, e para isso é necessário comvertar (a lapiz ou de cabeça) as equações para tal.

não foi isso que disseste no teu primeiro post : escrever as equações e calcular os coeficientes ...

Sei,no caso do primeiro post ele calcula o x e o a,eu já testei e dá o resultado correcto.

Eu agora quero dar os valores ao programa, sem ser através das perguntas que o programa faz.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.