Sibtain Reza
Sibtain Reza

Reputation: 533

Want to evaluate the polynomial equation

In this case,this is the array which serves as coefficients and degrees which first value having no degree.

double[] arr = { 12, 2, 3 ,4};

I then made a method to print the above array in terms of polynomial equation. It gives output in type string as follows :

2x^2 + 3x^3 + 4x^4 + 12

I want to a function which takes an argument x and then solve the above polynomial with respect to value of x. How can I do that? Any kind of help will be appreciated!.

Edit: Question Solved

Upvotes: 1

Views: 1455

Answers (2)

Sibtain Reza
Sibtain Reza

Reputation: 533

This is what I created:

for (int i = 1; i < degree.Length; i++)
        {
            result_first += degree[i] * Math.Pow(x, degree[i]);
        }
        result_first += degree[0];

It works perfectly.

Upvotes: 0

Ian Mercer
Ian Mercer

Reputation: 39277

To evaluate it you can simply sum the power values times the coefficients. Using LINQ, that's one line:

double result = arr.Select((c,i) => c * Math.Pow(x, i)).Sum(); 

Here i is the index into your array, it starts at zero, so x^0 = 1 * 12 == 12 etc.

You can also do it without LINQ like this:

    List<string> debug = new List<string>();
    double y = 1.0;
    result = 0.0;
    for (int i = 0; i < arr.Length; i++)
    {
        debug.Add($"{arr[i]} * x^{i}"); 
        result = result + arr[i] * y;
        y = y * x;
    }

    Console.WriteLine(string.Join(" + ", debug));
    Console.WriteLine(result);

Which, for x=3 outputs:

  12 * x^0 + 2 * x^1 + 3 * x^2 + 4 * x^3
  153

Same result as LINQ.

Upvotes: 1

Related Questions