我們的老師讓我們用C#做一個梯形法則的解決方案; 他希望我們把它分解成三種方法。 下面是這個問題,到目前爲止我的代碼:C#梯形法則y值的總和
數值積分是一種技術,是特別適合 計算機應用。在練習中,我們將嘗試實施 梯形法則。數學函數的積分是曲線和x軸之間的區域 。如果該區域被分成很少的梯形,則積分近似於這些幾何圖形的面積。
你會嘗試找到從x = 0.5到x = 1.5的 區域的曲線y = 6x^2-7x + 2下的面積(注意,你的答案應該爲 約爲1.54,但是實際答案是1.5)。區域由 給出的公式
其中y 0和y是垂直線即 函數的值的高度。
寫稱爲EvaluateQuadraticValue(雙X,雙一,雙B,雙c),其採用四個雙參數方法:x的值
如下此問題可以分解成三個部分, 係數x2項,係數x和
不變。該方法將計算並返回由表達式y = ax2 + ba + c所給出的結果值y
。寫方法稱爲ComputeQuadraticValues(雙STARTX,雙增量,整數numberOfIntervals,雙一,雙B,雙c),該 需要六個參數:x的初始值,增量和
的間隔數和二次方程的係數。
該方法通過調用 上一個問題來計算出x0,x1,x2等的值。方法調用的結果收集爲 並作爲雙數組返回。編寫一個名爲ApplyTrapeziodalRule(double startX,double endX,int numberOfIntervals,double a,double b,double 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");
}
目前我遇到了第三種方法的麻煩。由於我的ComputeQuadraticValues()
的double數組是x0,x1,x2等。我該如何使用這個數組來獲得(y0 + 2 * y1 + 2 * y2 + ...... + 2 * yn + y(n + 1) ))?
任何提示或技巧,讚賞!
非常感謝!我嘗試了另一種方法,它也起作用(仍然需要確認),使用「out」輸出y數組並將其放入第三個方法中。我很感激! –