马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
问题的提出
x=[3 3 3 3 3 6 6 6 6 6 12 12 12 12 12 24 24 24 24 24];
y=[1.41 1.45 1.51 1.55 1.58 1.41 1.45 1.51 1.55 1.58 1.41 1.45 1.51 1.55 1.58 1.41 1.45 1.51 1.55 1.58];
z=[4.356 4.356 4.356 4.356 4.356 4.079 3.274 2.875 2.594 2.291 3.151 2.8 2.451 2.018 1.5 3.049 2.691 2.376 1.885 1.225];
求 z(i)=f(x(i),y(i))
一: 多项式拟和
采用最小二乘法拟和,事先设定多项式表达形式,用最小二乘法优化出系数
程序如下:
%定义函数,求系数
function [A]=xishu(x ,y)
A=[x^3 ,x^2*y, y^2*x, y^3, x^2 ,x*y , y^2 , x, y];
%主函数
x=[3 6 12 24 ];
y=[1.41 1.45 1.51 1.55 1.58];
k=1;
for i=1:4
for j=1:5
A(k,:)=xishu(x(i) ,y(j));
k=k+1;
end
end
Zo=[4.356 4.356 4.356 4.356 4.356 4.079 3.274 2.875 2.594 2.291 3.151 2.8 2.451 2.018 1.5 3.049 2.691 2.376 1.885 1.225 ]';
[C,fevl]=lsqlin(A,Zo)
%拟和函数的形式
表达式=C'*A;
二 非线性拟和
工程中常用的拟和函数表达式通常以e指数居多,lsqlin命令不适合了。
%定义一个合适的函数表达形式
function y=hanshu(b,A);
a0=b(1);
a1=b(2);
a2=b(3);
a3=b(4);
a4=b(5);
lab=A(:,1);
cap=A(:,2);
xw=(1./(lab.^1.5)-a2*ones(20,1)).*(a3*cap+a4*ones(20,1));
y=a0*ones(20,1)+a1.*exp(xw);
%主函数求系数
x=[3 3 3 3 3 6 6 6 6 6 12 12 12 12 12 24 24 24 24 24];
y=[1.41 1.45 1.51 1.55 1.58 1.41 1.45 1.51 1.55 1.58 1.41 1.45 1.51 1.55 1.58 1.41 1.45 1.51 1.55 1.58];
z=[4.356 4.356 4.356 4.356 4.356 4.079 3.274 2.875 2.594 2.291 3.151 2.8 2.451 2.018 1.5 3.049 2.691 2.376 1.885 1.225];
A=[x' y'];
b0=[10 -5 1 .1 .1 ];
[b,r,j]=nlinfit(b,z','hanshu',b0);
y=hanshu(b,A) |