квадратная матрица в цикле - PullRequest
0 голосов
/ 10 ноября 2011

Я пытаюсь использовать числовые интегральные функции Matlab, например, четырехугольник в цикле.Но я также хочу позволить Matlab рассчитать мой интеграл для нескольких пределов интегралов:

p=1;
q=3;
for k=1:5
    a=0;
    b(k)=k.*10;
     integrand(k)=@(v)(v-a).^(p-1).*(b(k)-v).^(q-1);
p(k)=quad(integrand,a,b(k));
end

Это действительно кажется мне умным :), но у Matlab нет идеи :( Спасибо за любую помощь! Mg

Ответы [ 2 ]

2 голосов
/ 10 ноября 2011

Я думаю, что основная проблема у вас заключается в том, что вы используете p как параметр, а также для хранения результатов вашей интеграции. Таким образом, внутри цикла p становится вектором, и затем его нельзя использовать в качестве силы в подынтегральном выражении. Я не уверен, почему, но мне также кажется, что мне нужно удалить k в качестве индекса в b и integrand. Но этот код, кажется, работает:

p=1;
q=3;
for k=1:5
    a=0;
    b=k.*10;
    integrand=@(v)((v-a).^(p-1).*(b-v).^(q-1));
    result(k)=quad(integrand,a,b);
end
0 голосов
/ 10 ноября 2011

Похоже, что вы можете определить интеграл с дополнительным параметром, поэтому

p=1;
q=3;
integrand=@(v,b)(v-a).^(p-1).*(b-v).^(q-1);  
for k=1:5
    a=0; 
    b=k.*10;
    p(k)=quad(integrand,a,b); 
end

, но при запуске все равно выдает ошибку:

??? Error using ==> power
Matrix dimensions must agree.

Error in ==> @(v,b)(v-a).^(p-1).*(b-v).^(q-1)

Error in ==> quad at 76
y = f(x, varargin{:});

Не совсем уверен, что выпытаясь сделать хотя ...

...