Esempio n. 1
0
		public Proyeccion()
		{
			mMatriz = new Matriz(3, 4);

			mMatriz.EstablecerValoresPorFila(0, 1, 0, 0, 0);
			mMatriz.EstablecerValoresPorFila(1, 0, 1, 0, 0);
			mMatriz.EstablecerValoresPorFila(2, 0, 0, 0, 1);
		}
Esempio n. 2
0
		public static Proyeccion ProyeccionIsometrica()
		{
			Matriz Matriz = new Matriz(3, 4);

			Matriz.EstablecerValoresPorFila(0, Math.Cos(Math.PI / 6), -Math.Cos(Math.PI / 6), 0, 0);
			Matriz.EstablecerValoresPorFila(1, -Math.Sin(Math.PI / 6), -Math.Sin(Math.PI / 6), 1, 0);
			Matriz.EstablecerValoresPorFila(2, 0, 0, 0, 1);

			return new Proyeccion(Matriz);
		}
Esempio n. 3
0
		public static Proyeccion ProyeccionParalela()
		{
			Matriz Matriz = new Matriz(3, 4);

			Matriz.EstablecerValoresPorFila(0, 1, 0, 0, 0);
			Matriz.EstablecerValoresPorFila(1, 0, 1, 0, 0);
			Matriz.EstablecerValoresPorFila(2, 0, 0, 0, 1);

			return new Proyeccion(Matriz);
		}
		public SistemaEcuaciones(params Ecuacion[] ValEcuaciones)
		{
			double[] Sols = null;
			double DetA = 0;
			int[] Columnas = null;
			Matriz Mat = null;
			Matriz MatOr = null;

			mEcuaciones = ValEcuaciones;
			mNumeroIncognitas = 0;
			mEsHomogeneo = TestHomogeneidad();

			for (int i = 0; i <= mEcuaciones.GetUpperBound(0); i++) {
				if (mNumeroIncognitas < mEcuaciones[i].NumeroVariables)
					mNumeroIncognitas = mEcuaciones[i].NumeroVariables;
			}

			if (mEsHomogeneo) {
				mMatrizPrincipal = Matriz.MatrizUnitaria(mNumeroIncognitas + 1);
				mMatrizAmpliada = Matriz.MatrizUnitaria(mNumeroIncognitas + 1);
				mRangoMatrizPrincipal = 0;
				mRangoMatrizAmpliada = 0;

				Sols = new double[mNumeroIncognitas];

				mSolucion = new SolucionSistema(Sols);
			} else {
				mMatrizAmpliada = new Matriz(mEcuaciones.GetUpperBound(0) + 1, mNumeroIncognitas + 1);

				for (int i = 0; i <= mEcuaciones.GetUpperBound(0); i++) {
					mMatrizAmpliada.EstablecerValoresPorFila(i, mEcuaciones[i].Variables);
				}

				mMatrizPrincipal = Matriz.SubMatrizPorColumna(mMatrizAmpliada, mNumeroIncognitas);

				mRangoMatrizAmpliada = Matriz.Rango(mMatrizAmpliada);
				mRangoMatrizPrincipal = Matriz.Rango(mMatrizPrincipal);

				if ((mRangoMatrizPrincipal == mRangoMatrizAmpliada)) {
					if (mRangoMatrizAmpliada == mNumeroIncognitas) {
						//RESOLUCION POR REGLA DE CRAMER:

						Sols = new double[mNumeroIncognitas];
						Columnas = new int[mMatrizPrincipal.Columnas];

						if (mMatrizPrincipal.EsCuadrada) {
							DetA = Matriz.CalculoDeterminante(mMatrizPrincipal);
							MatOr = mMatrizPrincipal.Copia();
						} else {
							MatOr = Matriz.SubMatrizPorTamaño(mMatrizPrincipal, mNumeroIncognitas, mNumeroIncognitas);
							DetA = Matriz.CalculoDeterminante(MatOr);
						}

						for (int i = 0; i <= mNumeroIncognitas - 1; i++) {
							Mat = MatOr.Copia();

							Mat.EstablecerValoresPorColumna(i, mMatrizAmpliada.ObtenerColumna(mNumeroIncognitas));

							Sols[i] = Matriz.CalculoDeterminante(Mat) / DetA;
						}

						mSolucion = new SolucionSistema(Sols);
					} else {
						mSolucion = new SolucionSistema(TipoSolucionSistema.SistemaCompatibleIndeterminado);
					}
				} else {
					mSolucion = new SolucionSistema(TipoSolucionSistema.SistemaIncompatible);
				}
			}
		}