⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 运用matlab生成多参数非线性拟合函数的方法.txt

📁 Matlab在化学工程中的应用
💻 TXT
字号:
运用MATLAB生成多参数非线性拟合函数的方法
 
问题的提出

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) 

来自:振荡论坛 作者:zzrrbb(2006-7-28 16:57)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -