声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1167|回复: 4

[编程技巧] 求助:matlab隐函数作图

[复制链接]
发表于 2014-3-19 17:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
用ezplot(' 2.*sqrt(2.*x.*sqrt(y))./((x+1).*sqrt(y+1))=0.2',[0,1])可以画出关于x 和y的图形,
那我要画满足这个关系式的x*y要怎么画。。
回复
分享到:

使用道具 举报

 楼主| 发表于 2014-3-19 18:21 | 显示全部楼层
求解答。。
发表于 2014-3-19 21:18 | 显示全部楼层
f(x,y)= 2*sqrt(2*x*sqrt(y)./((x+1)*sqrt(y+1))=0.2是隐函数,可以用 fzero 以解方程的形式得到 y 关于 x 的函数句柄,matlab能识别为函数即可,不需要有确切的表达式。然后,将该函数句柄(句柄就是 @() 的形式)代替  m=g(x,y)=x*y 的 y,再画图即可。举个例子:
  1. x = -10:0.1:10;
  2. y = arrayfun(@(x) fzero(@(y) x+y, 0),x);
  3. m=x+2*y.^2;
  4. plot(x,m)
复制代码

(PS:注意,对于不同的方程,fzero 初值的选取是不同的,上面的初值是 0)

评分

1

查看全部评分

 楼主| 发表于 2014-3-19 22:46 | 显示全部楼层
牛小贱 发表于 2014-3-19 21:18
f(x,y)= 2*sqrt(2*x*sqrt(y)./((x+1)*sqrt(y+1))=0.2是隐函数,可以用 fzero 以解方程的形式得到 y 关于 ...

初值是根据什么选择的?
发表于 2014-3-19 23:19 | 显示全部楼层
本帖最后由 牛小贱 于 2014-3-20 09:01 编辑
shuill 发表于 2014-3-19 22:46
初值是根据什么选择的?

fzero或fsolve取决于初值!初值不同,解也不同。一般是先用ezplot做图找出解大概位置,作为初值。fsolve同时有多初值。例如,举个例子:
  1. clc;clear
  2. ezplot('y=tan(x)-x')
  3. y1=fzero('tan(x)-x',-4)
  4. y2=fzero('tan(x)-x',0)
  5. y3=fzero('tan(x)-x',4)
  6. y4=fsolve('tan(x)-x',[-4,0,4])
复制代码

运行结果:
1.png
2.png

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-3 10:34 , Processed in 0.097985 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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