MATLAB HELP ME PLS

1 visualizzazione (ultimi 30 giorni)
Triggs
Triggs il 18 Lug 2019
Commentato: Walter Roberson il 19 Ago 2019
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
  1 Commento
Walter Roberson
Walter Roberson il 19 Ago 2019
It is not clear what the question is?

Accedi per commentare.

Risposte (1)

TADA
TADA il 18 Lug 2019
Modificato: TADA il 18 Lug 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
Or simply use trapz
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 Commento
TADA
TADA il 18 Lug 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

Accedi per commentare.

Categorie

Scopri di più su Polynomials in Help Center e File Exchange

Tag

Non è stata ancora inserito alcun tag.

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by