2013-04-18 3 views
0

Для MatLab вопрос, мне нужно интегрировать fun2 = @(x) 1/(sigma2*(2*pi)^(.5))*exp(-.5*((x-xbar2)/sigma2)^2), где sigma2=50, xbar2=1500.Неопределенная переменная ошибка при выполнении численного интегрирования в MATLAB

Площадь под кривой должна быть 0,05, поэтому я устанавливаю ее как solve(integrate(fun2,-inf,u)==.05,u), но получаю сообщение об ошибке «Неопределенная функция или переменная« u ».

Что я могу сделать для этого?

+0

Кого вы пытаетесь сделать: символическая интеграция или цифровая интеграция (т. Е. Вы хотите получить функцию или число в результате)? –

+0

Чтобы уточнить, это гауссовское распределение, и я знаю, что u = 1417.76, решая в Mathematica. Я ищу тип кода решения, который скажет мне, что верхний предел интеграции, u, основан на знании решения, 0.05 –

+0

CST-Link, я ищу числовой ответ. Я могу сделать это в других программах, просто не уверен, как в Matlab. –

ответ

1

Так вот мы идем:

syms x u 
fun = int(1./(50.*(2.*pi).^(.5)).*exp(-.5.*((x-1500)./50).^2),-Inf,u) - .05; 
double(solve(fun,u)) 
0

Вот решение, которое не требует символического инструментария; стандарт MatLab в root-finding algorithm:

>> f = @(u) quadgk(fun2, -inf,u) - 0.05; 
>> fzero(f,xbar2) 

ans = 

    1.417757318652430e+003 

(я использовал quadgk, потому что я на R2010, который не имеет integrate Это то же самое, так или иначе.).

Алгоритм корня поиска fzero находит нулевые отрывки из анонимной функции f, что нет ничего, кроме оригинала fun2 минус значение, которое вы хотите - которая проходит через нуль точно, когда значение исходного интеграла достигает выбранное значение ,

+0

Я шел с той же процедурой, но вы отправляли быстрее :) – fpe

Смежные вопросы