MATLAB HELP ME PLS
2 views (last 30 days)
Show older comments
close all
clear
clc
format long
a=0;
b=10;
function [Distance] = trapezoidal(Speed, a, b, n)
h = (b-a)/n;
result = 0.5*Speed*a + 0.5*Speed*b;
for i = 1:(n-1)
result = result + Speed*(a + i*h);
end
[Distance] = h*result;
fprintf('ans=%6.6ff\n',Distance)
end
Answers (1)
TADA
on 18 Jul 2019
Edited: TADA
on 18 Jul 2019
The trapezoidal integration method is a numeric calculation which approximates the area trapped between the curve and the x axis by dividing the curve to segments. the area of each segment is calculated by calculating the area of a trapeze entrapped by the coordinates of that segment.
function [auc, integration] = trapezoidal(x,y)
dx = diff(x);
integration = ((y(1:end-1)+y(2:end)) .* dx) / 2;
auc = sum(integration);
end
The accuracy of this method is limited mainly by the size of the segments. smaller dx means more accurate results
so define your time vector with more elements:
t = linspace(0,10,1000);
1 Comment
TADA
on 18 Jul 2019
to iteratively improve the approximation as required, I would start from a small number of segments, lets say 10 segments like you did
then check the error of the calculated distance
To calculate the actual distance you can integrate the polynomial:
% velocity polynomial coefficients
vp = [0.0011, -0.02928, 0.2807, -1.1837, -0.8283, 41.234, -3.3549];
tRange = [0 10];
nSegments = 10;
% call this in a loop that improves the precesion
while logical condition
% do something to improve precesion here
% calculate distance and error again
[d, err] = tryTrapz(tRange, vp, nSegments);
fprintf('Your message');
end
function [d, err] = tryTrapz(tRange, vp, nSegments)
t = linspace(tRange(1), tRange(2), nSegments);
d = trapz(t, polyval(vp, t));
% distance polynomial coefficients = integrated velocity
dp = polyint(vp);
theoreticalDist = polyval(dp, t(end));
err = 100*(theoreticalDist - d)/theoreticalDist;
end
See Also
Categories
Find more on Polynomials in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!