shuill 发表于 2014-3-19 17:59

求助:matlab隐函数作图

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

shuill 发表于 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,再画图即可。举个例子:
x = -10:0.1:10;
y = arrayfun(@(x) fzero(@(y) x+y, 0),x);
m=x+2*y.^2;
plot(x,m)
(PS:注意,对于不同的方程,fzero 初值的选取是不同的,上面的初值是 0)

shuill 发表于 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同时有多初值。例如,举个例子:clc;clear
ezplot('y=tan(x)-x')
y1=fzero('tan(x)-x',-4)
y2=fzero('tan(x)-x',0)
y3=fzero('tan(x)-x',4)
y4=fsolve('tan(x)-x',[-4,0,4])
运行结果:
页: [1]
查看完整版本: 求助:matlab隐函数作图