polynomials with increasing order
2 次查看(过去 30 天)
显示 更早的评论
hi, i want to create an equation of this format x^1+x^2+x^3........x^n. how can i do that?
0 个评论
回答(1 个)
dpb
2016-5-24
doc polyval
NB: For higher orders numerics for polynomials get bad quickly. You can help somewhat by using the standardization technique documented in polyfit
4 个评论
Image Analyst
2016-5-24
If x is a vector instead of a scalar, make sure you use dot caret instead of caret.
dpb
2016-5-24
编辑:dpb
2016-5-24
For the specific form outlined with all unity coefficients (and actually for any as Steven shows), Matlab already has the function--it's polyval. Ignoring the numerics issue on the hope you'll restrict [N,x] to reasonable values it's simply
N=4;
x=0.3;
y=polyval(ones(N,1),x);
It's simple enough to rewrite this just a little via a function handle so only the order and x is required
>> poly=@(n,x) polyval(ones(n,1),x);
>> n=3;
>> x=[0:0.1:0.4];
>> poly(n,x)
ans =
1.0000 1.1100 1.2400 1.3900 1.5600
>>
NB: it's already vectorized as well.
You can deal with the issue of coefficients for the terms and even the order of the terms(*) if desired similarly.
(*) If you're adamant you want the order to be from constant to increasing power-of-x, then
poly=@(n,x) polyval(fliplr(ones(n,1)),x);
IOW, your function poly simply swaps the order in which it passes the coefficients to polyval--it's transparent to the use later. Of course, you have to be consistent and remember you can't pass the coefficient vector directly to the Matlab function.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!