matlab 中调用 fzero('a*x^2-4',1)时候,里面函数有个a值是之前定义的常量,比如a=1,但是运行错误。

Undefined function or variable 'a'.

在使用fsolve和fzero,各种使用不成,求解的函数很复杂,但类似于上面提出的简单方程,里面有之前定义的常数字母,但是这个字母我有需要 求方程的时候,用程序给他赋值,所以不能直接将a的值带进去。求大神帮忙啊,都搞了一天了,这俩函数搞不定。

出错原因:

按照下面的调用方式

fzero('a*x^2-4',1)

传递给fzero函数的只是一个字符串,与变量a的值没有任何关系。字符串在fzero中进行预处理,会被转换成一个inline函数,该函数包含x和a两个变量,而x被视为求零点的主变量,在迭代计算过程中自动调整取值,但a属于未知量,所以会提示a未定义。

 

解决方法:

定义x为符号变量,然后把sym类型的方程转为字符串或inline函数再调用fzero求解。

 

示例:

>> syms x
>> a=1;
>> fzero(inline(char(a*x^2-4)),1)
ans =
     2 
>> fzero(char(a*x^2-4),1)
ans =
     2

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-24
内嵌函数试一下。