i am trying to get the value of u_E using the equation, but matlab says it has error in that line which has the equation.
Afficher commentaires plus anciens
%creat symbol for axial force, length, thickness, displacemnent and width
syms f l t d w
%define governing equations for parameter
stress = f./(t*w)
strain = d./l
%measurement resolution and uncertainty
u_f = (f./100)./2./12;
u_l = 1/32/12/2;
u_t = 0.001/2/12;
u_d = (d./100)./2./12;
u_w = 0.001/12/2;
%zeroth order uncertainty
E = (f.*l)./(d.*w*t);
u_E = sqrt((diff(E,u_f).*u_f).^2 + (diff(E,u_d).*u_d).^2 + ...
(diff(E,u_l).*u_l).^2+(diff(E,u_t).*u_t).^2+(diff(E,u_w).*u_w).^2)
%define symbolic data
T = readtable('Intro_specimen 2.txt');
f = T{:,2};
l = 6.125;
t = 0.057;
d = (T{:,1})./12;
w = 0.414;
%substitute value into equation
stress = eval(stress);
strain = eval(strain);
%plot with errorbar
plot(strain,stress)
hold on
title('strain vs. stress')
xlabel('strain (ft^3)')
ylabel('stress (slug/ft^3)')
Réponses (2)
Paul
le 10 Sep 2022
Hi kaixi
%creat symbol for axial force, length, thickness, displacemnent and width
syms f l t d w
%define governing equations for parameter
stress = f./(t*w);
strain = d./l;
%measurement resolution and uncertainty
u_f = (f./100)./2./12;
u_l = 1/32/12/2;
u_t = 0.001/2/12;
u_d = (d./100)./2./12;
u_w = 0.001/12/2;
%zeroth order uncertainty
E = (f.*l)./(d.*w*t);
u_E = sqrt((diff(E,u_f).*u_f).^2 + (diff(E,u_d).*u_d).^2 + ...
(diff(E,u_l).*u_l).^2+(diff(E,u_t).*u_t).^2+(diff(E,u_w).*u_w).^2)
In the Symbolic Math Toolbox, the function diff is used to diffentiate an expression with respect to a variable. So
diff(E,u_f)
means take the derivative of E wrt u_f, but u_f is an expression, not a variable. Similarly, u_l is a number, not a variable.
What exactly is the math that we're trying to implement?
Walter Roberson
le 10 Sep 2022
0 votes
As discussed at https://www.mathworks.com/matlabcentral/answers/1802585-not-able-to-evaluate-the-value-for-an-equation-using-the-data-from-a-table-table-is-three-columns-d#comment_2357215 it is a mistake to use eval() with a symbolic expression.
Catégories
En savoir plus sur Calculus dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!