how can i correct this code and get rid of error? urgent help please

1 Ansicht (letzte 30 Tage)
Ilkay Köse
Ilkay Köse am 22 Jan. 2022
Kommentiert: Image Analyst am 22 Jan. 2022
fprintf('\n The equation by Lagrange is:\n');
yvalue
fprintf('\n The answer for part c\n');
fprintf('The value of Volume at 1.05 bar by Lagrange is %f m^3\n',vpa(subs(yvalue,xvalue,x)));
fprintf('\n The answer for part d\n');
fprintf('\n The absolute difference between volume by predicted model and Lagrange interpolation is %f m^3\n',abs((A(1)*exp(A(2)*x))-(vpa(subs(yvalue,xvalue,x)))));
end
i wrote this code for my homework but gives error in bold underlined line. how can i correct it. i use Matlab R2013a . thank you.
  3 Kommentare
Ilkay Köse
Ilkay Köse am 22 Jan. 2022
this is my full code:
function [a0,a1]=work(x,xvector,fvector)
fun=@(X,xdata) X(1)*exp(X(2)*xdata);
X0=rand(1,2);
A=lsqcurvefit(fun,X0,xvector,fvector);
fprintf('\n The answer for part a\n');
fprintf('\n V=%fe^(%f*P) \n',A(1),A(2));
fprintf('\n The answer for part b\n');
fprintf('The value of Volume at 2.5 bar by model is %f m^3\n',A(1)*exp(A(2)*x));
%Lagrange Method
syms xvalue
yvalue=0;
for i=1:length(xvector)
p=1;
for j=1:length(xvector)
if i~=j
p=p*((xvalue-xvector(j))/(xvector(i)-xvector(j)));
end
end
yvalue=yvalue+(p*fvector(i));
end
fprintf('\n The equation by Lagrange is:\n');
yvalue
fprintf('\n The answer for part c\n');
fprintf('The value of Volume at 1.05 bar by Lagrange is %f m^3\n',vpa(subs(yvalue,xvalue,x)));
fprintf('\n The answer for part d\n');
fprintf('\n The absolute difference between volume by predicted model and Lagrange interpolation is %f m^3\n',abs((A(1)*exp(A(2)*x))-(vpa(subs(yvalue,xvalue,x)))));
end
and this is the error:
Error using fprintf
Function is not defined for 'sym' inputs.
Error in work (line 24)
fprintf('The value of Volume at 1.05 bar by Lagrange is %1.05f
m^3\n',vpa(subs(yvalue,xvalue,x)));

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Simon Chan
Simon Chan am 22 Jan. 2022
You need to specify the number of digits after the decimal point.
For example, %.2f or %.4f for 2 and 4 digits after the decimal point respectively.
%f states nothing and give you an error
  1 Kommentar
Ilkay Köse
Ilkay Köse am 22 Jan. 2022
still gives error. this is my full code:
function [a0,a1]=work(x,xvector,fvector)
fun=@(X,xdata) X(1)*exp(X(2)*xdata);
X0=rand(1,2);
A=lsqcurvefit(fun,X0,xvector,fvector);
fprintf('\n The answer for part a\n');
fprintf('\n V=%fe^(%f*P) \n',A(1),A(2));
fprintf('\n The answer for part b\n');
fprintf('The value of Volume at 2.5 bar by model is %f m^3\n',A(1)*exp(A(2)*x));
%Lagrange Method
syms xvalue
yvalue=0;
for i=1:length(xvector)
p=1;
for j=1:length(xvector)
if i~=j
p=p*((xvalue-xvector(j))/(xvector(i)-xvector(j)));
end
end
yvalue=yvalue+(p*fvector(i));
end
fprintf('\n The equation by Lagrange is:\n');
yvalue
fprintf('\n The answer for part c\n');
fprintf('The value of Volume at 1.05 bar by Lagrange is %f m^3\n',vpa(subs(yvalue,xvalue,x)));
fprintf('\n The answer for part d\n');
fprintf('\n The absolute difference between volume by predicted model and Lagrange interpolation is %f m^3\n',abs((A(1)*exp(A(2)*x))-(vpa(subs(yvalue,xvalue,x)))));
end

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by