How to make and plot a function with a summation?

14 views (last 30 days)
Goodevening everybody,
I've been trying to make and plot the following function in Matlab:
I have the values for ak in a vector (n is max 100). I've been trying with symsum function and for loops in a sorts of ways but can't get it to work.
I hope someone can help me :)

Accepted Answer

Birdman
Birdman on 11 Jan 2018
Try this:
n=100;
a=sym('a',[n+1 1]);
syms x k
SmbSum=symsum(a(k+1)*x^k,k,0,n);
  7 Comments
Birdman
Birdman on 12 Jan 2018
To replace a value with a symbolic variable, use subs command. For instance
x=subs(x,1);
or
x=subs(x,0:0.1:1);

Sign in to comment.

More Answers (2)

Steven Lord
Steven Lord on 11 Jan 2018
Do you want this to be a symbolic expression with x as the symbolic variable? Or do you have a numeric value for x and want the result of evaluating this polynomial?
In the former case, see the poly2sym function.
In the latter case, I would be very careful about doing anything with a polynomial of degree 99. You're almost begging for catastrophic cancellation. But if you are careful you could use the polyval function.
  2 Comments
Bas Helfrich
Bas Helfrich on 12 Jan 2018
Eventually I want to make a plot with this function with -8 < x < 8. So with numeric values for x. I'll try the polyval function, but I still have to define the function first...
Steven Lord
Steven Lord on 12 Jan 2018
Keep in mind:
>> x = 8^99
x =
2.5463e+89
You're going to be adding and subtracting extremely large numbers at the edges of your ranges if you go up to a degree 99 polynomial. See the catastrophic cancellation link I included in my response.
If your polynomial is of modest degree, you already have the polynomial you need to use polyval. It takes a coefficient vector and you said "I have the values for ak [the coefficients] in a vector".
x = polyval([1 2 3], 4)
y = 1*4^2 + 2*4^1 + 3*4^0
f = @(x) x.^2 + 2*x.^1 + 3;
z = f(4)

Sign in to comment.


Torsten
Torsten on 12 Jan 2018
Is this the partial Taylor series of a certain function f ?
In this case, you could use
f=...;
n=...;
fn = taylor(f,x,'order',n);
fplot(fn);
xlim([-4 4])
grid on
Best wishes
Torsten.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!