【C#】 迴圈小練習_一維多項式&二維多項式

  • 372
  • 0
  • C#
  • 2021-05-11

一維多項式練習

我們稱為P為n次多項次
其表示方法是一個n+2長的陣列,依指數大小儲存,
陣列的第一個元素是代表最大的指數,如

例如多項式
 

我們可以得到的表示法為P = ( 5 , 7 , 6 , 0 , 3 , -1 , 8 )
由此可以知道運算式取決於 x的指數與係數。

 

        static double polynomial1D(double[] a, int n, double x)
        {
            int i;
            double result;
            result = a[n - 1];
            for (i = n - 2; i >= 0; i--) //遞推演算法計算
            {
                result = result * x + a[i];
            }
            return result;
        }

        static void Main(string[] args)
        {
            //一元多項式
            //建構多項式
            //計算多項次的值
            // P =  7x^5 + 6x^4 + 3x^2 + x + 8
            int i;
            double[] a = { -8.0, 1.0, 3.0, 0.0, 6.0, 7.0 }; //運算式將從常數從最後往前列。
            double x = 0.0;
             double result;
            //想計算的x值
            Console.Write("請輸入x的值:");
            x = Convert.ToDouble(Console.ReadLine());
            
            Console.WriteLine("計算 7x^5 + 6x^4 + 3x^2 + x - 8 的值");
            result = polynomial1D(a,a.Length,x);

            Console.WriteLine("x = {0} 時, P(x) = {1}",x,result);
            Console.ReadLine();
        }

二維多項次
二維多項次求值即計算在指定的(x,y)處的函數值。

  static double polynomial2D(double[,] a, int m, int n, double x, double y)
        {
            int i, j;
            double result, temp, tt;
            result = 0.0;
            tt = 1.0;
            for (i = 0; i < m; i++) //遞推演算法計算
            {
                temp = a[i, n - 1] * tt;
                for (j = n - 2; j >= 0; j--)
                {
                    temp = temp * y + a[i, j] * tt;
                }

                result += temp;
                tt *= x;
            }
            return result;
        }

        static void Main(string[] args)
        {
            //一元多項式
            //建構多項式
            //計算多項次的值
            // P =  7x^5 + 6x^4 + 3x^2 + x + 8

            double x = 0.0;
            double y = 0.0;
            double result;

            double[,] a = {{1.0,2.0,3.0,4.0,5.0},
                          {6.0,7.0,8.0,9.0,10.0},
                          {11.0,12.0,13.0,14.0,15.0},
                          {16.0,17.0,18.0,19.0,20.0}
                           }; //運算式將從常數從最後往前列。

            //想計算的x值
            Console.Write("請輸入x的值:");
            x = Convert.ToDouble(Console.ReadLine());

            Console.Write("請輸入y的值:");
            y = Convert.ToDouble(Console.ReadLine());

            Console.WriteLine("計算二維多項式的值\n");
            result = polynomial2D(a, a.GetLength(0), a.GetLength(1), x, y);

            Console.WriteLine("x = {0} 時,y = {1} 時, P({0},{1}) = {2}", x, y,result);
            Console.ReadLine();
        }

水滴可成涓流,涓流可成湖泊大海。
汲取累積知識,將知識堆積成常識;將常識探究成學識;將學識簡化為知識;授人自省。