C#梯形规则y值之和
我们的老师让我们用C#做一个梯形规则解; 他要我们把它分成三种方法。 以下是到目前为止的问题和我的代码:C#梯形规则y值之和,c#,C#,我们的老师让我们用C#做一个梯形规则解; 他要我们把它分成三种方法。 以下是到目前为止的问题和我的代码: public static double EvaluateQuadraticValue(double x, double a, double b, double c) { double y = a * Math.Pow(x, 2) + b * x + c; Console.WriteLine("The y coordinate for this
public static double EvaluateQuadraticValue(double x, double a, double b, double c)
{
double y = a * Math.Pow(x, 2) + b * x + c;
Console.WriteLine("The y coordinate for this x is: {0}", y);
return y;
}
public static double[] ComputeQuadraticValues(double startX, double increments, int numberOfIntervals, double a, double b, double c)
{
double[] xPoints = new double[numberOfIntervals];
for (int index = 0; index < numberOfIntervals; index++)
{
xPoints[index] = startX;
Console.WriteLine("X{0} is {1}: ",index, xPoints[index]);
EvaluateQuadraticValue(startX, a, b, c);
startX = startX + increments;
}
return xPoints;
}
public static void ApplyTrapeziodalRule(double startX, double endX, int numberOfIntervals, double a, double b, double c)
{
double increments = Convert.ToInt32(Console.ReadLine());
double[] xPoints = ComputeQuadraticValues(startX, increments, numberOfIntervals, a, b, c);
//double[] values = a * Math.Pow(xPoints[i], 2) + b * xPoints[i] + c;
//double y = xPoints.Sum();
/*for (int i = 0; i < numberOfIntervals; i++)
{
}*/
//Console.WriteLine(y + " sum");
}
数值积分是一种特别适合于计算机的技术
计算机应用。在练习中,我们将尝试实施
梯形法则。数学函数的积分是面积
在曲线和x轴之间。如果将该区域划分为小区域
梯形,则积分近似于这些梯形的面积
几何图形
您将尝试在中找到曲线y=6x^2-7x+2下的面积
从x=0.5到x=1.5的区域(注意,您的答案应为
约为1.54,但实际答案为1.5)。面积由以下公式给出:
公式式中,y0和y1是垂直线的高度,即 功能 该问题可分解为以下三个部分:
- 编写一个名为EvaluateQuadricValue(双x,双a,双b,双c)的方法,该方法接受四个双参数:x的值,
x2项的系数,x和
常数该方法将计算并返回y的结果值
由表达式y=ax2+ba+c给出 - 编写一个名为ComputeQuadraticValues(双起点,双增量,int numberofinterval,双a,双b,双c)的方法
接受六个参数:x的起始值、增量和
区间数和二次方程的系数。
此方法将通过调用 上一个问题。将收集方法调用的结果 并作为双数组返回 - 编写一个名为ApplyTrapeziodalRule的方法(双开始、双结束、int numberofinterval、双a、双b、双c)。
前一个问题中描述了参数。此方法调用
前面的方法和处理返回到的双数组
应用公式计算曲线下的面积
public static double EvaluateQuadraticValue(double x, double a, double b, double c)
{
double y = a * Math.Pow(x, 2) + b * x + c;
Console.WriteLine("The y coordinate for this x is: {0}", y);
return y;
}
public static double[] ComputeQuadraticValues(double startX, double increments, int numberOfIntervals, double a, double b, double c)
{
double[] xPoints = new double[numberOfIntervals];
for (int index = 0; index < numberOfIntervals; index++)
{
xPoints[index] = startX;
Console.WriteLine("X{0} is {1}: ",index, xPoints[index]);
EvaluateQuadraticValue(startX, a, b, c);
startX = startX + increments;
}
return xPoints;
}
public static void ApplyTrapeziodalRule(double startX, double endX, int numberOfIntervals, double a, double b, double c)
{
double increments = Convert.ToInt32(Console.ReadLine());
double[] xPoints = ComputeQuadraticValues(startX, increments, numberOfIntervals, a, b, c);
//double[] values = a * Math.Pow(xPoints[i], 2) + b * xPoints[i] + c;
//double y = xPoints.Sum();
/*for (int i = 0; i < numberOfIntervals; i++)
{
}*/
//Console.WriteLine(y + " sum");
}
公共静态双求值平方值(双x,双a,双b,双c)
{
双y=a*Math.Pow(x,2)+b*x+c;
WriteLine(“这个x的y坐标是:{0}”,y);
返回y;
}
公共静态双[]计算平方值(双起点、双增量、整数间隔、双a、双b、双c)
{
double[]xPoints=新的double[numberofinterval];
for(int index=0;index
目前我对第三种方法有困难。
由于我的双数组来自ComputeQuadraticValues()
是x0、x1、x2等。我如何使用这个数组来获得(y0+2*y1+2*y2+…+2*yn+y(n+1))
任何提示或提示都将不胜感激 对我来说,
计算二次值的描述是令人困惑的。如果它返回y0、y1、y2等,而不是如上所述的x0、x1、x2等,则是有意义的
查看您调用的EvaluateQuadraticValue
的ComputeQuadraticValues
代码(计算给定x的y)。但是,计算的y值不会存储在任何位置。您可以将xPoints
重命名为yPoints
,然后将计算出的y值存储在该数组中,然后将其作为函数的结果返回
有了这个改动,你就可以编写一个工作版本的ApplyTrapeziodalRule
我同意@MartinLiversage,并且认为练习中还有其他一些棘手的部分。我会尽力给你一个好答案。让我知道这对你是如何起作用的
这是由6x^2-7x+2
表示的曲线,您需要用蓝色计算面积:
你所做的是一种数值方法,其背后的逻辑是,如果你能将面积分成无限多个点,你就能更准确地得到总面积。添加的点越多,结果越精确
问题是在计算机科学中,无限是不可能的,因为资源是有限的,最终你需要设定一个限制
我已经将10设置为间隔数(N),因此您将得到11个点,并且示例是可读的
现在,您的第一个方法只是帮助器,用于计算ax^2+bx+c形式的函数
public static double EvaluateQuadraticValue(double x, double a, double b, double c)
{
double y = a*Math.Pow(x,2) + b*x + c;
return y;
}
第二个是我认为问题所在。我会这样实现它:
public static double[] ComputeQuadraticValues(double startX, double increments, int numberOfIntervals, double a, double b, double c)
{
//We need numberOfInterval + 1 values
double[] yPoints = new double[numberOfIntervals+1];
for (int index = 0; index <= numberOfIntervals; index++, startX += increments)
{
//evaluate the function and get the y value for this x
yPoints[index] = EvaluateQuadraticValue(startX, a, b, c);
//Console.WriteLine("({0}, {1})", startX, yPoints[index]);
}
return yPoints;
}
public static double[]计算平方值(双起点、双增量、整数间隔、双a、双b、双c)
{
//我们需要numberOfInterval+1值
double[]yPoints=新的double[NumberOfInterval+1];
对于(int index=0;index谢谢,我将尝试一下!非常感谢!我尝试了另一种同样有效的方法(仍然需要确认),使用“out”输出y数组并将其放入第三种方法。我非常感谢!