如何使用2个数组的数据点计算最大斜率:(说明中的说明)

时间:2015-11-29 20:10:35

标签: c#

我的代码到目前为止: 我有三个数组,但只需要前两个数组来计算这个项目的斜率。我在一个文件中读到了3列和'n'行的格式。我已将文件拆分为三个列出的列,现在我需要计算最大绝对值斜率。要扩展,比如我有2个双数组{1,2,3,4,5,6}和{7,8,9,10,11,12},那么数据点是(1,7),(2) ,8)等我们将得到6个数据点,我需要得到它们之间的斜率。最大的绝对值斜率是我们需要返回的斜率。

static void Main(string[] args) 
{ 
string file1 = System.IO.File.ReadAllText(@"C:\file1.txt");

List<double> Array1 = new List<double>();
List<double> Array2 = new List<double>();
List<double> Array3 = new List<double>();

IEnumerable<string> lines = File.ReadLines(@"C:\File1.txt");

foreach (string line in lines)
{
    string[] columns = line.Split(',');

    if (columns.Length != 3)
    {
        continue; // skips this line
    }

    Array1.Add(Convert.ToDouble(columns[0]));
    Array2.Add(Convert.ToDouble(columns[1]));
    Array3.Add(Convert.ToDouble(columns[2]));
}

static double GreatestSlope(double[] x, double[] y)
{
int size = x.length; 
double ret = 0.0;
for( int i = 0; i < size; i++ )
{
    for( int j = i+1; j < size; j++ )
    {
        double slope = (y[j]-y[i])/(x[j]-x[i]);
        if( slope > ret )
            {
             ret = slope;
             Console.WriteLine(i);
             Console.WriteLine(j);
    }
}
return ret;
}

1 个答案:

答案 0 :(得分:0)

我假设斜率是指几何坡度。在这种情况下,我们可以循环遍历所有可能性。因为A和B之间的斜率与B和A之间的斜率相同,所以通过使内环仅从i+1到结尾,可以使代码更有效。

static double GreatestSlope(double[] x, double[] y)
{
    int size = x.length; // For security, Math.Min(x.length,y.length) would be better.
    double ret = 0.0;
    for( int i = 0; i < size; i++ )
    {
        for( int j = i+1; j < size; j++ )
        {
            double slope = (y[j]-y[i])/(x[j]-x[i]);
            if( slope > ret )
                ret = slope;
        }
    }
    return ret;
}