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!