MATLAB中隐函数含有待定系数求解错误

syms h x y
ezplot('x+y')
可以把图画出来,
但是syms h x y
h=1ezplot('x+h*y')
就会报错
??? Error using ==> charCell elements must be character arrays.
Error in ==> ezplot at 158
fmsg = char(f);Error in ==> Untitled at 4ezplot('x+h*y')
求大神帮忙解决一下

用下面的方式:

syms h x y
h=1
ezplot(x+h*y)

你原来的写法存在的问题是,由于表达式写成字符串,定义的符号变量不起任何作用,而字符串中会被理解为存在三个变量(h,x,y),但ezplot的表达式只允许出现一个或两个变量(后者为隐函数绘图),所以导致出错。

 

至于说报错提示的信息,看起来让人感到莫名其妙,其实,这是ezplot函数的一个愚蠢的BUG导致,其本意是想提示

<XXX-function> cannot be plotted in the xy-plane.

其中<XXX-function>为函数表达式,该表达式通过char函数来获得,但ezplot这个函数前面的代码把字符串转换为inline函数后,又把inline函数放在了cell数组中,后面要进行错误处理时,却忘记了这一点,所以出现这样奇怪的错误提示。经核实,该BUG在2007b中仍然存在,但2013a则没有问题:

>> ezplot('x+h*y')
Error using ezplot (line 163)
x+h*y cannot be plotted in the xy-plane.

至于说是在哪个版本改过来的,可以肯定是在这两个版本之间,但知道具体的版本意义并不大(知道原因比较有意义),我就不考证了。

温馨提示:答案为网友推荐,仅供参考
相似回答