I'm trying to make a Simpsons Rule Function Myself
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Jack Bush
el 13 de Dic. de 2018
Comentada: Walter Roberson
el 15 de Dic. de 2018
I've had a few attempts at this question and have developed my answer further each time. If people wouldn't mind giving feedback or correcting my code that'd be great.
This is the question:
![Simpsons Rule Question Only.JPG](https://www.mathworks.com/matlabcentral/answers/uploaded_files/198970/Simpsons%20Rule%20Question%20Only.jpeg)
and the code I have written to answer this is, there is more to th question but this is just my code for the first bit:
function [y] =MPR_Asgn4_Q4a_26024405(f,a,b,n)
h=(b-a)/n;
x=zeros(1,n+1);
x(1)=a;
x(n+1)=b;
s1=0;
s2=0;
s3=0;
for k = 2:n
x(k)=a+h*(1i-1);
end
for k=1:n/2
s1= s1 + f(x(2*1i-1));
end
for k=1:n/2
s2=s2+f(x(2*1i));
end
for k= 1:n/2
s3 = s3 +f(x(2*1i+1));
end
y = (h/3)*(s1+(4*s2)+s3);
disp(y);
end
2 comentarios
Omer Yasin Birey
el 14 de Dic. de 2018
Hi Jack,
I tried to understand your code and the formula together. However, firstly I believe your "i" usages are quite wrong. If you put "i" or "j" without multiplication sign (*) that gives complexity to the number. However, if Im not wrong there is no calculations in complex domain here. Secondly, you are using loops without using the loop indexes maybe you meant "k" instead of "i"?
Respuesta aceptada
Omer Yasin Birey
el 14 de Dic. de 2018
Editada: Omer Yasin Birey
el 14 de Dic. de 2018
Hi Jack,
I fixed your code as much as I can. You can use the code below:
function [y] =MPR_Asgn4_Q4a_26024405(f,a,b,n)
x = linspace(a,b,n);
x(1)=a;
x(n+1)=b;
h=(b-a)/n;
s1=0;
s2=0;
s3=0;
%First if statements is to check if f is an anonymous function
%or an array.
if length(f) > 1%array state
%if it is a array your sub intervals will be the length of array
%So you have to update it.
n = length(f)-1;
h=(b-a)/n;
for k=3:2:length(f)-2
s1= s1 + 2*f(k);
end
for k=2:2:length(f)
s2=s2+f(k);
end
s3 = f(length(f));
y = (h/3)*(f(1)+(2*s1+(4*s2)+s3));
else%anonymous function state
for k=3:2:length(f)-2
s1= s1 + 2*f(x(k));
end
for k=3:2:length(f)
s2=s2+f(x(k));
end
s3 = f(length(f));
y = (h/3)*(f(x(1))+(2*s1+(4*s2)+s3));
end
disp(y);
end
0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!