Approximation of integers and forming a table

1 visualizzazione (ultimi 30 giorni)
Benjamin Trivers
Benjamin Trivers il 2 Feb 2020
Risposto: John D'Errico il 2 Feb 2020
function:
function y=func(x)
y=sqrt(4x^2);
end
The midpoint rule:
function y=Mid(a,b,N)
dx=(b-a)/N;
y=0;
for i=1:N
y=y+func(a+(i-0.5)*dx)*dx;
end
end
The trapezoidal rule:
function y=Trap(a,b,N)
dx=(b-a)/N;
y=0;
for i=1:N
y=y+0.5*(func(a+(i-1)*dx) + func(a+i*dx))*dx;
end
end
Simpson’s Rule:
function y=Simp(a,b,N)
dx=(b-a)/N;
y=0;
for i=1:N
y=y+(1/6)*(func(a+(i-1)*dx) + 4*func(a+(i-0.5)*dx) + func(a+i*dx))*dx;
end
end
Question:
IN MATLAB ONLY
Using these four functions, create a script to publish, writing a cell that uses N=10,20,40,80,160,320 to calculate the approximations to the integral below using each of the three rules. The script should calculate the values as well as the absolute errors for each rule and display them in a nicely formatted table, which should include the method, N, the approximate value, and the absolute error. To format the table, use
fprintf('\%s | \%s | \%s | \%s \\n','N','Method','Value','AbsError')
Can't figure out how to run a loop for each different N and to put it in a table
  3 Commenti
Benjamin Trivers
Benjamin Trivers il 2 Feb 2020
its because i cant find my original post for this
John D'Errico
John D'Errico il 2 Feb 2020
It was there. I've closed it now, because it added nothing, as a duplicate question.

Accedi per commentare.

Risposte (1)

John D'Errico
John D'Errico il 2 Feb 2020
Just use a loop. You already seem to know how to use a loop.
a = ... % whatever
b = ... % whatever
Nlevels = [10,20,40,80,160,320];
for nind = 1:numel(Nlevels);
N = Nlevels(nind);
ymid_ind = Mid(a,b,N);
fprintf(...)
end
You can do the same for each rule, looping over the various N.

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by