C/Visual C - Ayuda programa ecuaciones no lineales en c

 
Vista:
sin imagen de perfil

Ayuda programa ecuaciones no lineales en c

Publicado por Raffaele (1 intervención) el 30/08/2016 20:14:28
Necesito hacer un programa de ecuaciones no lineales en c ++ que resuelva el siguiente sistema de ecuaciones

x^2-y^2=8
x*y= - 3
y el resultado es (x1,y1)= ( 1 , - 3) (x2,y2)= (- 1 , -3)

esto es lo que llevo pero no da el mismo resultado


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include "stdafx.h"
#include<iostream>
#include<math.h>
 
using namespace std;
int main()
{
	int M[1][2],a,b,c;
	double y1,y2,x1,x2;
 
	cout<<" Sistema de Ecuacion no lineal ;"<<endl;
cout<<endl<<" Primera Ecuacion :"<<endl;
cout<<" Ingrese el Primer coeficiente :";                    //sera el coeficiente que en el ejercicio aparece acompañando a la X
cin>> M[0][0];
cout<<endl;
cout<<" Ingrese el Segundo coeficiente :";                   // Sera el coeficiente que acompaña al  Y^2  elevado al cuadrado 
cin>> M[0][1];
cout<<endl;
 
cout<<endl;
cout<<" Ingrese el Termino independiente :";                //Sera el termino independiente despues de el =
cin>>M[0][3];
cout<<endl;
cout<<endl<<" Segunda Ecuacion :"<<endl;
cout<<" Ingrese el Primer coeficiente ;" ;                 //Sera el coeficiente que acompaña al  Y^2  elevado al cuadrado 
cin>> M[1][0];
cout<<endl;
cout<<" Ingrese el segundo coeficiente :" ;                 //sera el coeficiente que en el ejercicio aparece acompañando a la X
cin>>M[1][1];
cout<<endl;
cout<<" Ingrese Termino independiente :" ;                 //Sera el termino independiente
cin>>M[1][2];
cout<<endl;
 
cout<<endl;
 
// Resolviento el procedimiento de sustitucion en las ecuaciones para luego utlizar la resolvente
 
a=(M[0][0]*M[1][0])+M[0][1];
b=M[0][2];
c=(M[0][0]*M[1][1])-4;
 
//resolvente en la ecuacion de segundo grado 
 
y1=(-b+(sqrt(pow(b,2)-(4*a*c))))/(2*a);
y2=(-b-(sqrt(pow(b,2)-(4*a*c))))/(2*a);
 
//sustitucion de resultados en la ecuacion 2
 
x1=(pow (y1,2))+M[1][1];
x2=(pow (y2,2))+M[1][1];
 
 
// Los valores mostradados
 
cout<<" Los valores son :";
cout<<" (x1,y1):" <<" ["<<x1<<","<<y1<<"]"<<endl;
cout<<" (x2,y2):"<<" ["<<x2<<","<<y2<<"]"<<endl;
 
 
 
 
system("pause");
return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda programa ecuaciones no lineales en c

Publicado por Capitan Kirk (97 intervenciones) el 31/08/2016 08:25:08
Para empezar, has declarado una variable M[1][2], de tipo entero. Se tratará de un arreglo bidimensional de 1 fila y 2 columnas.

En C y C++, los índices de un arreglo de N elementos van siempre de 0 a N-1. En tu caso, podrás utilizar únicamente el índice 0 para la primera dimensión, y los índices 0 y 1 para la segunda. O sea, M se compondrá de los elementos M[0][0] y M[0][1]. Tú estás intentando utilizar los elementos M[0][3], M[1][0], M[1][1] y M[1][2], para los cuales no se ha reservado espacio. En C/C++ no hay comprobación del tamaño de los arreglos, por lo que estás leyendo/escribiendo en zonas de memoria que, o no están en uso, o corresponden a otras cosas. Puede que no ocurra nada (aparentemente), o puede provocar problemas graves difíciles de rastrear.

Corrige en primer lugar el tema de la dimensión de M. Otra cuestión es el modo de resolver el sistema, ahí no voy a entrar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar