matlab怎么用程序把曲面相交的上半部分去掉(matlab程序求助:)

本文目录
- matlab程序求助:
- matlab三维曲面图求助
- matlab高手帮我看看怎么把几个相交的曲面弄透明,汇出交线~~~~~~~~~~~~~~~
- matlab 曲面图形和交线图形截平面
- (Matlab)怎样去掉曲面上的网格线
- 求助matlab大神,怎样取两方程的交点并绘制3维图形~~~~~~~~~~~~~~~
- MATLAB曲面
matlab程序求助:
取消figure tools,勾选figure palette
◢ ██████◣ ◢████◣
◢◤ ◥◣ ◢◤ ◥◣
◤ ◥◣ ◢◤ █...
▎ ◢█◣ ◥◣◢◤ ◢█ █
◣ ◢◤ ◥◣ ◢◣◥◣ ◢◤.
◥██◤ ◢◤ ◥◣
█ ● ● █
█ 〃 ▄ 〃 █
◥◣ ╚╩╝ ◢◤
◥█▅▃▃ ▃▃▅█◤
◢◤ ◥◣
█ █
◢◤▕ ▎◥◣
▕▃◣◢▅▅▅◣◢▃▕
matlab三维曲面图求助
close all
clear,clc
L=1;p=1.2;t=1.2;m=0.8;n=1.2;
syms y z;
x = 1-1/L*((p*(z+1)*gamma(z/(t*n)+1))/((y+1)*gamma(y/(t*m)+1)))^(1/(y-z));
ezsurf(x,)
xlabel( ’a’ );ylabel( ’b’ );
zlabel( ’beta’ );
matlab高手帮我看看怎么把几个相交的曲面弄透明,汇出交线~~~~~~~~~~~~~~~
参考代码
=meshgrid(linspace(9e-9,1e-6,200),linspace(1,20000,200));
f1=(-8.3.*10.^-21.*(4.*0.0000002.^2).^3.*((D+2.*0.0000002)./(((D+2.*0.0000002).^2-4.*0.0000002.^2).^2.*((D+2.*0.0000002).^2-4.*0.0000002.^2+4.*0.0000002.^2).^2))./6)+64.*pi.*78.4.*8.854187817.*10.^-12.*5.2424e+006.*(8.3144621.*298.15./(1.*96485.3365)).^2.*(tanh(1.*96485.3365.*-35.*10.^-3./(4.*8.3144621.*298.15))).^2.*((2.*10.^-7).^2./(2.*2.*10.^-7)).*exp(-5.2424e+006.*D); %曲面1
f2=(-8.3.*10.^-21.*(4.*0.0000002.^2).^3.*((D+2.*0.0000002)./(((D+2.*0.0000002).^2-4.*0.0000002.^2).^2.*((D+2.*0.0000002).^2-4.*0.0000002.^2+4.*0.0000002.^2).^2))./6)+64.*pi.*78.4.*8.854187817.*10.^-12.*1.1722e+007.*(8.3144621.*298.15./(1.*96485.3365)).^2.*(tanh(1.*96485.3365.*-45.*10.^-3./(4.*8.3144621.*298.15))).^2.*((2.*10.^-7).^2./(2.*2.*10.^-7)).*exp(-1.1722e+007.*D); %曲面2
f3=3.2840e-016.*g; %曲面3
cla
hold on;
mesh(D, g,f1,’FaceColor’,’r’,’EdgeColor’,’none’);
mesh(D, g,f2,’FaceColor’,’g’,’EdgeColor’,’none’);
mesh(D, g,f3,’FaceColor’,’b’,’EdgeColor’,’none’);
xlabel(’\bfD’);
ylabel(’\bfg’);
zlabel(’\bff’);
alpha(0.6)
view(30,30)
tol = diff(zlim)*0.002;
r0=(abs(f1-f2)《=tol)&D《5e-7;
zz=(f1+f2)/2;
plot3(D(r0),g(r0),zz(r0),’-’,’linewidth’,2)
tol = diff(zlim)*0.001;
r0=(abs(f3-f2)《=tol);
zz=(f3+f2)/2;
plot3(D(r0),g(r0),zz(r0),’-’,’linewidth’,2)
tol = diff(zlim)*0.001;
r0=(abs(f3-f1)《=tol);
zz=(f3+f1)/2;
plot3(D(r0),g(r0),zz(r0),’-’,’linewidth’,2)
效果图
说明
1、生成网格数据的方法建议用linspace函数,而不要直接指定间隔(原来的数据间隔取的不太好)。
2、为了得到更好的效果,网格数据需要稍微密集一些。
3、求交线的做法是,在对应的x、y坐标,看两个平面(或曲面)的z值是否相差足够小。这种做法思路比较直接,但要求两个曲面的x、y坐标必需对应(如果不对应,可考虑进行插值),而判断z值相等的误差限也需要根据情况适当调整。
4、两个曲面在D较大的位置接近重合,使用现有的方法不太好处理,暂时把该部分数据忽略(也就是不考虑那部分的交线)。
5、透明度可用alpga函数调整,0为完全透明,1为不透明。需要说明的是,设置透明之后,红绿蓝看上去不再是很纯正的颜色。
6、绘制平面和曲面交线可使用函数contourslice,该函数应该也可用于两个曲面相交的场合,但我没有进一步考虑,只是提供一个线索给楼主,感兴趣的话不妨自行研究。
matlab 曲面图形和交线图形截平面
);z1=(x.^2)-(y.^2);z2=0*x+0*y+15;
for ii=1:41
for jj=1:41
if z1(ii,jj)》z2(ii,jj)
z1(ii,jj)=z2(ii,jj);
end
end
end
mesh(x,y,z1)
(Matlab)怎样去掉曲面上的网格线
matlab中画图去掉黑色网格线
画图语句后面加命令:
shading interp 这样整个图就连续光滑了。
或者
h = surf()。
set(h,’edgecolor’,’none’)。
% 如果不想在边界插值平滑。
求助matlab大神,怎样取两方程的交点并绘制3维图形~~~~~~~~~~~~~~~
楼上的程序写的还不错,但是,建议在提交答案之前至少应该做一些基本的验证工作。毕竟,提供一个错误的答案比起没有答案不见得会好到哪里去。
我对这个问题的直观反应是,两个曲面的交线应该会比较平滑,而不应该像楼上给出来的这样杂乱无章。不妨通过一小段绘图的代码验证一下:
N = 25;
x=linspace(0.52, 0.53, N);
y=linspace(-1e-9, 0, N);
z=linspace(1, 20000, N);
=meshgrid(x,y,z);
F1=-2.*pi.*0.05415.*0.0000002.*sin(x).*sin((5.*pi./6)+x)-4./3.*pi.* ...
0.0000002.^3.*2000.*z.*9.78+2./3.*pi.*z.*9.78.*0.0000002.^3.* ...
(1820-1000).*(cos(x)).^3-2./3.*pi.*z.*9.78.*0.0000002.^3.* ...
(1820+1000)-pi.*z.*9.78.*0.0000002.^2.*(y+0.0000002.*cos(x)).* ...
(1820-1000).*(sin(x)).^2;
F2=-sin((5.*pi./6)+x).*besselk(0,(z.*9.78.*(1820-1000)./0.05415).^ ...
0.5.*0.0000002.*sin(x))+(z.*9.78.*(1820-1000)./0.05415).^0.5.* ...
y.*besselk(1,(z.*9.78.*(1820-1000)./0.05415).^0.5.*0.0000002.*sin(x));
clf;
p = patch(isosurface(x,y,z,F1,0,z));
set(p,’facecolor’,’w’,’EdgeColor’,’flat’);
p = patch(isosurface(x,y,z,F2,0,z));
set(p,’facecolor’,’interp’,’EdgeColor’,’interp’);
view(-10,35);
grid on;
xlabel(’x’)
ylabel(’y’)
zlabel(’z’)
绘制得到的曲面图形如下。
从图中我们很直观地初步得到几点结论:
(1)方程1的曲面对y几乎不相关。这一点其实比较容易理解,因为方程中y只出现在下面这一项中
(y+0.0000002.*cos(x))
我们把这个式子的两项绝对值做一下对比:
max(abs(y(:)./(0.0000002.*cos(x(:)))))
可以得到,最大值仅为0.0058,所以y在这个方程中完全可以忽略。
(2)方程1的x和z之间几乎是线性关系。
(3)两个曲面的交线近似是一条很平滑的空间曲线。
接下来,我们尝试画出这条曲线。代码如下:
syms x y z
eq1=-2.*pi.*0.05415.*0.0000002.*sin(x).*sin((5.*pi./6)+x)-4./3.*pi.* ...
0.0000002.^3.*2000.*z.*9.78+2./3.*pi.*z.*9.78.*0.0000002.^3.* ...
(1820-1000).*(cos(x)).^3-2./3.*pi.*z.*9.78.*0.0000002.^3.* ...
(1820+1000)-pi.*z.*9.78.*0.0000002.^2.*(y+0.0000002.*cos(x)).* ...
(1820-1000).*(sin(x)).^2;
eq2=-sin((5.*pi./6)+x).*besselk(0,(z.*9.78.*(1820-1000)./0.05415).^ ...
0.5.*0.0000002.*sin(x))+(z.*9.78.*(1820-1000)./0.05415).^0.5.* ...
y.*besselk(1,(z.*9.78.*(1820-1000)./0.05415).^0.5.*0.0000002.*sin(x));
Z=solve(eq1,z);
eq = subs(eq2, z, Z);
hold on
h = ezplot(eq, );
X = get(h,’XData’);
Y = get(h,’YData’);
view(-10,35)
grid on
z = subs(Z, {x y}, {X Y});
x(z》20000)=NaN;
y(z》20000)=NaN;
z(z》20000)=NaN;
set(h, ’XData’, X, ’YData’, Y, ’ZData’, z, ’linewidth’, 2);
title(’’)
p=findall(gca,’type’,’patch’);
a=0.2;
set(p,’Facealpha’,a,’EdgeAlpha’,a);
得到的绘图结果如下:
对上面的代码,简单说明几点:
(1)可以单独运行,也可以接在前面的代码后面运行(单独运行时不画曲面);
(2)
(3)为了突出显示交线,把两个曲面设为半透明,如果不想要这两个曲面,可以直接在把代码的最后两行换成:
delete(p)
axis tight
即可删除曲面而只保留曲线。
以上程序在2007b上测试通过,其它环境暂未测试。
全部代码已作为附件上传,希望对楼主有帮助,如有问题可追问。
MATLAB曲面
错了,矩阵运算应该用点乘。代码如下:
=meshgrid(0:0.1:20);
Q=9.5*(2*H.*B-(0.243*(H+B*0.5*0.268).^2+0.206*(H-B*0.5*0.268).^2)*0.4452);
surf(H,B,Q)

本文相关文章:
matlab求解微分方程(用matlab求解微分方程初值问题数值解和解析解,求解范围为区间.并画出其数值解和解析解曲线)
2026年8月1日 23:30
更多文章:
数据库管理系统和数据库系统分别侧重(数据库,数据库管理系统,数据库系统,这三个分别是什么意思并举个实例)
2026年9月7日 17:00
springmvc的依赖(springMVC的注入方式有哪几种,这与springMVC依赖)
2026年9月7日 14:00
display flex 自动换行(overflow-y:hidden;overflow-x:auto;无效解决方法)
2026年9月7日 11:00
timestamp without time zone(Postgresql中to_date()函数使用问题)
2026年9月7日 09:40







