matlab软件问题疑问解答提问

1.建立子函数文件,利用fminsearch优化函数,求二元函数f(x,y)= 100(y-x^2)^2+(1-x)^2的极小值,并给出x,y的取值。
2. 一样本数据x=[0.1, 0.2, 0.15, 0, -0.2, 0.3]; y=[0.95,0.84,0.86,1.06,1.50,0.72];如果y=f(x)是个2次多项式,请利用lsqcurvefit编程求出f(x)的表达式。

[x,fmin] = fminsearch(@(x)100*(x(2)-x(1)^2)^2+(1-x(1))^2, [0,0])

结果:

x =

   1.000004385898617   1.000010640991648


fmin =

     3.686176915175907e-10

第2题

x=[0.1, 0.2, 0.15, 0, -0.2, 0.3]; y=[0.95,0.84,0.86,1.06,1.50,0.72];
f = @(a,x)a(1)+a(2)*x+a(3)*x.^2;
a = lsqcurvefit(f,[0;0;0],x,y);
plot(x,y,'bo'); hold on;
fplot(@(x)f(a,x),[-0.3,0.3],'r-')
legend('拟合前','拟合后')
fprintf('表达式:%f+%f*x+%f*x^2\n',a)

结果:

表达式:1.084958+-1.695898*x+1.743180*x^2

img

有帮助望采纳