请问怎么用matlab做出下列隐函数的三维图?

2024-11-12 07:19:13
推荐回答(1个)
回答1:

syms x
syms y
syms z;
A=[0   29.2764    0.046
4.0587  0   0.054
18.0379    7.7921 0.096
1.1105 4.6752 0.031
3.3167  9.3508  0.031
16.0911    15.4732    0.037
8.728  22.8202    0
31.7897    21.2619    0.073
8.754   10.6679 0.093
8.2832  9.4618  0.037
7.462  3.4511   0.056
11.6874    9.3508   0.057
30.6654    53.0986    0.018];
x0=A(:,1); y0=A(:,2); z0=A(:,3);
H=25;
q=[130.97 96.61 100.99 112.79 114.17 110.48 102.61 105.50 93.92 120.39 99.47 110.38 99.83];
Q=q*2100*10^4*500/13;
u=3.3*10^(-3);
t=2;
sigx=0.22*x.*(1+0.0004*x).^(-1/2);
sigy=0.22*x.*(1+0.0004*x).^(-1/2);
sigz=0.20*x;
s=size(x0);
csum=0;
for i=1:s(1);
    Qx=Q(i)./((2*pi)^(1.5)*sigx.*sigy.*sigz+eps);
ex1=exp( 0.5*((x-x0(i)-u*t)./(sigx+eps)).^2);
ex2=exp( -0.5*((y-y0(i))./(sigx+eps)).^2);
ex3=exp( -0.5*((z-z0(i)-H)./(sigx+eps)).^2);
ex4=exp( -0.5*((z-z0(i)+H)./(sigx+eps)).^2);
c=Qx.*ex1.*ex2.*(ex3+ex4);
csum=csum+c;
end
[x,y,z]=meshgrid(linspace(-5000,5000));
fun=inline(vectorize(char(csum)),'x','y','z');
v=fun(x,y,z);
isosurface(x,y,z,v,0);
grid on
xlabel('x');ylabel('y');zlabel('z');