roll66 发表于 2006-3-16 20:42

[求助] 三维画图的定义域问题

大家好,三维画图时,自定义x,y用meshgrid生成矩形格点矩阵,即定义域是在一个矩形区域
有没有一种方法定义定义域呢,比如说定义域是在一个抛物线内,怎样在抛物线内生成格线?
用ezmesh可自动定义定义域,但是怎么还会出现dividing by zero?

happy 发表于 2006-3-17 07:29

把代码贴出来看看吧

roll66 发表于 2006-3-17 13:39

a=0.5;b=33.5;y0=0.005;v0=0.04;
%syms a b y0 v0
syms t x y
w=sqrt(b+y);
e=(a+x)*0.5/w;
wd=w*sqrt(1-e^2);
d0=sqrt(y0^2+((v0+e*w*y0)/wd)^2);
s=simple(d0*exp(-e*w*t)*sin(wd*t+atan(y0*wd/(v0+e*w*y0))));
ds=simple(diff(s,t));
u=simple(x*ds+y*s);
du=simple(diff(u,t));
tu=solve(du,t);
u1=simple(subs(u,t,tu));
ezmesh(u1,);
运行后,Warning: Divide by zero.ezmesh自定义了定义域应该不会出现分母为0的点?

把a,b,y0,v0(均大于0)当作符号时,u1函数的定义域应该满足
-4*b-4*y+a^2+2*a*x+x^2<0,即在平面上是一个向上的抛物线的内部,

用[ x,y]=meshgrid(0:0.5:15,0:0.5,15),mesh画u1时,表示定义域是一个矩形区域,超出了函数定义域范围,运行时出现“x,y,z can not be complex”

roll66 发表于 2006-3-17 14:00

happy大侠,还有个问题:
ezplot('exp(2*t)*sin(3*t)',);
figure;t=;y=exp(2.*t).*sin(3.*t);plot(t,y);
两者画出的图怎么不一样呢,用ezplot画出的图是断开的,是不是坐标轴范围的问题?
怎样改呢?

happy 发表于 2006-3-17 15:59

运行后,Warning: Divide by zero.ezmesh自定义了定义域应该不会出现分母为0的点?
把a,b,y0,v0(均大于0)当作符号时,u1函数的定义域应该满足
-4*b-4*y+a^2+2*a*x+x^2<0,即在平面上是一个向上的抛物线的内部,
用[ x,y]=meshgrid(0:0.5:15,0:0.5,15),mesh画u1时,表示定义域是一个矩形区域,超出了函数定义域范围,运行时出现“x,y,z can not be complex”

ezmesh(u1,);
改为ezmesh(u1,);
就行了,式子太长,你自己好好检查一下吧,应该是不等于0就行了

happy 发表于 2006-3-17 16:15

两者画出的图怎么不一样呢,用ezplot画出的图是断开的,是不是坐标轴范围的问题?
怎样改呢?
是的
ezplot('exp(2*t)*sin(3*t)',);
axis();
figure;
t=;
y=exp(2.*t).*sin(3.*t);
plot(t,y);
页: [1]
查看完整版本: [求助] 三维画图的定义域问题