数学建模社区-数学中国

标题: 疯了,求助啊~急 [打印本页]

作者: pwl1991317    时间: 2010-3-20 01:06
标题: 疯了,求助啊~急
要进行一个参数拟合
等式为  w=k*c.^2*l

在matlab中输入如下程序:

function w=myfun(k,c,l);
w=k*c.^2*l


(k 是要拟合的参数)

c=[24.8,21.3,27.9,24.8,21.6,31.8,22.9,21.6];
l=[36.8,31.8,43.8,36.8,32.1,45.1,35.9,32.1];
w=[765,482,1162,737,482,1389,652,454];
k=0;
k=lsqcurvefit(@myfun,k,c,l)

回车后出现:
>> k=lsqcurvefit(@myfun,k,c,l)
??? Error using ==> optim\private\lsqncommon
User supplied function failed with the following error:
Input argument "l" is undefined.
Error in ==> lsqcurvefit at 149
[x,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] = ...


有两个问题,
1.我的k的初值可以这样赋吗?
2.这个程序最后是除什么问题了??

原谅  
我是一只小菜鸟~


请你指出我的错误 顺便给我个正确的程序
先谢谢了~~~
作者: pwl1991317    时间: 2010-3-20 08:21


。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
作者: madio    时间: 2010-3-20 10:37
我给你改了一下,不知道是不是符合你的要求!
function w=myfun(k,c);
l=[36.8,31.8,43.8,36.8,32.1,45.1,35.9,32.1];
  w=k*c.^2.*l
>>c=[24.8,21.3,27.9,24.8,21.6,31.8,22.9,21.6];
>> w=[765,482,1162,737,482,1389,652,454];
>> k=0;
>> k=lsqcurvefit(@myfun,k,c,w)
运行结果:
Optimization terminated: norm of the current step is less
than OPTIONS.TolX.

k =

    0.0322

建议你好好读一读lsqcurvefit的帮助,里面有例子!
作者: pwl1991317    时间: 2010-3-20 19:46
回复 3# madio

sfunction w=myfun(k,c);
  
请问下,为什么这一步括号里面只有k 和 c??
作者: madio    时间: 2010-3-20 23:09
我把l放在函数里面了,因为lsqcurvefit函数的参数只让输入两个,所以我就放了两个!
作者: pwl1991317    时间: 2010-3-21 11:41


谢谢~。。。。。。。。。。。。。。




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5