nsxyhjffzq 发表于 2006-9-2 14:14

使用lsqnonlin的困惑!怎么样赋方程中变量的值a?等待中。谢谢!

xdata=;
>> ydata=;
>> a=5;
>> ff=inline('ydata-x(1)*xdata^a-x(2)','x','xdata','ydata');
>> x0=;
>> =lsqnonlin(ff,x0,[],[],[],xdata,ydata);
方程中有一变量a!为什么这样赋值不行。

??? Error using ==> C:\MATLAB6p1\toolbox\optim\private\lsqncommon
User supplied expression or inline function ==> ydata-x(1)*xdata^a-x(2)
failed with the following error:

Error using ==> inlineeval
Error in inline expression ==> ydata-x(1)*xdata^a-x(2)
??? Undefined function or variable 'a'.



Error in ==> C:\MATLAB6p1\toolbox\optim\lsqnonlin.m
On line 121==> = ...

jimin 发表于 2006-9-2 16:22

function fun=nh(x,xdata,ydata,a)
fun=ydata-x(1)*xdata.^a-x(2);


>> xdata=;
ydata=;
a=5;
>> x0=;
>>=lsqnonlin('nh',x0,[],[],[],xdata,ydata,a);
Optimization terminated successfully:
Relative function value changing by less than OPTIONS.TolFun
>> x

x =

    0.0001    3.4922

[ 本帖最后由 jimin 于 2006-9-3 11:41 编辑 ]

AaronSpark 发表于 2006-9-3 08:27

原帖由 jimin 于 2006-9-2 16:22 发表
function fun=nh(x,xdata,ydata)
xdata=;
ydata=;
a=5;
fun=ydata-x(1)*xdata.^a-x(2);

>> x0=;
>> =lsqnonlin('nh',x0,,[],xdata,ydata);

Optimization terminated successfully:
Rel ...

怎么把
xdata=;
ydata=;
a=5;
都写到目标函数里边去了?

nsxyhjffzq 发表于 2006-9-3 11:08

同问,如上所用的方式,有何依据,比如能不能推荐一本关于最优化的matlab的书;
多谢!

jimin 发表于 2006-9-3 11:45

原帖由 nsxyhjffzq 于 2006-9-3 11:08 发表
同问,如上所用的方式,有何依据,比如能不能推荐一本关于最优化的matlab的书;
多谢!
已经改过来了,具体的你在的matlab的help里查一下这个函数的用法
对于最优化这方面我也是不大用的,不过建议你多看看matlab的help,这是最好的资料,其他的很多书只是它的翻译而已,而且翻译的未必准确

高原的金 发表于 2008-10-23 22:04

回复 板凳 AaronSpark 的帖子

不知道兄台是否是这个意思?
function fun=nh(x,data)
a=5;
fun=data(2,:)-x(1)*data(1,:).^a-x(2);

脚本文件:
clear
clc
data=;
x0=;
=lsqnonlin('nh',x0,[],[],[],data);

运行结果和上面一样,
0.000113277962002        3.492234133439846
不过resnorm比较大,17.881887032319774。。。
页: [1]
查看完整版本: 使用lsqnonlin的困惑!怎么样赋方程中变量的值a?等待中。谢谢!