C# Bernstein算法-未处理的异常用户
我试图在C#中实现Bernstein多项式算法 算法如下: k从0变为n,而n可以从0变为无穷大(在我的代码中,n从0变为3) 在我的代码中,n被命名为p; 在我的代码中,t被命名为i-1 这是我的代码:C# Bernstein算法-未处理的异常用户,c#,C#,我试图在C#中实现Bernstein多项式算法 算法如下: k从0变为n,而n可以从0变为无穷大(在我的代码中,n从0变为3) 在我的代码中,n被命名为p; 在我的代码中,t被命名为i-1 这是我的代码: double nchoosek = 1; double ti = 0; // Change of basis double tf = 1; // Change of basis double tt; doub
double nchoosek = 1;
double ti = 0; // Change of basis
double tf = 1; // Change of basis
double tt;
double Bernst;
List<double> Bernste = new List<double>();
List<List<double>> Bernstein = new List<List<double>>();
for (int i =1; i <= p+1; i++)
{
nchoosek *= p - (p - i);
nchoosek /= i;
for (double t = 0; t < 1; t += 0.05)
{
tt = (t - ti) / (tf - ti); // Change of basis
Bernst = nchoosek * Math.Pow((1 - tt), (p - (i-1))) * Math.Pow((tt), (i-1));
Bernste.Add(Bernst);
}
Bernstein[i] = Bernste;
}
double-nchoosek=1;
双ti=0;//基础变更
双tf=1;//基础变更
双tt;
双伯恩斯特;
List Bernste=新列表();
List Bernstein=新列表();
对于(inti=1;i这是因为您试图通过索引访问Bernstein
列表中的元素(我认为您正在尝试添加一个元素)
只需使用添加:
Bernstein.Add(Bernste);
就像你以前写过几行一样
重要提示:在内部循环之前,您需要再次初始化Bernste
列表,这样您就不会反复添加其他元素:
for (int i =1; i <= p+1; i++)
{
nchoosek *= p - (p - i);
nchoosek /= i;
Bernste = new List<double>();
for (double t = 0; t < 1; t += 0.05)
{
tt = (t - ti) / (tf - ti); // Change of basis
Bernst = nchoosek * Math.Pow((1 - tt), (p - (i-1))) * Math.Pow((tt), (i-1));
Bernste.Add(Bernst);
}
Bernstein.Add(Bernste);
}
for(inti=1;i这是因为您试图通过索引访问Bernstein
列表中的元素(我认为您正在尝试添加元素)
只需使用添加:
Bernstein.Add(Bernste);
就像你以前写过几行一样
重要提示:在内部循环之前,您需要再次初始化Bernste
列表,这样您就不会反复添加其他元素:
for (int i =1; i <= p+1; i++)
{
nchoosek *= p - (p - i);
nchoosek /= i;
Bernste = new List<double>();
for (double t = 0; t < 1; t += 0.05)
{
tt = (t - ti) / (tf - ti); // Change of basis
Bernst = nchoosek * Math.Pow((1 - tt), (p - (i-1))) * Math.Pow((tt), (i-1));
Bernste.Add(Bernst);
}
Bernstein.Add(Bernste);
}
for(int i=1;i)您的Bernstein
集合完全为空。因此您无法对其执行[i]
。(p-(i-1)最终会变成一个大负数。因此,您的Bernstein
集合完全为空。因此您无法对其执行[i]
。(p-(i-1)最终会变成一个大的负数。所以你会得到一个非常大的数并溢出。嗨@MichałTurczyn谢谢你的澄清。我不明白的是如何将Bernste值放入Bernstein的不同列表中。我的意思是..让我们假设我的代码中有p=3。在第一次迭代I=1之后,我不想o将在Bernste中计算的所有值放入Bernstein[1]。当迭代i=2发生时,我想将在Bernstein[2]中计算的所有值放入Bernstein[2],依此类推。@RobertoRuggeri只需在Bernstein列表上使用Add方法,如建议的那样:)运行它并亲自查看:)如果我添加Bernste=new list();在您建议我执行的操作中,我的最终Bernstein列表为空。如果我不添加它并使用。在Bernstein列表中添加,我将收到4个具有相同值的列表:(Hi@MichałTurczyn感谢您的澄清。我不明白的是如何将Bernste值放入不同的Bernstein列表中。我的意思是……假设我的代码中有p=3。在I=1的第一次迭代后,我想将Bernste中计算的所有值放入Bernstein[1]。当迭代i=2发生时,我想将在Bernste中计算的所有值放入Bernstein[2]中,依此类推。@RobertoRuggeri只需在Bernstein列表上使用Add方法,如建议的:)运行它并亲自查看:)如果我添加Bernste=new list();在您建议我执行的操作中,我的最终Bernstein列表为空。如果我不添加它并使用。在Bernstein列表中添加,我将收到4个具有相同值的列表:(