C#winform应用程序-生成数字并添加到列表,然后打印到图表

C#winform应用程序-生成数字并添加到列表,然后打印到图表,c#,C#,我在Python中有一个类似的应用程序,但我正在努力用C#实现它,因为我对该语言和语法还不熟悉 我想用一个数学模型来模拟一个物理过程。我将使用WinForm应用程序在图表中绘制数据,过程数据由数学模型模拟生成。此数学模型作为一个单独的类实现,在主“Form1.cs”类中,将使用计时器对象定期调用它,以通过调用Process类的方法检索新值 到目前为止,我的主要问题对于这里有经验的人来说应该是相当基本的;我需要一个方法来接收输入控制信号u(变量,而不是常量),使用它来计算新值(使用列表中的前一个值

我在Python中有一个类似的应用程序,但我正在努力用C#实现它,因为我对该语言和语法还不熟悉

我想用一个数学模型来模拟一个物理过程。我将使用WinForm应用程序在图表中绘制数据,过程数据由数学模型模拟生成。此数学模型作为一个单独的类实现,在主“Form1.cs”类中,将使用计时器对象定期调用它,以通过调用Process类的方法检索新值

到目前为止,我的主要问题对于这里有经验的人来说应该是相当基本的;我需要一个方法来接收输入控制信号u(变量,而不是常量),使用它来计算新值(使用列表中的前一个值),然后向列表中添加新的过程值,并返回用于打印的新列表和要保存到数据库中的新过程值(插入新条目)

以下代码是我目前掌握的:

namespace Process
{
    class Simulator
    {
        public List<double> TemperatureList { get; set; }
        public double ControlSignal { get; set; }

        /// Process parameters:
        static private double Kh = 3.5;
        static private double theta_constant = 23.0;
        static private double theta_delay = 3.0;
        static private double temp_env = 20.0;
        static private double t_step = 1;


        //private double u_signal { get { return ControlSignal; } }

        public double Temperature()
        {
            this.ControlSignal = u_signal;
            public double T_k = TemperatureList[TemperatureList.Count - 1];
            // Euler forward integration (Euler step):
            public double calc = (1 / theta_constant) * ((temp_env) + Kh * u_signal);
            // Calculate next point
            public double T_kp1 = T_k + t_step*calc;

            TemperatureList.Add(T_kp1);

            return T_kp1;

        }
    }
}
命名空间进程
{
类模拟器
{
公共列表温度列表{get;set;}
公共双控信号{get;set;}
///工艺参数:
静态专用双Kh=3.5;
静态私有双θu常数=23.0;
静态专用双θ延迟=3.0;
静态专用双温环境=20.0;
静态专用双t_步长=1;
//专用双u_信号{get{return ControlSignal;}}
公共双温
{
此.ControlSignal=u_信号;
公共双T_k=温度列表[TemperatureList.Count-1];
//欧拉正积分(欧拉步):
公共双计算=(1/θ常数)*((温度环境)+Kh*u信号);
//计算下一点
公共双T_kp1=T_k+T_步长*计算;
添加温度列表(T_kp1);
返回T_kp1;
}
}
}
上面的类方法“Temperature”抛出了一系列错误。有没有关于如何正确构造代码以使其按我需要的方式运行的指针?我的主要想法是,在为类的给定实例调用Temperature方法时,它将计算下一个进程值(Temperature),将其添加到先前计算的温度列表中,然后返回最新的值。该列表还可用于在图表中绘制数据


ControlSignal double也是一个将由另一个类(控制器)更改的变量,因此不确定如何将其用于方法。

问题是方法中变量的范围声明。不能在方法块中使用公共关键字

public double Temperature()
{
    double T_k = TemperatureList.Last();
    double calc = (temp_env + Kh * u_signal) / theta_constant;
    double T_kp1 = T_k + t_step * calc;
    TemperatureList.Add(T_kp1);
    return T_kp1;
}
谢谢,我会尽快阅读C#语法。这修复了它,我也理解如何继续处理剩余的代码:)