找回密码
 注册
Simdroid-非首页
查看: 142|回复: 10

急急急!有关画函数曲线的问题!

[复制链接]
发表于 2010-8-23 16:09:11 | 显示全部楼层 |阅读模式 来自 清华大学
各位高人,现有如下问题等待解决,希望能指点一下,小弟不胜感激!
这个函数该如何画出曲线来呢?z=cosx*siny+cosy*sinx (1<x<5,1<y<5),希望赐教!在线等啊!
发表于 2010-8-23 17:04:54 | 显示全部楼层 来自 江苏南京
Simdroid开发平台
本帖最后由 wingmyway 于 2010-8-23 17:49 编辑

用plot3函数试试,取三组向量:
x=1+0.01:0.01:5-0.01;
[x,y]=meshgrid(x);
z=cos(x).*sin(y)+cos(y).*sin(x);
plot3(x,y,z)
grid on
看看是不是你要的结果

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2010-8-23 17:38:28 | 显示全部楼层 来自 湖南湘潭
x = 0:0.01:5;
y = 0:0.01:5;
[X,Y]= meshgrid(x,y);
Z = cos(X).*sin(Y)+cos(Y).*sin(X);
mesh(X,Y,Z);

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2010-8-23 17:46:13 | 显示全部楼层 来自 清华大学
谢谢各位高手指点,本人没用过matlab,一会试试看!thanks a lot,感动的哗哗的!
回复 不支持

使用道具 举报

 楼主| 发表于 2010-8-23 20:15:14 | 显示全部楼层 来自 清华大学
请问,x和y的取值如果不一样,为什么不能计算呢?-0.05<x<0.05,-0.003<y<0.003
回复 不支持

使用道具 举报

 楼主| 发表于 2010-8-23 20:29:46 | 显示全部楼层 来自 清华大学
原题是这样的:但是算不了啊,为什么呢?
x=-50:0.1:50;
y=-3:0.1:3;
[X,Y]=meshgrid(x,y);
Z=7*cos(3.14*X)*sin(3.14*Y)+3*cos(3.14*X)*cos(3.14*Y)+(-9)*(1-abs(X/50))*sin(3.14*Y)+(-4)*(1-abs(X/50))*cos(3.14*Y);
mesh(X,Y,Z);
回复 不支持

使用道具 举报

发表于 2010-8-23 21:02:23 | 显示全部楼层 来自 江苏南京
Matlab中矩阵的乘法有矩阵相乘和矩阵元素相乘(即点乘)两种不同运算,你关键部位少了点
Z=7*cos(3.14*X).*sin(3.14*Y)+3*cos(3.14*X).*cos(3.14*Y)+(-9)*(1-abs(X/50)).*sin(3.14*Y)+(-4)*(1-abs(X/50)).*cos(3.14*Y);
再试试

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2010-8-23 22:41:40 | 显示全部楼层 来自 湖南湘潭
7# wingmyway
Matlab中矩阵的乘法有矩阵相乘和矩阵元素相乘(即点乘)两种不同运算,你关键部位少了点
...

呵呵,补充一下
将普通表达式/函数,如
Z=7*cos(3.14*X)*sin(3.14*Y)+3*cos(3.14*X)*cos(3.14*Y)+(-9)*(1-abs(X/50))*sin(3.14*Y)+(-4)*(1-abs(X/50))*cos(3.14*Y);
化为以矩阵元素为操作对象的表达式/函数可以让Matlab自己完成。

vectorize(s)  s为表达式字符串

vectorize(FUN)  FUN为inline函数

与人工操作相比,用vectorize函数操作方便不易错,但较为机械,形式不太好看,
如 7*cos(3.14*x)  将化为 7.*cos(3.14.*X)

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2010-8-24 20:31:15 | 显示全部楼层 来自 清华大学
我这样算的话为啥不行呢,两位高手,请再次指教下,非常感谢!
x=-0.05:0.001:0.05;
y=-0.003:0.0001:0.003;
p1=7.6685211497218390e+001;
p2=3.2585999184657069e+001;
p3=-9.6502418246451512e+001;
p4=-4.2743333668955316e+001;
x1=0.000000;
x2=0.400000;
y1=0.050000;
y2=-0.050000;
z1=0.003000;
z2=-0.003000;
h1=cos(pi*x)/abs(y1-y2);
h2= 1-2*abs(x)/abs(y1-y2);
f1= sin(pi*abs(x))/abs(z1-z2);
f2= cos(pi*y)/abs(z1-z2);
[X,Y]=meshgrid(x,y);
Z=p1.*h1.*f1+p2.*h1.*f2+p3.*h2.*f1+p4.*h2.*f2;
mesh(X,Y,Z)
回复 不支持

使用道具 举报

发表于 2010-8-24 22:34:02 | 显示全部楼层 来自 湖南湘潭
调换一下顺序,Z应该是在X,Y上进行运算的。

  1. clear all;
  2. clc;
  3. close all;
  4. x  =  - 0.05:0.001:0.05;
  5. y  =  - 0.003:0.0001:0.003;
  6. p1 = 7.6685211497218390e+001;
  7. p2 = 3.2585999184657069e+001;
  8. p3 =  - 9.6502418246451512e+001;
  9. p4 =  - 4.2743333668955316e+001;
  10. x1 = 0.000000;
  11. x2 = 0.400000;
  12. y1 = 0.050000;
  13. y2 =  - 0.050000;
  14. z1 = 0.003000;
  15. z2 =  - 0.003000;
  16. [X,Y] = meshgrid(x,y);
  17. h1 = cos(pi*X)/abs(y1 - y2);
  18. h2 = 1 - 2*abs(X)/abs(y1 - y2);
  19. f1 = sin(pi*abs(X))/abs(z1 - z2);
  20. f2 = cos(pi*Y)/abs(z1 - z2);
  21. Z = p1.*h1.*f1 + p2.*h1.*f2 + p3.*h2.*f1 + p4.*h2.*f2;
  22. mesh(X,Y,Z)
复制代码

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2010-8-25 08:51:04 | 显示全部楼层 来自 清华大学
真的是太感谢你了,指引了我前进的动力啊!谢谢啊
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-6 19:22 , Processed in 0.073348 second(s), 21 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表