adminftp 发表于 2005-10-9 14:42

隐函数如何用Matlab来画出曲线?

怎么画?别说只能先求解阿

[ 本帖最后由 lxq 于 2007-5-2 23:55 编辑 ]

linqus 发表于 2005-10-9 15:37

这个在matlab的书籍里面倒是没确切地看到,
mathmatica里面倒是有。:)

suffer 发表于 2005-10-9 22:01

Mathematica中绘制隐函数的命令是ImplicitPlot
Matlab我曾经见人写过一个绘制隐函数的代码,一时找不到了,我在找找看

function implot(fun,rangexy,ngrid)
% Implicit plot function
% function implot(fun,rangexy,ngrid)
% fun is 'inline' function f(x,y)=0 (Note function written as equal to zero)
% rangexy = range over which x and y is ploted default(-2*pi,2*pi)
% ngrid is the number of grid points used to calculate the plot,
% Start with course grid (ngrid =20) and then use finer grid if necessary
% default ngrid=50
%
% Example
% Plot y^3+exp(y)-tanh(x)=0
%
% write function f as an 'inline' function of x and y-- right hand side
% equal to zero
%
% f=inline('y^3+exp(y)-tanh(x)','x','y')
% implot(f,[-3 3 -2 1])

%       A.Jutan UWO 2-2-98<a href="mailto:ajutan@julian.uwo.ca" target="_blank">ajutan@julian.uwo.ca</a>

if nargin == 1;% grid value and ranges not specified calculate default
      rangexy=[-2*pi,2*pi,-2*pi,2*pi];
   ngrid=50;
end

if nargin == 2;% grid value not specified
   ngrid=50;
end

% get 2-D grid for x and y

xm=linspace(rangexy(1),rangexy(2),ngrid);
ym=linspace(rangexy(3),rangexy(4),ngrid);
=meshgrid(xm,ym);
fvector=vectorize(fun);% vectorize the inline function to handle vectors of x y
fvalues=feval(fvector,x,y); %calculate with feval-this works if fvector is an m file too
%fvalues=fvector(x,y); % can also calculate directly from the vectorized inline function
contour(x,y,fvalues,,'b-');% plot single contour at f(x,y)=0, blue lines
xlabel('x');ylabel('y'); grid

[ 本帖最后由 ChaChing 于 2010-7-2 14:53 编辑 ]

linqus 发表于 2005-10-10 16:13

谢谢分享,收下,^_^

brianlei 发表于 2005-10-10 23:44

matlab7中有直接绘制隐函数曲线的命令
其调用格式:ezplot(隐函数表达式)
如要绘制f(x,y)=y^3+exp(y)-tanh(x)的曲线,命令为:
ezplot('y^3+exp(y)-tanh(x)')
上面的语句将自动选择x轴的范围[-6,6],要自己定义绘制区间,如在[-10,10]绘制.可用下面语句:
ezplot('y^3+exp(y)-tanh(x)',[-10,10])

gg88ray 发表于 2005-10-16 12:57

如果是f(x,y,z)=0
能用ezplot畫嗎?

suffer 发表于 2005-10-16 15:54

如果是f(x,y,z)=0
能用ezplot畫嗎?
用ezplot3

zxjaly 发表于 2005-10-18 17:36

在matlab6.5中能用ezplot3直接画隐函数曲线吗?

glise 发表于 2005-10-18 18:02

在matlab6.5中能用ezplot3直接画隐函数曲线吗?
6.5不行,7.0我没试过,不过如果ezplot可以画二维隐函数曲线,那ezplot3应该也行

zxjaly 发表于 2005-10-18 18:27

三维画圆问题
是可以用ezplot3,问题是y和z都已经表示成了x的函数!
如果是隐函数怎么办呢?
上面的那个程序只能画二维的!

gghhjj 发表于 2005-10-19 09:28

是可以用ezplot3,问题是y和z都已经表示成了x的函数!
如果是隐函数怎么办呢?
上面的那个程序只能画二维的!

一个三维隐函数绘图的例子

% draw3varf.m
% surface of constant value plot.
% draw3varf(X,Y,Z,CONST) draws a surface of constant value
% for a function of three variables: F(X,Y,Z) = CONST .
% The color of each patch is determined by its
% orientation with respect to a specified direction.
% F must be an M-by-N-by-P volume array.
% x=1:0.1:10;y=1:0.1:10;z=0:0.1:10;
% =meshgrid(x,y,z);
% f=(x+y+z).*(x.*y+x.*z+y.*z)-10*x.*y.*z-a;
% Li wenyong 2004.2.25 copyright
const=0;
x=1:0.1:10;y=1:0.1:10;z=0:0.1:10;
=meshgrid(x,y,z);
f=(x+y+z).*(x.*y+x.*z+y.*z)-10*x.*y.*z-const;
p=patch(isosurface(x,y,z,f,0));
set(p, 'FaceColor', 'red', 'EdgeColor', 'none');
daspect()
view(3)
camlight; lighting phong

cycr1234 发表于 2006-3-25 12:39

我是6.5
输入ezplot3
提示错误怎么办?

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

用3楼的那个函数来画

[ 本帖最后由 happy 于 2007-4-14 19:56 编辑 ]

stan 发表于 2006-8-11 14:34

我有个问题:
遗传算法中假设产生出种群为某个隐函数的系数。是可以画出图形。
但关键是怎样能够求出解来啊?
如果你自己一个个代进去可以,但这不但速度慢麻烦而且好象失去了遗传算法的某些本质!
我的问题是怎样才能求种群产生后隐函数一系列的解!
期待能够解决!!???

vib 发表于 2006-12-7 20:29

复数呢?比如z^10-1=0可以吗?她提示我??? Undefined function or variable 'z'.
那要怎莫设呢?
页: [1] 2
查看完整版本: 隐函数如何用Matlab来画出曲线?