C# 如何使用两个阵列的数据点计算最大斜率:(说明中的说明)

C# 如何使用两个阵列的数据点计算最大斜率:(说明中的说明),c#,C#,到目前为止,我的代码是: 我有三个数组,但只需要前两个来计算这个项目的坡度。我已读入一个文件,其格式为3列和“n”行。我已经将文件拆分为三列,现在我需要计算最大绝对值斜率。为了扩展,假设我有两个双倍数组{1,2,3,4,5,6}和{7,8,9,10,11,12},那么数据点是(1,7),(2,8)等等。我们将得到6个数据点,我需要得到它们之间的斜率。最大绝对值斜率就是我们需要返回的斜率 static void Main(string[] args) { string file1 = Syst

到目前为止,我的代码是: 我有三个数组,但只需要前两个来计算这个项目的坡度。我已读入一个文件,其格式为3列和“n”行。我已经将文件拆分为三列,现在我需要计算最大绝对值斜率。为了扩展,假设我有两个双倍数组{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;
}
static void Main(字符串[]args)
{ 
字符串file1=System.IO.File.ReadAllText(@“C:\file1.txt”);
列表数组1=新列表();
List Array2=新列表();
列表数组3=新列表();
IEnumerable lines=File.ReadLines(@“C:\File1.txt”);
foreach(行中的字符串行)
{
string[]columns=line.Split(',');
如果(columns.Length!=3)
{
continue;//跳过这一行
}
Array1.Add(Convert.ToDouble(列[0]);
Array2.Add(Convert.ToDouble(第[1]列));
Array3.Add(Convert.ToDouble(第[2]列));
}
静态双最大斜率(双[]x,双[]y)
{
int size=x.length;
双ret=0.0;
对于(int i=0;i后退)
{
ret=坡度;
控制台写入线(i);
控制台写入线(j);
}
}
返回ret;
}

我假设斜率是指几何斜率。在这种情况下,我们可以循环所有的可能性。因为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;
}
静态双最大斜率(双[]x,双[]y)
{
int size=x.length;//为了安全起见,Math.Min(x.length,y.length)会更好。
双ret=0.0;
对于(int i=0;i后退)
ret=坡度;
}
}
返回ret;
}

我假设斜率是指几何斜率。在这种情况下,我们可以循环所有的可能性。因为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;
}
静态双最大斜率(双[]x,双[]y)
{
int size=x.length;//为了安全起见,Math.Min(x.length,y.length)会更好。
双ret=0.0;
对于(int i=0;i后退)
ret=坡度;
}
}
返回ret;
}

是否需要两个double[]作为参数
GreatestSlope
是否需要两个double[]作为参数?我的错误,我将其编辑为原始代码,谢谢。是否需要两个double[]作为参数?我的错误,我把它编辑成了原始代码谢谢。非常感谢。为什么j=I+1而不是j=I?@TheNovice913然后我们将计算两个相同点之间的斜率
(y[I]-y[I])/(x[I]-x[I])
,给出0.0/0.0,这就给出了
N/A
。这不会影响结果,因为任何带有
N/A
的布尔运算都返回false。啊,是的。现在我明白了。谢谢你教我这个。顺便说一句,我运行了代码,并在主控制台中说。WriteLine(GreatestSlope(Array1,Array2));我得到的最大斜率是无穷大!@TheNovice913您可能有两个坐标共享同一个
x
坐标,这个答案确实是正确的。@TheNovice913而且,您今天似乎刚刚创建了您的帐户。欢迎这样做!如果您觉得答案足够,您可以通过单击复选标记ne来接受它xt到向上/向下投票按钮。非常感谢。为什么j=i+1而不是j=i?@TheNovice913然后我们将计算两个相同点之间的斜率
(y[i]-y[i])/(x[i]-x[i])
,给出0.0/0.0,这就给出了
N/A
。这不会影响结果,因为任何带有
N/A
的布尔运算都返回false。啊,是的。现在我明白了。谢谢你教我这个。顺便说一句,我运行了代码,并在主控制台中说。WriteLine(GreatestSlope(Array1,Array2));我得到的最大斜率是无穷大!@TheNovice913您可能有两个坐标共享同一个
x
坐标,这个答案确实是正确的。@TheNovice913而且,您今天似乎刚刚创建了您的帐户。欢迎这样做!如果您觉得答案足够,您可以通过单击复选标记ne来接受它单击“向上/向下投票”按钮。