Jump to content
killzone3

Sistema de 2 incognitas

Recommended Posts

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?

Share this post


Link to post
Share on other sites
killzone3

Pois isso sei eu,mas preciso para um trabalho que estou a fazer.

Não podes dar umas dicas?

Share this post


Link to post
Share on other sites
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.

  • Vote 1

Share this post


Link to post
Share on other sites
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!

Share this post


Link to post
Share on other sites
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;

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

Share this post


Link to post
Share on other sites
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!

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.