O/P of Lagrange Polynomial

1 回表示 (過去 30 日間)
shivam pranjale
shivam pranjale 2018 年 9 月 4 日
回答済み: nick 2023 年 12 月 29 日
I am writing a script for generating lagrange polynomial. I have a problem with output. please guide. why is the op looking weird.
%%modelling a lagrange polynomial
%%inputs to code will be node points and function value at nodes
%%output will be polynomials p1(x), p2(x), p3(x) and p4(x)
%%count of math operations for each polynomial
clc
d=input('Enter degree of Langragian Polynomial: ');
n = input('Enter the node count ');
N = input('enter nodes in [] bracket:-');
Fx = input('enter function value in [] bracket:-');
disp('Nodes:')
disp(N);
disp('Function values:')
disp(Fx);
syms x;
s=0;
for k=1:n;
Poly=Fx(k);
for j=1:n;
if j~=k
Poly=Poly*(x-N(j))/(N(k)-N(j));
end
end
s=s+Poly;
% digits(4);
% r = vpa(s);
% fplot(matlabFunction(r),[min(N),max(N)]);
% hold on;
% o = i^2;
% O = sprintf('Mathematical Operations required for P%d(x) is %d',i,o);
% disp(O);
end
fprintf('Polynomial is \n');
digits(4); %to restrict decimal form to 4 signi. digit
r=vpa(s); %to represent in decimal form
disp(s);
% figure(1);
% fplot(matlabFunction(s),[min(N),max(N)]);
% figure(2);
% ezplot(s,[min(N)-3,max(N)+3]);
output
Enter degree of Langragian Polynomial: 4
Enter the node count 5
enter nodes in [] bracket:-[4 5 6 7 8]
enter function value in [] bracket:-[2 2.23607 2.44949 2.64979 2.82843]
Nodes:
4 5 6 7 8
Function values:
2.0000 2.2361 2.4495 2.6498 2.8284
Polynomial is
(((3184529073510883*x)/4503599627370496 - 3184529073510883/1125899906842624)*(x - 5)*(x - 6)*(x - 7))/6 + ((2*x -
10)*(x - 6)*(x - 7)*(x - 8))/24 + (((2757880562811939*x)/2251799813685248 - 2757880562811939/562949953421312)*(x -
5)*(x - 7)*(x - 8))/2 - (((1258795502346793*x)/562949953421312 - 1258795502346793/140737488355328)*(x - 6)*(x - 7)*(x
- 8))/6 - ((x - 5)*(x - 6)*(x - 8)*((1988932209435011*x)/2251799813685248 - 1988932209435011/562949953421312))/2
>>

回答 (1 件)

nick
nick 2023 年 12 月 29 日
Hi Shivam,
I understand from your query that you need help understanding why the displayed output of the Lagrange polynomial is in rational form rather than decimal form.
Kindly refer to the code snippet from the code you shared. To display the polynomial in decimal form, you should display r instead of s, as s is a symbolic expression that contains the coefficients in rational numbers.
fprintf('Polynomial is \n');
digits(4); %to restrict decimal form to 4 signi. Digit
r = vpa(s); %to represent in decimal form
disp(r); % here instead of ‘s’, as in the code shared by you, ‘r’ the decimal form should be displayed
Here is the obtained output of the code you shared:
Figure 1 Obtained Lagrange Polynomial
Hope this helps,
Regards,
Neelanshu

カテゴリ

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

Community Treasure Hunt

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

Start Hunting!

Translated by