Saludos
Hice un programa en C++ para calcular la ecuacion de la recta y mi vision del
programa fue solicitar los cuatro valores de x1,x2,y1, y2 para calcular la
pendiente y segun la formula y2=m*x2 + b obtener el resultado.
Claro me di cuenta al principio que si usaba esta formula:
cout << "La ecuacion de la recta es y = " <<
m << "x + "<< (m*(-x1)+y1) << endl;
La ecuacion nunca iba a entender el cambio de signo si y1 era positivo o
negativo segun la formula (y2-y1)=m*(x2-x1) al tener que despejar para obtener
y2=m*(x2 - x1) + y1. Luego utilice esta logica
else
{
m=(y2-y1)/(x2-x1);
//comparo si x1 es mayor que 0 o positivo para manejar el
cambio de signo x2-x1 al multiplicar signos
if (x1>0)
{
// si es positivo al multiplicarse en (x2-x1) cambiara a negativo y lo
almaceno en nueva variable p
p=x1*(-1);
}
if (x1<0)
{
// si es negativo al multiplicarse en (x2-(-x1)) cambiara a positivo y lo
almaceno en nueva variable p
p=x1;
}
if (y1>0)
{
// si es positivo, no lo afecta el sigono de (y2-y1) y al pasar a la
derecha de (y2-y1) cambiara a positivo y lo almaceno en nueva variable q
q=y1;
}
else
{
// si es negativo, su signo cambia a positivo en (y2-(-y1)) al
pasar a la derecha de (y2-y1) cambiara a negativo y lo almaceno en nueva
variable q
q=y1*(-1);
}
cout << "La ecuacion de la recta es y = " <<
m << "x + " << ((m)*p)+q << endl;
Pero cuando y1 es igual a un numero negativo el componente b de la ecuacion
y2=m*x2 + b no me da el resultado correcto. Donde estoy cometiendo el error??
Agradezco cualquier ayuda
El programa completo es:
#include <iostream>
using namespace std;
int main()
{
double x1,x2,y1,y2,m;
double p, q;
cout << "Ingrese coordenada en x1 : ";
cin >> x1;
cout << "Ingrese coordenada en x2 :";
cin >> x2;
cout << "Ingrese coordenada en y1 :";
cin >> y1;
cout << "Ingrese coordenada en y2 :";
cin >> y2;
if ( x1==x2)
{
cout << "No existe ecuacion ";
}
else
{
m=(y2-y1)/(x2-x1);
//comparo si x1 es mayor que 0 o positivo para manejar el
cambio de signo x2-x1 al multiplicar signos
if (x1>0)
{
// si es positivo al multiplicarse en (x2-x1) cambiara a negativo y lo
almaceno en nueva variable p
p=x1*(-1);
}
if (x1<0)
{
// si es negativo al multiplicarse en (x2-(-x1)) cambiara a positivo y lo
almaceno en nueva variable p
p=x1;
}
if (y1>0)
{
// si es positivo, no lo afecta el sigono de (y2-y1) y al pasar a la
derecha de (y2-y1) cambiara a positivo y lo almaceno en nueva variable q
q=y1;
}
else
{
// si es negativo, su signo cambia a positivo en (y2-(-y1)) al
pasar a la derecha de (y2-y1) cambiara a negativo y lo almaceno en nueva
variable q
q=y1*(-1);
}
cout << "La ecuacion de la recta es y = " <<
m << "x + " << ((m)*p)+q << endl;
cin.get();
}
cin.get();
return 0;
}
Agradeceria cualquier ayuda para ver donde esta mi error
Puedes publicar el código? Y ya que estar metele las etiquetas GeSHi.
este es el codigo completo pero no funciona si x1 es negativo, me da cualquier error. Donde me estoy equivocando
#include <iostream>
using namespace std;
int main()
{
double x1,x2,y1,y2,m;
double p, q;
cout << "Ingrese coordenada en x1 : ";
cin >> x1;
cout << "Ingrese coordenada en x2 :";
cin >> x2;
cout << "Ingrese coordenada en y1 :";
cin >> y1;
cout << "Ingrese coordenada en y2 :";
cin >> y2;
if ( x1==x2)
{
cout << "No existe ecuacion ";
}
else
{
m=(y2-y1)/(x2-x1);
//comparo si x1 es mayor que 0 o positivo para manejar el cambio de signo x2-x1 al multiplicar signos
if (x1>0)
{
// si es positivo al multiplicarse en (x2-x1) cambiara a negativo y lo almaceno en nueva variable p
p=x1*(-1);
}
if (x1<0)
{
// si es negativo al multiplicarse en (x2-(-x1)) cambiara a positivo y lo almaceno en nueva variable p
p=x1;
}
if (y1>0)
{
// si es positivo, no lo afecta el sigono de (y2-y1) y al pasar a la derecha de (y2-y1) cambiara a positivo y lo almaceno en nueva variable q
q=y1;
}
else
{
// si es negativo, su signo cambia a positivo en (y2-(-y1)) al pasar a la derecha de (y2-y1) cambiara a negativo y lo almaceno en nueva variable q
q=y1*(-1);
}
cout << "La ecuacion de la recta es y = " <<
m << "x + " << ((m)*p)+q << endl;
cin.get();
}
cin.get();
return 0;
}
Cita de: chucho11028 en 24 Febrero 2013, 22:43 PM
este es el codigo completo pero no funciona si x1 es negativo, me da cualquier error. Donde me estoy equivocando
La forma más simple es:y-y1=m(x-x1)
y=mx+y1-mx1
Y si x1=x2 o y1=y2 hay ecuación:
#include <iostream>
using namespace std;
int main(){
double x1,x2,y1,y2,m,p,q;
cout << "Ingrese coordenada en x1 : ";
cin >> x1;
cout << "Ingrese coordenada en y1 :";
cin >> y1;
cout << "Ingrese coordenada en x2 :";
cin >> x2;
cout << "Ingrese coordenada en y2 :";
cin >> y2;
if ( x1==x2)
cout << "La ecuacion es: x="<<x1 <<endl;
else if ( y1==y2)
cout << "La ecuacion es: y="<<y1 <<endl;
else {
m=(y2-y1)/(x2-x1);
cout << "La ecuacion de la recta es y = " << m << "x + (" << -m*x1+y1 <<")" <<endl;
cin.get();
}
cin.get();
return 0;
}
Saluditos!. ... (http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
Saludos
Gracias por el apoyo pero si x1==x2 la pendiente no es posible ya que no puede dividir por 0.
Por otro lado la formula m << "x + (" << -m*x1+y1 <<")" tiene el mismo problema que la mia ya que si y1 es negativo pasa como negativo al lado derecho debido a que multiplica el signo (y-(-y1)) pero en tu formula se mantiene como positivo segun -m*x1+y1.
Me puedes ayudar con esto? agradecido
Cita de: chucho11028 en 25 Febrero 2013, 03:33 AM
Saludos
Gracias por el apoyo pero si x1==x2 la pendiente no es posible ya que no puede dividir por 0.
Por otro lado la formula m << "x + (" << -m*x1+y1 <<")" tiene el mismo problema que la mia ya que si y1 es negativo pasa como negativo al lado derecho debido a que multiplica el signo (y-(-y1)) pero en tu formula se mantiene como positivo segun -m*x1+y1.
Me puedes ayudar con esto? agradecido
* Si x1==x2 la pendiente se considera infinita. Se trata de une recta vertical de ecuación x=constante, no se le aplica la fórmula de la pendiente. Ejecuta el código y verás que sale correcto.
* El que y1 sea negativo no tiene significado especial a la hora de obtener la ecuación de la recta. Por ejemplo:
Ingrese coordenada en x1 : 2
Ingrese coordenada en y1 :-3
Ingrese coordenada en x2 :3
Ingrese coordenada en y2 :6
La ecuacion de la recta es y = 9x + (-21)
Otra cosa es que tú quieras con convertir + (-21) en -21:#include <iostream>
using namespace std;
int main(){
double x1,x2,y1,y2,m,p,q;
cout << "Ingrese coordenada en x1 : ";
cin >> x1;
cout << "Ingrese coordenada en y1 :";
cin >> y1;
cout << "Ingrese coordenada en x2 :";
cin >> x2;
cout << "Ingrese coordenada en y2 :";
cin >> y2;
if ( x1==x2)
cout << "La ecuacion es: x="<<x1 <<endl;
else if ( y1==y2)
cout << "La ecuacion es: y="<<y1 <<endl;
else {
m=(y2-y1)/(x2-x1);
if ( -m*x1+y1<0)
cout << "La ecuacion de la recta es y = " << m << " x " << -m*x1+y1 <<"" <<endl;
else
cout << "La ecuacion de la recta es y = " << m << " x + " << -m*x1+y1 <<"" <<endl;
cin.get();
}
cin.get();
return 0;
}
En cuyo caso obtendrás:
Ingrese coordenada en x1 : 2
Ingrese coordenada en y1 :-3
Ingrese coordenada en x2 :3
Ingrese coordenada en y2 :6
La ecuacion de la recta es y = 9x -21
Saluditos!. ... (http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
P.D: Repasa lo de ecuaciones de la recta. ;)
@leosansan te falta hacer el gráfico de la solución en Opengl y tu explicación sería lo más ;D
http://recursostic.educacion.es/secundaria/edad/4esomatematicasB/ecuaciones/impresos/quincena4.pdf
Cita de: 85 en 5 Marzo 2013, 04:53 AM
@leosansan te falta hacer el gráfico de la solución en Opengl y tu explicación sería lo más ;D
Soy más de usar el programa Mathematica para esas cosas, como ejemplo un cono dentro de un paraboloide:
(http://i1280.photobucket.com/albums/a497/leosansan/cono_paraboloide_zpsbc3a38ac.jpg)
Cuando me "entren" ganas me pondré a lo de la recta....(http://st.forocoches.com/foro/images/smilies/aaaaa.gif)
Hasta entonces a disfrutar de la anterior imagen.
Saluditos!....(http://st.forocoches.com/foro/images/smilies/simba2.gif)
(http://i1280.photobucket.com/albums/a497/leosansan/recta_zps6b949cd1.jpg)