请教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为何值时,误差最小。 展开
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为何值时,误差最小。 展开
展开全部
fminsearch只接受一个输入参数的函数
用匿名函数的办法传递额外的参数
fminsearch(@(a) sr(a,x,y), [-232.8, -83700]);
用匿名函数的办法传递额外的参数
fminsearch(@(a) sr(a,x,y), [-232.8, -83700]);
追答
看出来了,原来那样输入参数应该也是可以的
你错误的关键是你要优化的目标应干是一个标量值,也就是一个数
你看例子返回的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个值,所以优化出错
所以要得到结果,关键是选好优化目标
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询