How to make and plot a function with a summation?

14 ビュー (過去 30 日間)
Bas Helfrich
Bas Helfrich 2018 年 1 月 11 日
コメント済み: Steven Lord 2018 年 1 月 12 日
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 :)

採用された回答

Birdman
Birdman 2018 年 1 月 11 日
Try this:
n=100;
a=sym('a',[n+1 1]);
syms x k
SmbSum=symsum(a(k+1)*x^k,k,0,n);
  7 件のコメント
Birdman
Birdman 2018 年 1 月 12 日
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);
Bas Helfrich
Bas Helfrich 2018 年 1 月 12 日
And it works, thanks a lot!

サインインしてコメントする。

その他の回答 (2 件)

Steven Lord
Steven Lord 2018 年 1 月 11 日
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 件のコメント
Bas Helfrich
Bas Helfrich 2018 年 1 月 12 日
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 2018 年 1 月 12 日
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)

サインインしてコメントする。


Torsten
Torsten 2018 年 1 月 12 日
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.

カテゴリ

Help Center および File ExchangeCalculus についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by