Está en la página 1de 6

PROFE YO HABIA SACADO 100

Victor Manuel Huerta Garcia


2897423
28 de marzo de 2020
Métodos Numéricos
Evidencia 2

using System;
using System.Collections.Generic;
using System.Linq;
namespace Evidencia
{
public class MainClass
{
public static void Main(string[] args)
{

double pivote;
double factor;

double[,] jacobiana = new double[7, 3]; double[,] matriz = new double[3, 4];

double[] voltaje = { -8, 11, 23, 29, 35, 10, 2 }; double[] tiempo = { 1, 3, 4, 5, 8, 10,
11 };

System.Console.WriteLine("Temperaturas en Nueva York");


System.Console.WriteLine(" ----------------------------");
System.Console.WriteLine("|Ene Mar Abr May Ago Oct Nov |");
System.Console.WriteLine("|-8 11 23 29 35 10 2 |");
System.Console.WriteLine(" ----------------------------");
System.Console.WriteLine(" ");
System.Console.WriteLine("Temperaturas en Santiago de Chile: ");
System.Console.WriteLine(" ----------------------------");
System.Console.WriteLine("|Ene Feb Abr Jun Ago Oct Dec |");
System.Console.WriteLine("|25 22 16 7 -2 13 21 |");
System.Console.WriteLine(" ----------------------------");
System.Console.WriteLine(" ");
System.Console.WriteLine("Se aplico el metodo de minimos cuadrados en ambas
tablas ");
System.Console.WriteLine("para obtener funciones que describan su
comportamiento. ");
System.Console.WriteLine(" ");
System.Console.WriteLine

("_______________________________________________________________________
______ ");
System.Console.WriteLine("Estos son los resultados que obtuvimos: ");
for (int i = 0; i < 7; i = i + 1)
{
jacobiana[i, 0] = tiempo[i] * tiempo[i]; jacobiana[i, 1] = Math.Sin(tiempo[i]);
jacobiana[i, 2] = Math.Exp(tiempo[i] / 10);
}

for (int i = 0; i < 3; i = i + 1) for (int j = 0; j < 3; j = j + 1) for (int k = 0; k < 7; k = k + 1)


matriz[i, j] = matriz[i, j] +
jacobiana[k, i] * jacobiana[k, j];
for (int i = 0; i < 3; i = i + 1) for (int j = 0; j < 1; j = j + 1) for (int k = 0; k < 7; k = k + 1)
matriz[i, 3] = matriz[i, 3] -
voltaje[k] * jacobiana[k, i];

for (int renglon = 0; renglon < 3; renglon = renglon + 1)


{
pivote = matriz[renglon, renglon]; for (int columna = 0; columna < 4; columna =
columna + 1)
matriz[renglon, columna] = matriz[renglon, columna] / pivote;
for (int renglon_elimi = 0; renglon_elimi < 3;
renglon_elimi = renglon_elimi + 1)
if (renglon_elimi != renglon)
{
factor = matriz[renglon_elimi, renglon];
for (int columna_elimi = 0; columna_elimi <
4;
columna_elimi = columna_elimi + 1)
matriz[renglon_elimi, columna_elimi] = matriz[renglon_elimi,
columna_elimi] - factor * matriz[renglon, columna_elimi];
}
}

Console.WriteLine(matriz[0, 3] + " " + matriz[1, 3] + "" + matriz[2, 3] + " ");

double pivote1, factor1;


double[,] jacobiana1 = new double[7, 3]; double[,] matriz1 = new double[3, 4];

double[] voltaje1 = { 25, 22, 16, 7, -2, 13, 21 }; double[] tiempo1 = { 1, 2, 4, 6, 8, 10,
12 };
for (int i = 0; i < 7; i = i + 1)
{
jacobiana1[i, 0] = tiempo1[i] * tiempo1[i]; jacobiana1[i, 1] = Math.Sin(tiempo1[i]);
jacobiana1[i, 2] = Math.Exp(tiempo1[i] / 10);
}

for (int i = 0; i < 3; i = i + 1) for (int j = 0; j < 3; j = j + 1) for (int k = 0; k < 7; k = k + 1)


matriz1[i, j] = matriz1[i, j] +
jacobiana1[k, i] * jacobiana1[k, j];
for (int i = 0; i < 3; i = i + 1) for (int j = 0; j < 1; j = j + 1) for (int k = 0; k < 7; k = k + 1)
matriz1[i, 3] = matriz1[i, 3] -
voltaje1[k] * jacobiana1[k, i];

for (int reng = 0; reng < 3; reng = reng + 1)


{
pivote1 = matriz1[reng, reng]; for (int colu = 0; colu < 4; colu = colu + 1)
matriz1[reng, colu] = matriz1[reng, colu] / pivote1;
for (int reng_elimi = 0; reng_elimi < 3; reng_elimi = reng_elimi + 1)
if (reng_elimi != reng)
{
factor1 = matriz1[reng_elimi, reng];
for (int colu_elimi = 0; colu_elimi <
4;
colu_elimi = colu_elimi + 1)
matriz1[reng_elimi, colu_elimi] = matriz1[reng_elimi,
colu_elimi] - factor1 * matriz1[reng, colu_elimi];
}
}

Console.WriteLine(matriz1[0, 3] + " " + matriz1[1, 3] +


" " + matriz1[2, 3] + " ");

Console.WriteLine(" ");
Console.WriteLine("Por lo que las ecuaciones quedarian asi: ");
Console.WriteLine("Nueva York: " + matriz[0, 3] +
"x^2 " + matriz[1, 3] + "x " + matriz[2, 3] + " ");
Console.WriteLine("Santiago de Chile: " + matriz1[0, 3]
+ "x^2 " + matriz1[1, 3] + "x " + matriz1[2, 3] + " ");
System.Console.WriteLine

("_______________________________________________________________________
______ ");
Console.WriteLine("");
Console.WriteLine("Cuando las 2 ciudades tengan la misma temperatura sera: ");
double x = 1, res = -8, res2 = 25;

while (Math.Floor(res) != Math.Floor(res2))


{
res = 0;
res2 = 0;
res = (matriz[0, 3] * Math.Pow(x, 2)) +
(matriz[1, 3] * x) + matriz[2, 3];
res2 = (matriz1[0, 3] * Math.Pow(x, 2)) +
(matriz1[1, 3] * x) + matriz1[2, 3];
x++;
}

Console.WriteLine("<<EL MES " + x + " DEL SIGUIENTE AÑO>>");


System.Console.WriteLine("");
Console.WriteLine("Debido a que el ciclo se repitio " + x + " veces hasta que las
temperaturas");
Console.WriteLine("coincidieran.");

double uno = Math.Floor(matriz[0, 3]), dos =


Math.Floor(matriz[1, 3]), tres = Math.Floor(matriz[2, 3]); double cuatro =
Math.Floor(matriz1[0, 3]), cinco =
Math.Floor(matriz1[1, 3]), seis = Math.Floor(matriz1[2, 3]);

Console.WriteLine("");
Console.WriteLine("Cuando la temperatura sea 0 será: "); Console.WriteLine("(La
raiz define el periodo en meses del siguiente año...)");
Console.WriteLine("________________________________________________
______");
Console.WriteLine("|||NUEVA YORK|||");

double x_nueva, x_vieja, y_nueva, y_vieja, punto_medio, y_media, paso,


variable_criterio;
y_nueva = 1;
x_nueva = 1;
variable_criterio = 0.0001; punto_medio = 0; x_vieja = 0;

paso = 1;

y_vieja = y_nueva;

while (y_nueva * y_vieja > 0)


{
x_vieja = x_nueva; x_nueva = x_vieja + paso;
y_vieja = y_nueva;

}
if (y_nueva == 0)
{
Console.WriteLine("Ya se encontró la raiz en " + x_nueva);
}
while ((Math.Abs(y_nueva) > variable_criterio) &
(Math.Abs(y_vieja)
> variable_criterio))
{
punto_medio = x_vieja + (y_nueva * (x_vieja - x_nueva)
/ (y_vieja - y_nueva));
y_media = uno * x_nueva * x_nueva + dos * x_nueva
+ tres;
if (y_media * y_nueva > 0)
{
x_nueva = punto_medio;
y_nueva = y_media;
}
else
{
x_vieja = punto_medio;
y_vieja = y_media;
}
}
Console.WriteLine("El intervalo en el que está la raíz está entre "
+ x_vieja + " y " + x_nueva);
Console.WriteLine("________________________________________________
______");
Console.WriteLine("|||SANTIAGO DE CHILE|||");

variable_criterio = 0.0001; punto_medio = 0; x_vieja = 0; y_nueva = 0;

y_media = 0;

paso = 1;

y_vieja = y_nueva;

while (y_nueva * y_vieja > 0)


{
x_vieja = x_nueva; x_nueva = x_vieja + paso;
y_vieja = y_nueva;
}
if (y_nueva == 0)
{
Console.WriteLine("Ya se encontró la raiz en " + x_nueva);
}
while ((Math.Abs(y_nueva) > variable_criterio) &
(Math.Abs(y_vieja)
> variable_criterio))
{
punto_medio = x_vieja + (y_nueva * (x_vieja - x_nueva)
/ (y_vieja - y_nueva));
y_media = cuatro * x_nueva * x_nueva + cinco * x_nueva + seis;
if (y_media * y_nueva > 0)
{
x_nueva = punto_medio;
y_nueva = y_media;
}
else
{
x_vieja = punto_medio;
y_vieja = y_media;
}
}
Console.WriteLine("El intervalo en el que está la raíz está entre "
+ x_vieja + " y " + x_nueva);
Console.WriteLine("________________________________________________
______");
Console.ReadLine();
}
}
}

También podría gustarte