查看单个帖子
旧 2007-12-22, 16:55   #2
czy515
初级会员
 
注册日期: 2007-12-20
帖子: 2
声望力: 0
czy515 正向着好的方向发展
默认 继续求助

各位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的值传递到子程序?或者采用其它的解非线性方程的办法?
czy515 当前离线   回复时引用此帖