简体   繁体   中英

Problem in matlab with too many outputs

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM