/ / параметрична інтеграція та чисельне побудова двовимірної функції - matlab, matlab-figure

параметрична інтеграція та чисельне побудова 2D-функції - matlab, matlab-фігура

Я збираюся розробити 2D функцію як функцію щільності ймовірності, яка є функцією двох змінних, тобто f = f(x,n). Потім, як мета планує варіацію ймовірності, інтеграція, пов'язана з параметром x слід враховувати. The t Параметр - це змінна, яка планується бути верхньою межею інтеграції. Досить сказати це n є іншим фактором настройки. Нарешті, з належною увагою до розглянутого meshgrid, передбачається намалювати поверхню ймовірності.

Мій варіант інтеграційного процесу - символічний int функція. Але є помилка: Error using mupadmex

Ось мій код:

clear;

syms x;
syms n;
syms t;

sigma = 1;
mu = 0;

[t,n] = meshgrid(0:0.01:20, 1:1:100);

f = (n./(2*sigma*sqrt(pi))).*exp(-((n.*x)./(2.*sigma)).^2);

ff = int(f, x, -inf, t);

mesh(n,t,ff);

І слід помилки:

Error using mupadmex
Error in MuPAD command: The argument is invalid. [Dom::Interval::new]

Error in sym/int (line 153)
rSym = mupadmex("symobj::intdef",f.s,x.s,a.s,b.s,options);

Error in field (line 14)
ff = int(f, x, -inf, t);

Чи не допоможете ви мені подолати цю краватку ?!

PS. Я знаю, що є кілька ідей зробити ці речі більш чисельними integral функції, але я схильний керувати цією справою int функція, якщо це можливо. Тому що цей код повинен використовуватися як сервіс іншими фрагментами та згенерованими ff Параметр цілком заслуговує, проте він не буде функцією закритої форми.

Заздалегідь спасибі.

Відповіді:

1 для відповіді № 1

Я змінив кілька деталей у вашому коді, намагаюся пояснити їх усі.

  1. Не потрібно визначати символьні змінні, які не стануть символічними.

код:

clear;

syms x;

sigma = 1;
mu = 0; % This is never used!
  1. Ви хочете інтегрувати функцію f (n, x) dx для різних n. Якщо ви створите мешгрид з n (замість вектора), у вас з’явиться тонн повторних f (ni, x), які ви не збираєтеся використовувати.

Просто:

t=(0:1:20);

n=(1:10:100);
% are you sure you dont want ((n.*x)-mu) here?
f = (n./(2*sigma*sqrt(pi))).*exp(-((n.*x)./(2.*sigma)).^2);
  1. int не приймає сітку символічних функцій! (або мені не вдалося змусити його працювати ...).

Так що покладіть пару для "там!

for ii=1:length(n)
for jj=1:length(t)
ff(ii,jj) = int(f(ii), x, -inf, t(jj));
end
end
  1. Тепер ми НЕ хочемо meshgrid для сюжету!

Подобається це:

[t,n] = meshgrid(t, n);
  1. І ви хочете побудувати числове значення, тому використовуйте double() перетворити з символічного в числове:

сюжет !:

mesh(n,t,double(ff));

Результат (з низькою кількістю балів через очевидні необхідні обчислювальні зусилля)

введіть опис зображення тут