Привет! У меня есть интеграл для функции, которую я рисую в полярных координатах при фиксированном полярном угле тета (th). Как написать трехмерный график для R в полярных координатах (изменения углов a и th)? Я сделал это с помощью pol2cart, но это не лучший способ представить результат. Если бы кто-нибудь помог мне построить график с помощью polar3D или чего-то подобного, было бы здорово. Спасибо.

очистить все

s = 3;

n = 1;

r = 1;

t = 0.1;

ч = 0:10:360; % угол тета

а = 0:1:360; % угол альфа

б = квадрат (2*n*t);

L = sqrt((4*t+r²)/3);

fun = @(k,u,c,a) ((k.²).*exp(-1.5*k.²)).*((u.²).*(1-u.²).*exp (-(b.*u).²).*(cos(s.*k.*u.*cos(a)/L))).*(((cos(c)).²).*( cos(k.*sqrt(1-u.²).*(s.*sin(a).*cos(th).*cos(c)+s.*sin(a).*sin(th). *грех(с))/(L))));

f3 = arrayfun(@(a)integral3(@(k,u,c)fun(k,u,c,a),0,Inf,-1,1,0,2*pi),a);

B = ((6*sqrt(6)*(b³))/(erf(b)*(pi²)))*(1-(3/(2*b²))*(1-((2*b* exp(-b²))/(erf(b)*sqrt(pi)))))^(-1);

R = B*f3;

фигура(3)

полярный (а, R);

Вот как это выглядит в декартовых координатах (тета в радианах), но в polar3D должно выглядеть намного лучше.

ПРИМЕЧАНИЕ. 

Matlabsolutions.com предоставляет последнюю справку по домашним заданиям MatLab, справку по назначению MatLab, помощь по финансам для студентов, инженеров и исследователей в нескольких отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для B.E, B .Tech, ME, M.Tech, Ph.D. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

Здесь это занимает слишком много времени (это заняло 336,315050 секунд — 00:05:36,315049 — только что в MATLAB Online), однако он отображает поверхность на «синтетической» полярной координатной оси в 3D. Было бы относительно просто изменить координаты оси Z (или полностью их исключить). Первоначальная проблема заключалась в том, что код для полярных осей был неполным. Теперь он работает, как работал в моем предыдущем коде.

Попробуйте это:

s = 3;
n = 1;
p = 0.1; % this is time
tv = 0:10:360; %3; % this is angle theta for polar rotation
r = 1;
a = 0:10:360;
a = deg2rad(a);
tv = deg2rad(tv);
tic
for k = 1:numel(tv)
    t = tv(k)
    b = sqrt(2*n*p);
    L = sqrt((4*p+r^2)/3);
    fun = @(k,u,c,a) ((k.^2).*exp(-1.5*k.^2)).*((u.^2).*(1-u.^2).*exp(-(b.*u).^2).*(cos(s.*k.*u.*cos(a)/L))).*(((cos(c)).^2).*(cos(k.*sqrt(1-u.^2).*(s.*sin(a).*cos(t).*cos(c)+s.*sin(a).*sin(t).*sin(c))/(L)))); 
    f3 = arrayfun(@(a)integral3(@(k,u,c)fun(k,u,c,a),0,Inf,-1,1,0,2*pi),a);
    B = ((6*sqrt(6)*(b^3))/(erf(b)*(pi^2)))*(1-(3/(2*b^2))*(1-((2*b*exp(-b^2))/(erf(b)*sqrt(pi)))))^(-1);
    R = B*f3;      
    ta = t*ones(size(tv));
    [x,y,z] = pol2cart(a, R, ta);
    X(k,:) = x;
    Y(k,:) = y;

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ



https://matlabarticlesworld.blogspot.com/2023/06/how-to-make-surface-in-polar.html