code for computing area by varying the value of y in matrix?
Afficher commentaires plus anciens
For computation of area the value of y1,y2 and y3 are coming from three different same dimension matrix and so I want to compute area of using this code for same matrix dimension as y1, y2 and y3?
x=[7.8 8.25 8.55];
y=[0.96 0.99 0.94];
p=polyfit(x,y,2);
t=linspace(x(1),x(3));
yhat=polyval(p,t);
a1=trapz(t,yhat);
How can I improve code for all 3*3 matrix of given y1,y2 and y3, result will be area a1 of 3*3 matrix.
Réponses (1)
Roger Stafford
le 14 Mai 2013
This general formula in terms of x1, x2, x3, y1, y2, and y3 gives the exact area under your 'polyfit' curve without the trapezoidal approximation errors introduced by 'trapz'. That is, it is the exact integral from x = x1 to x = x3 of the unique quadratic function which passes through all three points (x1,y1), (x2,y2), and (x3,y3).
a = (x3-x1)*((y1+y2+y3)/3+((x3-x2)*(y2-y1)/(x2-x1)-(x2-x1)*(y3-y2)/(x3-x2))/6);
4 commentaires
Roger Stafford
le 15 Mai 2013
A somewhat simpler but equivalent formula for the area is the following:
a = (x3-x1)*((y1+y3)/2-(x3-x1)*((y3-y2)/(x3-x2)-(y2-y1)/(x2-x1))/6);
RS
le 16 Mai 2013
RS
le 18 Mai 2013
RS
le 26 Mai 2013
Catégories
En savoir plus sur Numerical Integration and Differentiation 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!