请教matlab 的问题,关于fminsearch

问题是这样的,有方程PV/RT=1+A1/V+A2/V^2,已经给出四组P和V的数据,用MATLAB建立方程,使误差SR=PV/RT-1-A1/V-A2/V^2最小,得到... 问题是这样的,有方程PV/RT=1+A1/V+A2/V^2,已经给出四组P和V的数据,用MATLAB建立方程,使误差
SR=PV/RT-1-A1/V-A2/V^2最小,得到A1 A2.我的M文件如下
建立函数:
function f=sr(a,xm,ym)
R=82.05;
T=303;
b=xm.*ym/(R*T);
c=a(1)*(ym.^-1);
d=a(2)*(ym.^-2);
f=b-1-c-d;
end
然后用fminsearch
x=[0.985 1.108 1.363 1.631];
y=[25000 22200 18000 15000];
fminsearch(@sr, [-232.8, -83700],[] ,x, y)
结果出现错误:
??? Subscripted assignmentdimension mismatch.

Error in ==> fminsearch at175
fv(:,1) =funfcn(x,varargin{:});
其中-232.8与-83700是对a1 a1的推测,请告知答案,即a1 a2为何值时,误差最小。
展开
 我来答
dukinkin
2014-10-07 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:925万
展开全部
fminsearch只接受一个输入参数的函数
用匿名函数的办法传递额外的参数

fminsearch(@(a) sr(a,x,y), [-232.8, -83700]);
追问

书上给了个这样的类似的例子

不知道这种命令怎么用。。

最后a1 和a2结果您能告诉我吗,目前手边没有Matlab,无法实验

万分感谢!

追答
看出来了,原来那样输入参数应该也是可以的
你错误的关键是你要优化的目标应干是一个标量值,也就是一个数

你看例子返回的f=sum((ym-yp).^2)是返回平方和是一个标量值
是最小二乘意义上的最优化

你的优化目标
f=b-1-c-d

也就是理论上的
SR=PV/RT-1-A1/V-A2/V^2

是根据P和V和A1,A2(也就是x,y,a)计算出来的结过
x和y都有4个值,所也返回的f也有4个值,所以优化出错

所以要得到结果,关键是选好优化目标
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式