Проблема в MATLAB со слишком большим количеством выходов - PullRequest
0 голосов
/ 02 апреля 2010

Я пишу программу Matlab для правила Симпсона. Я получаю сообщение об ошибке на многих выходах, когда программа достигает left_simpson = Simpson(a,c,(e1)/2,level, level_max); Что не так с settinf left_simpson в 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

1 Ответ

5 голосов
/ 02 апреля 2010

Ваш оператор функции, первая строка в вашем коде, не объявляет то, что возвращает Симпсон. Я не знаю, что делает Matlab с таким заявлением. Я думаю, вам следует переписать Симпсон, чтобы явно вернуть значение или значения. Посмотрите документацию Matlab, чтобы узнать, как это сделать.

Как только вы объявите, что возвращает Симпсон, вы, вероятно, сможете избежать проблемы «слишком много выходов».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...