I am writing a Matlab program for simpson's rule I keep getting an error about to many outputs when the program gets to left_simpson = Simpson(a,c,(e1)/2,level, level_max);
What is wrong with settinf left_simpson
to Simpson(a,c,(e1)/2,level, level_max);
?
function Simpson(a,b,e1,level, level_max)
level = level + 1;
h = b - a;
c = (a+b)/2;
one_simpson = h*(f(a) + 4*f(c) + f(b))/6;
d = (a+c)/2;
e = (c+b)/2;
two_simpson = h*(f(a) + 4*f(d) + 2*f(c) + 4*f(e))/2;
if level >= level_max
disp('h')
simpson_result = two_simpson;
disp('maximum levels reached')
disp(simpson_result);
if abs(two_simpson - one_simpson) < 15*e1
simpson_result = two_simpson + (two_simpson - one_simpson)/15;
else
left_simpson = Simpson(a,c,(e1)/2,level, level_max);
right_simpson = Simpson(c,b,(e1)/2,level, level_max);
simpson_result = left_simpson + right_simpson;
end
end
Your function statement, the first line in your code, doesn't declare what Simpson returns. I don't know what Matlab does with such a declaration. I think you should re-write Simpson to explicitly return a value, or values. Have a look at the Matlab documentation for how to do that.
Once you have declared what Simpson returns, then you will probably be able to avoid the 'too many outputs' problem.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.