继续求助
各位Matlab高手,我将我上次求助的问题简化了一下,希望各位高手能够帮忙指点迷津!
具体是:我要解一个非线性方程,方程中包含了一些参数,这些参数的值需要通过主程序提供。
例如:我要求解方程:ax+b/x+c=0的解,其中参数a、b、c的值必须由主程序计算得出,我变了一个子程序,通过主程序调用来解方程(当然实际程序要复杂得多):
子程序:
function f=fz(x)
f=a.*x+b./x+c;
主程序在命令窗口输入:
a=1;b=2;c=3;
x=fzero('fz',-5)
运行后总是出现如下错误提示:
??? Error using ==> fzero
FZERO cannot continue because user supplied function_handle ==> fz
failed with the error below.
Undefined function or variable 'a'.
但如果我将参数a=1;b=2;c=3;移到子程序中,变为:
子程序:
function f=fz(x)
a=1;b=2;c=3;
f=a.*x+b./x+c;
主程序在命令窗口输入:
x=fzero('fz',-5)
运行结果正常:x = -2.0000
我现在存在的问题是参数a、b、c的值是由其它程序计算而来,不可能在子程序中输入,请问怎样将参数a、b、c的值传递到子程序?或者采用其它的解非线性方程的办法?
|