MATLAB程序(线性拟合)

合集下载

matlab各类拟合曲线代码

matlab各类拟合曲线代码

标题:探索MATLAB中各类拟合曲线的代码应用在MATLAB中,拟合曲线是数据分析和模型建立中常用的技术之一。

通过拟合曲线,我们可以了解数据之间的关联性并建立预测模型,为进一步分析和应用数据奠定基础。

本文将深入探讨MATLAB中各类拟合曲线的代码应用,帮助读者更深入地理解该主题。

一、线性拟合曲线1. 使用MATLAB进行线性拟合曲线的代码示例在MATLAB中,使用polyfit函数可以进行线性拟合。

对一组数据点(x, y)进行线性拟合,代码如下:```matlabx = [1, 2, 3, 4, 5];y = [2, 3.5, 5, 7, 8.5];p = polyfit(x, y, 1);```其中,x为自变量,y为因变量,1表示进行一次线性拟合。

通过polyfit函数,可以得到线性拟合的系数p。

2. 线性拟合曲线的应用和特点线性拟合曲线适用于线性关系较为明显的数据,例如物理实验数据中的直线关系。

通过线性拟合,可以获得各项系数,对数据进行预测和建模。

二、多项式拟合曲线1. 使用MATLAB进行多项式拟合曲线的代码示例在MATLAB中,使用polyfit函数同样可以进行多项式拟合。

对一组数据点(x, y)进行二次多项式拟合,代码如下:```matlabx = [1, 2, 3, 4, 5];y = [1, 4, 9, 16, 25];p = polyfit(x, y, 2);```其中,x为自变量,y为因变量,2表示进行二次多项式拟合。

通过polyfit函数,同样可以得到多项式拟合的系数p。

2. 多项式拟合曲线的应用和特点多项式拟合曲线适用于数据中存在曲线关系的情况,通过选择合适的最高次数,可以灵活地拟合各种曲线形状。

三、非线性拟合曲线1. 使用MATLAB进行非线性拟合曲线的代码示例在MATLAB中,使用fit函数可以进行非线性拟合。

对一组数据点(x, y)进行指数函数拟合,代码如下:```matlabx = [1, 2, 3, 4, 5];y = [2.1, 7.4, 16.1, 29.3, 48.2];f = fit(x', y', 'exp1');```其中,x为自变量,y为因变量,'exp1'表示进行指数函数拟合。

matlab回归拟合

matlab回归拟合

在MATLAB中进行回归拟合的方法有很多种,包括线性回归、多项式回归和非线性回归。

1. 线性回归拟合:使用“polyfit”函数进行线性回归拟合。

例如,如果你有一组x和y数据,可以使用以下代码进行线性回归拟合:```matlabx = [1, 2, 3, 4, 5];y = [2, 4, 5, 4, 5];p = polyfit(x, y, 1);```这将返回一个多项式系数数组p,其中p(1)是斜率,p(0)是截距。

2. 多项式回归拟合:使用“polyfit”函数进行多项式回归拟合。

你需要指定多项式的阶数。

例如,如果你想进行二次多项式回归,可以使用以下代码:```matlabx = [1, 2, 3, 4, 5];y = [2, 4, 5, 4, 5];p = polyfit(x, y, 2);```这将返回一个二次多项式系数数组p。

3. 非线性回归拟合:非线性回归可以通过非线性函数来拟合数据,可以更好地适应复杂的数据模式。

在MATLAB中,可以使用“lsqcurvefit”函数来进行非线性回归拟合,需要指定拟合函数和初始参数。

例如,如果你有一个非线性函数形式,可以定义一个函数句柄,然后使用“lsqcurvefit”进行拟合:```matlab定义非线性函数句柄f = @(b,x) b(1)*exp(b(2)*x(:,1)) + b(3)*sin(b(4)*x(:,2));定义初始参数b0 = [1,1,1,1];进行非线性回归拟合xdata = [1:10];ydata = [2*exp(1)+sin(1:10)]; 生成一些模拟数据b = lsqcurvefit(f, b0, xdata', ydata');```这将返回拟合参数b,你可以使用这些参数来预测新的数据点。

MATLAB函数拟合指令MATLAB拟合函数使用说明

MATLAB函数拟合指令MATLAB拟合函数使用说明

MATLAB函数拟合指令MATLAB拟合函数使用说明一维数据拟合:在MATLAB中,可以使用polyfit和fit函数进行一维数据的拟合。

1. polyfit函数:polyfit函数用于将数据集拟合到一个多项式模型。

语法如下:```[p, S] = polyfit(x, y, n)```其中,x和y表示数据集的x轴和y轴值,n是一个整数,表示拟合的多项式阶数。

p是一个包含多项式系数的向量,S是一个结构体,包含了拟合误差和其他信息。

2. fit函数:fit函数用于将数据集拟合到自定义的非线性函数模型。

语法如下:```f = fit(x, y, model)```其中,x和y表示数据集的x轴和y轴值,model表示自定义的非线性函数模型。

可以使用fittype函数创建一个函数模型对象,例如:```model = fittype('a * exp(b * x)');```然后,将这个函数模型传递给fit函数即可。

多维数据拟合:在MATLAB中,可以使用fit函数进行多维数据的拟合。

1. fit函数:fit函数也可以用于多维数据的拟合,只需将数据集转换为table格式。

语法如下:```f = fit(x, y, model)```其中,x和y表示多维数据集的自变量和因变量,model表示自定义的非线性函数模型。

自定义函数模型的建立:除了使用内置的多项式模型和其他简单模型,也可以自定义非线性函数模型。

需要定义一个函数句柄,例如:``````然后,将这个函数句柄传递给fittype函数,创建一个函数模型对象,例如:```model = fittype(func);```最后将这个函数模型对象传递给fit函数。

拟合结果的可视化:拟合结果可以通过绘制原始数据和拟合函数来进行可视化。

可以使用plot函数绘制原始数据点,使用plot函数、plotfit函数或者ezplot函数绘制拟合函数曲线。

总结:MATLAB提供了多种函数拟合方法,可以用于一维和多维数据拟合。

Matlab中的曲线拟合方法

Matlab中的曲线拟合方法

Matlab中的曲线拟合方法引言在科学与工程领域,数据拟合是一个重要的技术,可用于分析实验数据、预测未知的对应关系,并量化观察到的现象。

其中,曲线拟合是一种常见的数据拟合方法,而Matlab作为一种功能强大的科学计算软件,提供了多种曲线拟合工具和函数,方便用户进行数据分析和模型建立。

本文将对Matlab中的曲线拟合方法进行详细介绍和讨论。

一、线性拟合线性拟合是最简单且常见的曲线拟合方法,其基本思想是通过一条直线拟合数据点,找到最佳拟合直线的参数。

在Matlab中,可以使用polyfit函数实现线性拟合。

该函数接受两个输入参数,第一个参数为数据点的x坐标,第二个参数为数据点的y坐标。

返回结果为一个一次多项式拟合模型的参数。

例如,我们有一组实验测量数据如下:x = [1, 2, 3, 4, 5];y = [3, 5, 7, 9, 11];通过polyfit函数进行线性拟合:coeff = polyfit(x, y, 1);其中,1表示要拟合的多项式的次数,这里我们选择了一次多项式(直线)。

coeff即为拟合得到的直线的参数,可以通过polyval函数将参数代入直线方程,得到对应x的y值。

y_fit = polyval(coeff, x);接下来,我们可以使用plot函数将原始数据点和拟合曲线都绘制在同一张图上:figure;plot(x, y, 'o', 'MarkerSize', 10); % 绘制原始数据点hold on;plot(x, y_fit); % 绘制拟合曲线xlabel('x');ylabel('y');legend('原始数据点', '拟合曲线');通过观察图像,我们可以初步判断拟合的效果如何。

如果数据点较为分散,直线拟合效果可能较差。

在此情况下,可以考虑使用更高次的多项式进行拟合。

二、多项式拟合多项式拟合是一种常见的曲线拟合方法,其基本思想是通过一个一定次数的多项式函数来拟合数据点。

matlab数值分析处理线性拟合

matlab数值分析处理线性拟合

插值与拟合1、 已知()101x f x e x =+-(1) 求函数在0,0.2,0.4,0.6,0.8,1x =处的函数值;(2) 对上述数据进行多项式插值,作出多项式5()y P x =的图像,与原函数图象比较;(3) 对上述数据做线性拟合,作出多项式1()y P x =的图像;(4) 构造()f x 在[0,1]区间内的5次切比雪夫多项式5()T x ,并作出图像。

1问题分析本大题是关于 插值问题(详细理论分析,知识积累,我在日志中给了总结) 问题1: 建立函数问题,并求其函数值。

求得:yy =0 2.2214 4.4918 6.8221 9.2255 11.7183问题2:是牛顿插值法应用问题:我首先建立差分表,在根据差分表求牛顿插值多项式。

A =0 0 0 0 0 0 00.2000 2.2214 2.2214 0 0 0 00.4000 4.4918 2.2704 0.0490 0 0 0 0.6000 6.8221 2.3303 0.0599 0.0109 0 00.8000 9.2255 2.4034 0.0731 0.0133 0.0024 01.0000 11.71832.4927 0.0893 0.0162 0.0029 0图:问题3:是线性拟合问题:先定义内积函数,再列出法方程,然后求解,最后编出多项式函数结果:y=-0.1059+11.7049x问题4:是切比雪夫插值问题:先生成切比雪夫点,再列出差分表,再插值t =0.98,0.85,0.63,0.37,0.15,0.017差分表A =0.9800 11.4645 0 0 0 0 00.8500 9.8396 -1.6248 0 0 0 00.6300 7.1776 -2.6620 -1.0372 0 0 00.3700 4.1477 -3.0299 -0.3678 0.6694 0 00.1500 1.6618 -2.4859 0.5440 0.9118 0.2424 00.0170 0.1871 -1.4747 1.0112 0.4672 -0.4446 0图2问题解答:(1)建立函数:function y=funzhu(x)y=exp(x)+10*x-1;endxx=0:0.2:1;yy=zeros(1,6);for i=1:length(xx)yy(i)=funzhu(xx(i));结果:yy =0 2.2214 4.4918 6.8221 9.2255 11.7183(2) 对上述数据进行多项式插值,作出多项式5()y P x的图像,与原函数图象比较;1.阶数为7的均差的程序:global An=length(xx);n=6;A=zeros(n,n+1);A(:,1)=xx';A(:,2)=yy';for j=3:n+1for i=j-1:nA(i,j)=(A(i,j-1)-A(i-1,j-1))/(A(i,1)-A(i-(j-2),1));endendA差分表结果:A =A =0 0 0 0 0 0 00.2000 2.2214 2.2214 0 0 0 00.4000 4.4918 2.2704 0.0490 0 0 00.6000 6.8221 2.3303 0.0599 0.0109 0 00.8000 9.2255 2.4034 0.0731 0.0133 0.0024 01.0000 11.71832.4927 0.0893 0.0162 0.0029 02.建立多项式P5函数:function y=Pn(x)global A[m,n]=size(A);y=0;for i=1:madd=A(i,i+1);if i>1for j=1:i-1add=add*(x-A(j,1));endendy=y+add;画图:x=0:0.05:1;fplot(@funzhu,[0,1],'y*') hold onfplot(@Pn,[0,1],'r')(3)对上述数据做线性拟合,作出多项式1()y P x的图像;g0=0;g1=0;g2=0;G1=0;G2=0;for i=1:length(xx)g0=1+g0;g1=g1+xx(i);g2=g2+xx(i)^2;G1=G1+yy(i);G2=G2+yy(i)*xx(i);endA=[g0,g1;g1,g2];G=[G1;G2];d=A\G结果:d =-0.105911.7049所以:y=-0.1059+11.7049x画图:x=0:0.2:1;fplot(@funzhu,[0,1],'y*')hold onfplot(@Pn,[0,1],'r')hold ony=-0.1059+11.7049*x;plot(x,y,'b+')(4)构造()f x 在[0,1]区间内的5次切比雪夫多项式5()T x ,并作出图像。

如何在Matlab中进行数据拟合

如何在Matlab中进行数据拟合

如何在Matlab中进行数据拟合数据拟合是数据分析和建模中的一个重要环节,它可以帮助我们找到一个数学函数或模型来描述一组观测数据的变化规律。

在Matlab中,有多种方法和工具可以用来进行数据拟合,本文将介绍其中几种常用的方法和技巧。

一、线性回归线性回归是最简单和常见的数据拟合方法之一。

在Matlab中,我们可以使用polyfit函数来实现线性回归。

该函数基于最小二乘法,可以拟合一个给定度数的多项式曲线到一组数据点上。

假设我们有一组观测数据的x和y坐标,我们可以使用polyfit函数拟合一个一次多项式来获得最佳拟合曲线的系数。

代码示例如下:```x = [1, 2, 3, 4, 5];y = [1, 3, 5, 7, 9];p = polyfit(x, y, 1); % 一次多项式拟合```拟合得到的系数p是一个向量,其中p(1)表示一次项的系数,p(2)表示常数项的系数。

通过这些系数,我们可以得到一次多项式的表达式。

用polyval函数可以方便地计算在指定x值处的拟合曲线上的y值。

代码示例如下:```x = [1, 2, 3, 4, 5];y = [1, 3, 5, 7, 9];p = polyfit(x, y, 1);x_new = 6;y_new = polyval(p, x_new); % 在x_new处的预测值```二、非线性回归除了线性回归,我们还经常遇到需要拟合非线性数据的情况。

Matlab提供了curve fitting toolbox(曲线拟合工具箱),其中包含了很多用于非线性数据拟合的函数和工具。

在使用曲线拟合工具箱之前,我们需要先将需要拟合的非线性函数进行参数化。

常见的方法包括使用指数函数、对数函数、正弦函数等对原始函数进行转换,之后再进行拟合。

例如,我们有一组非线性数据,并怀疑其与指数函数有关。

我们可以通过以下代码进行拟合:```x = [1, 2, 3, 4, 5];y = [2.1, 3.9, 6.2, 8.1, 12];fun = @(p, x) p(1)*exp(p(2)*x) + p(3); % 指数函数p0 = [1, 0.5, 0]; % 初始值p = lsqcurvefit(fun, p0, x, y); % 非线性拟合```其中,fun是一个匿名函数,表示我们拟合的非线性函数形式,p是待求解的参数向量。

matlab拟合动力学参数

matlab拟合动力学参数

matlab拟合动力学参数
在Matlab 中,可以使用曲线拟合工具来拟合动力学参数。

以下是一些基本步骤:
1. 准备数据:将实验数据整理成数组形式,其中每一行代表一个时间点的数据,每一列代表一个参数的值。

2. 选择拟合函数:根据实验数据的特点,选择合适的拟合函数。

例如,如果数据呈现线性趋势,可以使用线性拟合函数;如果数据呈现指数增长或衰减趋势,可以使用指数拟合函数。

3. 调用拟合函数:在Matlab 中,可以使用`polyfit`函数进行线性拟合,使用`fit`函数进行非线性拟合。

调用拟合函数时,需要指定拟合函数的类型和参数。

4. 评估拟合结果:可以使用拟合函数的输出参数来评估拟合结果的质量。

例如,可以计算残差的平方和(SSE)或均方根误差(RMSE)等指标。

5. 可视化拟合结果:可以使用`plot`函数将实验数据和拟合曲线绘制在同一张图上,以便直观地比较拟合结果和实验数据的差异。

需要注意的是,拟合结果的准确性取决于实验数据的质量和拟合函数的选择。

在进行拟合之前,需要对实验数据进行预处理和筛选,以确保数据的可靠性和准确性。

同时,需要根据实际情况选择合适的拟合函数,并对拟合结果进行合理的解释和分析。

matlab的拟合函数

matlab的拟合函数

matlab的拟合函数拟合函数是MATLAB中非常常用的功能,它可以通过给定的一组数据点,找到最符合这些数据点的曲线或函数。

拟合函数在科学研究、工程应用和数据分析等领域都有广泛的应用。

在MATLAB中,拟合函数的使用非常简单。

首先,我们需要准备一组数据点,这些数据点可以是实验测量得到的,也可以是通过其他手段获得的数据。

然后,我们选择合适的拟合函数模型,并使用MATLAB提供的拟合函数进行拟合计算。

常用的拟合函数模型有多种,包括线性模型、多项式模型、指数模型、对数模型、幂函数模型等。

不同的模型适用于不同类型的数据。

在选择拟合函数模型时,我们需要根据数据的特点和需求进行选择。

以线性拟合为例,假设我们有一组数据点,表示了某种物理量在不同时间点的取值。

我们希望找到一个线性函数,最好地拟合这些数据点。

在MATLAB中,可以使用polyfit函数进行线性拟合。

我们需要将数据点存储在一个矩阵中,其中第一列是时间点,第二列是物理量的取值。

然后,使用polyfit函数进行线性拟合,拟合函数的形式为y = ax + b,其中a和b是待求的参数。

```matlabdata = [1, 2; 2, 3; 3, 4; 4, 5; 5, 6]; % 假设我们有一组数据点x = data(:, 1); % 提取时间点y = data(:, 2); % 提取物理量的取值p = polyfit(x, y, 1); % 进行线性拟合a = p(1); % 拟合得到的参数ab = p(2); % 拟合得到的参数b```通过以上代码,我们可以得到线性拟合函数的参数a和b的值。

然后,我们可以使用这些参数来计算拟合曲线在任意时间点的取值。

```matlabx_fit = 1:0.1:5; % 定义拟合曲线的时间点y_fit = a * x_fit + b; % 计算拟合曲线的取值```通过以上代码,我们可以得到拟合曲线在时间点x_fit处的取值。

matlab 拟合曲线计算标准差

matlab 拟合曲线计算标准差

Matlab是一款强大的数学软件,可以进行各种数值计算和数据分析。

其中,拟合曲线和标准差计算是Matlab常用的功能之一。

本文将介绍Matlab中拟合曲线的计算方法,并且探讨如何使用Matlab计算标准差。

文章将按照以下结构进行分析和讨论:一、Matlab中拟合曲线的计算方法1. 线性拟合2. 非线性拟合3. 多项式拟合二、Matlab中标准差的计算方法1. 总体标准差2. 样本标准差3. 加权样本标准差三、示例分析1. 实例一:拟合曲线的计算与标准差的应用2. 实例二:使用Matlab进行数据分析四、结论与展望一、Matlab中拟合曲线的计算方法1. 线性拟合在Matlab中进行线性拟合,可以使用polyfit函数。

该函数通过最小二乘法拟合出多项式系数,从而得到最佳拟合曲线。

对于给定的一组数据x和y,可以使用以下代码进行线性拟合:```p = polyfit(x,y,1);y_fit = polyval(p,x);```其中,p是拟合得到的多项式系数,y_fit是根据拟合曲线计算得到的y值。

2. 非线性拟合对于非线性拟合,Matlab提供了lsqcurvefit函数。

该函数可以拟合出任意给定的非线性函数曲线。

对于给定的一组数据x和y,可以使用以下代码进行非线性拟合:```fun = @(p,x) p(1)*exp(p(2)*x);p0 = [1, 0.1];p = lsqcurvefit(fun,p0,x,y);y_fit = fun(p,x);```其中,fun是要拟合的非线性函数,p0是拟合参数的初始值,p是最终拟合得到的参数,y_fit是根据拟合曲线计算得到的y值。

3. 多项式拟合Matlab中还可以使用polyfit函数进行多项式拟合。

对于给定的一组数据x和y,可以使用以下代码进行多项式拟合:```p = polyfit(x,y,n);y_fit = polyval(p,x);```其中,n是多项式的阶数,p是拟合得到的多项式系数,y_fit是根据拟合曲线计算得到的y值。

用Matlab进行最小二乘法线性拟合求传感器非线性误差灵敏度

用Matlab进行最小二乘法线性拟合求传感器非线性误差灵敏度

%后面的为注释,红色部分代码需要根据实际情况更改%最小二乘法线性拟合y=ax+bx=[0.5,1,1.5,2,2.5,3,3.5,4,4.5,5];%自变量y=[191,321,442,565,686,819,930,1032,1153,1252];%因变量xmean=mean(x);ymean=mean(y);sumx2=(x-xmean)*(x-xmean)';sumxy=(y-ymean)*(x-xmean)';a=sumxy/sumx2;%解出直线斜率a(即传感器灵敏度)b=ymean-a*xmean;%解出直线截距bz=((a*(x(1,10))+b-(y(1,10)))/(y(1,10)));%“10”是自变量的个数,z为非线性误差(即线性度)abz%作图,先把原始数据点用蓝色"十"字描出来figureplot(x,y,'+');hold on% 用红色绘制拟合出的直线px=linspace(0,6,50);%(linspace语法(从横坐标负轴起点0画到横坐标正轴终点6,50等分精度))py=a*px+b;plot(px,py,'r');运行结果:a =236.9818b =87.4000另一种简单一点的方法:%最小二乘法线性拟合y=ax+bx=[0.5,1,1.5,2,2.5,3,3.5,4,4.5,5];%自变量y=[191,321,442,565,686,819,930,1032,1153,1252];%因变量p=polyfit(x,y,1);p运行结果:p =236.9818 87.4000。

matlab中拟合曲线的算法

matlab中拟合曲线的算法

一、引言在科学和工程领域中,拟合曲线是一种重要的数学工具,它用于寻找一条曲线,使得该曲线最好地描述已知的数据点或者模拟实验结果。

MATLAB作为一种强大的数学计算软件,拥有丰富的拟合曲线的算法和工具。

本文将介绍MATLAB中拟合曲线的算法,包括常见的线性拟合、多项式拟合、非线性拟合等。

二、线性拟合1. 线性拟合是指采用线性方程来拟合已知数据点的方法。

在MATLAB 中,可以使用polyfit函数来实现线性拟合。

该函数的基本语法如下: p = polyfit(x, y, n),其中x和y分别代表已知数据点的横坐标和纵坐标,n代表拟合多项式的阶数。

函数返回一个长度为n+1的向量p,其中p(1)、p(2)分别代表拟合多项式的系数。

2. 通过polyfit函数可以实现对数据点的线性拟合,得到拟合曲线的系数,并且可以使用polyval函数来计算拟合曲线在指定点的取值。

该函数的基本语法如下:yfit = polyval(p, x),其中p代表拟合曲线的系数向量,x代表待求取值的点,yfit代表拟合曲线在该点的取值。

三、多项式拟合1. 多项式拟合是指采用多项式方程来拟合已知数据点的方法。

在MATLAB中,可以使用polyfit函数来实现多项式拟合,和线性拟合类似。

不同之处在于,可以通过调整多项式的阶数来适应不同的数据特性。

2. 除了使用polyfit函数进行多项式拟合外,MATLAB还提供了Polytool工具箱,它是一个方便的图形用户界面,可以用于拟合已知数据点并可视化拟合曲线。

使用Polytool工具箱,用户可以直观地调整多项式的阶数和观察拟合效果,非常适合初学者和快速验证拟合效果。

四、非线性拟合1. 非线性拟合是指采用非线性方程来拟合已知数据点的方法。

MATLAB中提供了curvefitting工具箱,其中包含了众多非线性拟合的工具和算法,例如最小二乘法、最大似然法、拟合优度计算等。

通过该工具箱,用户可以方便地进行各种复杂数据的非线性拟合。

matlab拟合命令

matlab拟合命令

matlab拟合命令Matlab是一种非常流行的科学计算软件,它可以用来进行各种数学计算、数据分析和可视化等操作。

其中,拟合命令是Matlab中非常重要的一个功能,它可以帮助我们对数据进行拟合,得到一个符合实际情况的模型。

本文将详细介绍Matlab中的拟合命令。

一、Matlab中的拟合命令简介在Matlab中,有多种拟合命令可供选择,包括polyfit、fit、cftool 等。

这些命令都可以用来对数据进行拟合,但具体使用方法和适用范围略有不同。

1. polyfit命令polyfit是Matlab中最简单和最基础的拟合命令之一。

它可以用来对一组数据进行多项式拟合,并返回多项式系数。

其基本语法如下:p = polyfit(x, y, n)其中x和y分别是待拟合数据的自变量和因变量数组,n表示要进行多项式拟合的次数。

2. fit命令fit命令比polyfit更加灵活和强大,它可以用来对各种类型的函数进行非线性拟合,并返回最优参数值。

其基本语法如下:f = fit(x, y, model)其中x和y同样表示待拟合数据的自变量和因变量数组,model表示要拟合的函数模型,可以是Matlab内置的函数模型,也可以是自定义的函数模型。

3. cftool命令cftool是Matlab中一个交互式工具箱,它可以用来进行各种类型的拟合,并可视化显示拟合结果。

使用cftool命令时,用户需要先打开cftool工具箱界面,在界面中选择要进行拟合的数据和函数模型,并设置相应参数。

最后点击“fit”按钮即可得到拟合结果。

二、多项式拟合多项式拟合是最基本的数据拟合方法之一,在Matlab中可以使用polyfit命令进行多项式拟合。

其基本思路是通过一条多项式曲线来逼近原始数据点,使得曲线与原始数据点之间的误差最小。

1. 一次多项式拟合一次多项式拟合即为线性拟合,在Matlab中可以使用polyfit命令进行。

其基本语法如下:p = polyfit(x, y, 1)其中x和y分别为待拟合数据的自变量和因变量数组,1表示进行一次多项式(即直线)拟合。

matlab练习程序(线性常微分方程组参数拟合)

matlab练习程序(线性常微分方程组参数拟合)

matlab练习程序(线性常微分⽅程组参数拟合)⽐如我们已经有了微分⽅程模型和相关数据,如何求模型的参数。

这⾥以SEIR模型为例⼦,。

⼀般的线性⽅程我们可以⽤,⼀般的⾮线性⽅程我们可以⽤。

这⾥是线性微分⽅程组,所以我们采⽤最⼩⼆乘来解。

关键是构造出最⼩⼆乘形式,微分可以通过前后数据差分的⽅法来求。

不过这⾥还有⼀个技巧就是如果数据前后帧间隔过⼤,可以先插值,再对插值后的数据差分。

如果实际测量数据抖动过⼤导致插值后差分明显不能反映实际情况,可以先对数据平滑(拟合或是平均)再求差分。

先看SEIR微分⽅程:写成矩阵形式:到这⾥就能⽤最⼩⼆乘来求解了。

matlab代码如下:main.m:clear all;close all;clc;%%SEIR模型A = [0.50.10.050.02];[t,h] = ode45(@(t,x)SEIR(t,x,A),[0300],[0.010.980.010]); %[初始感染⼈⼝占⽐初始健康⼈⼝占⽐初始潜伏⼈⼝占⽐初始治愈⼈⼝占⽐]plot(t,h(:,1),'r');hold on;plot(t,h(:,2),'b');plot(t,h(:,3),'m');plot(t,h(:,4),'g');legend('感染⼈⼝占⽐I','健康⼈⼝占⽐S','潜伏⼈⼝占⽐E','治愈⼈⼝占⽐R');title('SEIR模型')data=[t h];data = data(1:3:80,:); %间隔取⼀部分数据⽤来拟合figure;plot(data(:,1),data(:,2),'ro');hold on;plot(data(:,1),data(:,3),'bo');plot(data(:,1),data(:,4),'mo');plot(data(:,1),data(:,5),'go');T=min(data(:,1)):0.1:max(data(:,1)); %插值处理,如果数据多,也可以不插值I=spline(data(:,1),data(:,2),T)';S=spline(data(:,1),data(:,3),T)';E=spline(data(:,1),data(:,4),T)';R=spline(data(:,1),data(:,5),T)';plot(T,I,'r.');plot(T,S,'b.');plot(T,E,'m.');plot(T,R,'g.');%求微分,如果数据帧间导数变化太⼤,可以先平均或者拟合估计⼀个导数%因为前⾯T是以0.1为步长,这⾥乘以10dI = diff(I)*10; dI=[dI;dI(end)];dS = diff(S)*10; dS=[dS;dS(end)];dE = diff(E)*10; dE=[dE;dE(end)];dR = diff(R)*10; dR=[dR;dR(end)];X = [zeros(length(I),1) -I.*S zeros(length(I),2); %构造线性最⼩⼆乘⽅程组形式-E I.*S -E zeros(length(I),1);E zeros(length(I),2) -I;zeros(length(I),2) E I];Y = [dS;dE;dI;dR];A = inv(X'*X)*X'*Y%⽤估计参数代⼊模型[t,h] = ode45(@(t,x)SEIR(t,x,A),[0300],[I(1) S(1) E(1) R(1)]); %[初始感染⼈⼝占⽐初始健康⼈⼝占⽐初始潜伏⼈⼝占⽐初始治愈⼈⼝占⽐] plot(t,h(:,1),'r');hold on;plot(t,h(:,2),'b');plot(t,h(:,3),'m');plot(t,h(:,4),'g');SEIR.m:function dy=SEIR(t,x,A)alpha = A(1); %潜伏期转阳率beta = A(2); %感染率gamma1 = A(3); %潜伏期治愈率gamma2 = A(4); %患者治愈率dy=[alpha*x(3) - gamma2*x(1);-beta*x(1)*x(2);beta*x(1)*x(2) - (alpha+gamma1)*x(3);gamma1*x(3)+gamma2*x(1)];结果:原始参数[0.5 0.1 0.05 0.02]与模型:拟合参数[0.499921929359668 0.100099242849855 0.0505821757746970 0.0199739921888752]与模型:。

matlab拟合自定义函数

matlab拟合自定义函数

Matlab拟合自定义函数1. 简介拟合是一种通过找到一个数学函数来近似实验数据的过程。

在实际应用中,我们经常需要用一个函数来描述某个现象或者预测某个结果,但是直接使用已有的函数可能无法准确地拟合我们的数据。

因此,我们需要使用一些数值计算软件来进行拟合,以找到更好的函数模型。

Matlab是一个强大的数学计算软件,其中内置了多种拟合函数,同时也支持用户自定义函数进行拟合。

本文将介绍如何使用Matlab进行自定义函数的拟合,以及在拟合过程中的注意事项和常见问题。

2. 自定义函数的定义在进行自定义函数的拟合前,首先需要定义自己的函数。

Matlab中可以使用函数句柄来表示一个函数,函数句柄是一个指向函数的指针。

2.1 定义简单函数以下是一个简单的自定义函数的例子:function y = myFunction(x)y = sin(x) + cos(x);end这个函数接受一个输入参数x,并返回该参数的正弦值加上余弦值。

2.2 定义带参数的函数除了简单的函数,我们还可以定义带参数的函数。

例如,以下是一个带参数的自定义函数的例子:function y = myFunctionWithParams(x, a, b)y = a*sin(x) + b*cos(x);end这个函数接受三个输入参数:x是自变量,a和b是函数的参数。

通过改变参数a和b的值,我们可以得到不同形状的函数曲线。

3. 使用Matlab进行拟合在定义好自定义函数后,我们可以使用Matlab中的拟合函数来拟合这个函数。

Matlab提供了多种拟合函数,包括线性拟合、非线性拟合等。

3.1 线性拟合线性拟合是一种将数据拟合到线性模型的方法。

常用的线性拟合函数是polyfit和lsqcurvefit。

其中,polyfit函数用于拟合一组数据到一个多项式模型,而lsqcurvefit函数则用于拟合非线性函数。

以下是一个使用polyfit函数进行线性拟合的例子:x = [1, 2, 3, 4, 5];y = [2, 4, 6, 8, 10];p = polyfit(x, y, 1);上述代码中,x和y是待拟合的数据,p是拟合结果。

matlab 线性拟合

matlab 线性拟合

matlab 线性拟合
Matlab的线性拟合是一种基于统计分析的过程,其中拟合的模型是由一条或多条直线建立的,用来拟合一组事先已知的数据,对这组数据的拟合结果也就是成型函数。

Matlab线性拟合的流程是:首先定义拟合函数,然后使用拟合函数进行数据拟合,最后利用拟合结果给出模型参数。

Matlab线性拟合分析可以更方便、更快捷地完成各种数据分析,可以根据不同的统计模型来拟合一定的数据,获得更好的结果。

它可以帮助我们快速求解线性拟合的参数,以及给出模型参数的估计值,可以使我们更好地分析模型。

matlab拟合函数表达式

matlab拟合函数表达式

Matlab拟合函数表达式简介在Matlab中,拟合函数是一种能够通过已知数据点近似描述其整体趋势的数学函数。

拟合函数可以用来预测或插值未知数据点的值,从而在数据分析、模型建立和预测等领域发挥重要作用。

本文将介绍Matlab中拟合函数的基本概念、用法和常见的拟合函数表达式。

拟合函数的基本概念和用法拟合函数是通过已知数据点建立的数学函数。

在Matlab中,可以使用fit函数来拟合数据。

fit函数的基本语法如下:f = fit(x, y, model)其中,x是自变量的值,y是因变量的值,model是拟合函数的模型。

拟合函数的模型可以选择已知的一些函数形式,也可以根据需要自定义函数。

拟合函数的返回值f是一个拟合对象,可以使用该对象来进行预测和插值。

例如,可以使用f对象的predict方法来预测新的数据点的值:y_pred = predict(f, x_pred)拟合函数的用法示例:% 生成随机数据x = linspace(0, 10, 100);y = 2 * x + 1 + randn(size(x));% 拟合数据f = fit(x', y', 'poly1');% 预测新的数据点x_pred = 11:15;y_pred = predict(f, x_pred);disp(y_pred);常见的拟合函数表达式在Matlab中,有许多常见的拟合函数表达式可供选择。

以下是一些常见的拟合函数表达式及其应用场景:线性拟合(Linear Fit)线性拟合是最简单的拟合函数表达式之一,适用于描述两个变量之间的线性关系。

线性拟合函数表达式为:y = a * x + b其中,a和b为参数,可以通过拟合算法自动确定。

例如,可以使用以下代码进行线性拟合:f = fit(x', y', 'poly1');多项式拟合(Polynomial Fit)多项式拟合可以用来描述两个变量之间的非线性关系。

曲线拟合的线性最小二乘法及其MATLAB程序

曲线拟合的线性最小二乘法及其MATLAB程序

1曲线拟合的线性最小二乘法及其MATLA程序例7.2.1 给出一组数据点(x j, y i)列入表7 -中,试用线性最小二乘法求拟合曲线,并用(7.2),(7.3 )和(7.4)式估计其误差,作出拟合曲线.解 (1)在MATLAB 工作窗口输入程序>> x=[-2.5 -1.7 -1.1 -0.8 0 0.1 1.5 2.7 3.6];y=[-192.9 -85.50 -36.15 -26.52 -9.10 -8.43 -13.12 6.50 68.04];plot(x,y, 'r*'),legend('实验数据(xi,yi)' )xlabel( 'x' ), ylabel( 'y'),title('例7.2.1的数据点(xi,yi) 的散点图’)运行后屏幕显示数据的散点图(略)(3)编写下列MATLAB程序计算f (x)在(x i, y i)处的函数值,即输入程序>> syms a1 a2 a3 a4x=[-2.5 -1.7 -1.1 -0.8 0 0.1 1.5 2.7 3.6];fi=a1.*x.A3+ a2.*x.A2+ a3.*x+ a4运行后屏幕显示关于a1,a2, a3和a4的线性方程组fi =[ -125/8*a1+25/4*a2-5/2*a3+a4,-4913/1000*a1+289/100*a2-17/10*a3+a4,-1331/1000*a1+121/100*a2-11/10*a3+a4, -64/125*a1+16/25*a2-4/5*a3+a4, a4,1/1000*a1+1/100*a2+1/10*a3+a4,27/8*a1+9/4*a2+3/2*a3+a4, 19683/1000*a1+729/100*a2+27/10*a3+a4,5832/125*a1+324/25*a2+18/5*a3+a4]编写构造误差平方和的MATLAB程序>> y=[-192.9 -85.50 -36.15 -26.52 -9.10 -8.43 -13.12 6.5068.04];fi=[-125/8*a1+25/4*a2-5/2*a3+a4,-4913/1000*a1+289/100*a2-17/10*a3+a4,-1331/1000*a1+121/100*a2-11/10*a3+a4,-64/125*a1+16/25*a2-4/5*a3+a4, a4,1/1000*a1+1/100*a2+1/10*a3+a4,27/8*a1+9/4*a2+3/2*a3+a4,19683/1000*a1+729/100*a2+27/10*a3+a4,5832/125*a1+324/25*a2+18/5*a3+a4];fy=fi-y; fy2=fy.A2; J=sum(fy.A2)运行后屏幕显示误差平方和如下J=(-125/8*a1+25/4*a2-5/2*a3+a4+1929/10)A2+(-4913/1000*a1+289/100*a2-17/10*a3+a4+171/2)A2+(-1331/1000*a1+121/100*a2-11/10* a3+a4+723/20)A2+(-64/125*a1+16/25*a2-4/5*a3+a4+663/25)A2+(a4+91/10)A2+(1/1000*a1+1/100*a2+1/10*a3+a4+843/100)A2+(27/8*a1+9/4*a2+3/2*a3+a4+328/25)A2+(19683/1000*a1+729/100*a2+27/10*a3+a4-13/2)A2+(5832/125*a1+324/25*a2+18/5*a3+a4-1701/25)A2为求a1,a2 ,a3, a4使J达到最小,只需利用极值的必要条件一丄0 (k 1,2,3,4),a k运行后屏幕显示 J 分别对a 1, a 2 ,a 3 ,a 4的偏导数如下Ja11=56918107/10000*a1+32097579/25000*a2+1377283/2500*a3+ 23667/250*a4-8442429/625Ja21 =32097579/25000*a1+1377283/2500*a2+23667/250*a3+67*a4+767319/625Ja311377283/2500*a1+23667/250*a2+67*a3+18/5*a4-232638/125Ja4123667/250*a1+67*a2+18/5*a3+18*a4+14859/25解线性方程组 Ja 11 =0, Ja 21 =0, Ja 31 =0, Ja 41 =0,输入下列程序>>A=[56918107/10000, 32097579/25000,23667/250; 32097579/25000, 1377283/2500, 1377283/2500, 23667/250, 67, 18/5; 23667/250, 67, 18/5, 18];B=[8442429/625, -767319/625, 232638/125, -14859/25]; C=B/A, f=poly2sym(C) 运行后屏幕显示拟合函数 f 及其系数 C 如下C = 5.0911 -14.1905 6.4102 -8.2574f=716503695845759/140737488355328*xA3 -7988544102557579/562949953421312*xA2 +1804307491277693/281474976710656*x -4648521160813215/562949953421312 故所求的拟合曲线为1.52.73.6]; y=[-192.9 -85.50 -36.15 -26.52 -9.10 -8.43 -13.12 6.5068.04];n=length(xi);f=5.0911.*xi.A3-14.1905.*xi.A2+6.4102.*xi -8.2574; x=-2.5:0.01: 3.6;F=5.0911.*x.A3-14.1905.*x.A2+6.4102.*x -8.2574; fy=abs(f-y); fy2=fy.A2; Ew=max(fy), E1=sum(fy)/n, E2=sqrt((sum(fy2))/n) plot(xi,y, 'r*'), hold on, plot(x,F, 'b-'), hold off legend( '数据点 (xi,yi)' ,'拟合曲线 y=f(x)' ), xlabel( 'x'), ylabel( 'y'), title('例7.2.1的数据点(xi,yi)和拟合曲线y=f(x)的图形')运行后屏幕显示数据(x^yj 与拟合函数f 的最大误差 平均误差 E 和均方根误差 E及其数据点(X j ,yj 和拟合曲线y=f(x)的图形(略).Ew = E1 = E2 =3.105 4 0.903 4 1.240 9得到关于a 1,a 2 ,a 3, a 4的线性方程组,这可以由下面的 MATLAB 程序完成,即输入程序>> syms a1 a2 a3 a4J=(-125/8*a1+25/4*a2-5/2*a3+a4+1929/10)A2+(-4913/1000*a1 + 289/100*a2-17/10*a3+a4...+171/2)A2+(-1331/1000*a1+121/100*a2-11 /10*a3+a4+723/20)A 2+(-64/125*a1+16/25*a2-4/5*a3+a4+663/25)A 2+(a4+91/10)A 2+(1/1000*a1+1/100*a2+1/10*a3+a4+843/100)A 2+(27/8*a1+9 /4*a2+3/2*a3+a4+328/25)A2+(19683/1000*a1+729/100*a2+27/10*a3+a4 -13/2)A2+(5832/125*a1+324/25*a2+18/5*a3+a4-1701/25)A2;Ja1=diff(J,a1); Ja2=diff(J,a2); Ja4=diff(J,a4);Ja11=simple(Ja1), Ja41=simple(Ja4),Ja21=simple(Ja2), Ja3=diff(J,a3);Ja31=simple(Ja3),1377283/2500, 23667/250, 67;f (x) 5.0911 ( 4)编写下面的 MATLAB序x 3 14.1905 x 2 程序估计其误差, 8.2574 . 6.4102 x 并作出拟合曲线和数据的图形 .输入程 >> xi=[-2.5 -1.7 -1.1 -0.8 0 0.17.3函数m (x)的选取及其MATLA 程序例7.3.1 给出一组实验数据点 (x i ,y i )的横坐标向量为x =( -8.5,-8.7,-7.1,-6.8,-5.10,-4.5,-3.6,-3.4,-2.6,-2.5, -2.1,-1.5, -2.7,-3.6 ) , 纵横坐标向量为 y =( 459.26,52.81,198.27,165.60,59.17,41.66,25.92, 22.37,13.47, 12.87, 11.87,6.69,14.87,24.22 ) ,试用线性最小二乘法求拟合曲线,并用( 7.2),(7.3) 和( 7.4)式估计其误差,作出拟合曲线 .解 (1)在 MATLAB 工作窗口输入程序>>x=[-8.5,-8.7,-7.1,-6.8,-5.10,-4.5,-3.6,-3.4,-2.6,-2.5, -2.1,-1.5, -2.7,-3.6];y=[459.26,52.81,198.27,165.60,59.17,41.66,25.92,22.37,13.47, 12.87, 11.87,6.69,14.87,24.22];plot(x,y, 'r*' ),legend( ' 实验数据 (xi,yi)' )xlabel( 'x' ), ylabel( 'y' ),title( ' 例 7.3.1 的数据点 (xi,yi) 的散点图 ' ) 运行后屏幕显示数据的散点图(略) . (3)编写下列MATLAB 程序计算f (x)在(x i , y i )处的函数值,即输入程序>> syms a b x=[-8.5,-8.7,-7.1,-6.8,-5.10,-4.5,-3.6,-3.4,-2.6,-2.5,-2 .1,-1.5,-2.7,-3.6]; fi=a.*exp(-b.*x)运行后屏幕显示关于a 和b 的线性方程组fi =[ a*exp(17/2*b), a*exp(87/10*b), a*exp(71/10*b), a*exp(34/5*b), a*exp(51/10*b),a*exp(9/2*b), a*exp(18/5*b), a*exp(17/5*b), a*exp(13/5*b), a*exp(5/2*b), a*exp(21/10*b), a*exp(3/2*b), a*exp(27/10*b), a*exp(18/5*b)]编写构造误差平方和的 MATLAB 程序如下>>y=[459.26,52.81,198.27,165.60,59.17,41.66,25.92,22.37, 13.47,12.87, 11.87, 6.69,14.87,24.22]; fi =[ a*exp(17/2*b), a*exp(87/10*b), a*exp(34/5*b), a*exp(51/10*b), a*exp(18/5*b), a*exp(17/5*b), a*exp(5/2*b), a*exp(21/10*b), a*exp(27/10*b), a*exp(18/5*b)]; fy=fi-y; fy2=fy.A 2; J=sum(fy.A 2)运行后屏幕显示误差平方和如下J =(a*exp(17/2*b)-22963/50)A2+(a*exp(87/10*b)-5281/100)A2+( a*exp(71/10*b)-19827/100)A2+(a*exp(34/5*b)-828/5)A2+(a*exp(51/1 0*b)-5917/100)A2+(a*exp(9/2*b)-2083/50)A2+(a*exp(18/5*b)-648/25 )A2+(a*exp(17/5*b)-2237/100)A2+(a*exp(13/5*b)-1347/100)A2+(a*ex p(5/2*b)-1287/100)A2+(a*exp(21/10*b)-1187/100)A2+(a*exp(3/2*b)- 669/100)A2+(a*exp(27/10*b)-1487/100)A2+(a*exp(18/5*b)-1211/50)A 2为求a,b 使J 达到最小,只需利用极值的必要条件,得到关于 a,b 的线性方程组, 这可以由下面的 MATLAB 程序完成,即输入程序>> syms a bJ=(a*exp(17/2*b)-22963/50)A2+(a*exp(87/10*b)-5281/100)A2 +(a*exp(71/10*b)-19827/100)A2+(a*exp(34/5*b)-828/5)A2+(a*exp(51 /10*b)-5917/100)A2+(a*exp(9/2*b)-2083/50)A2+(a*exp(18/5*b)-648/ 25)A2+(a*exp(17/5*b)-2237/100)A2+(a*exp(13/5*b)-1347/100)A2+(a* exp(5/2*b)-1287/100)A2+(a*exp(21/10*b)-1187/100)A2+(a*exp(3/2*b )-669/100)A2+(a*exp(27/10*b)-1487/100)A2+(a*exp(18/5*b)-1211/50 )A 2;Ja=diff(J,a); Jb=diff(J,b);Ja 仁simple(Ja), Jb 仁simple(Jb),运行后屏幕显示J 分别对a, b 的偏导数如下Ja1 =2*a*exp(3*b)+2*a*exp(17*b)+2*a*exp(87/5*b)+2*exp(68/5*b)*a+2*exp(9*b)*a+2*a*exp(34/5*b)-669/50*exp(3/2*b)-1487/50*exp(2 7/10*b)-2507/25*exp(18/5*b)-a*exp(71/10*b), a*exp(9/2*b), a*exp(13/5*b), a*exp(3/2*b),22963/25*exp(17/2*b)-5281/50*exp(87 /10*b)-19827/50*exp(71/10*b)-2237/50*exp(17/5*b)-1656/5*exp(34/ 5*b)-1347/50*exp(13/5*b)-5917/50*exp(51/10*b)-1287/50*exp(5/2*b )-2083/25*exp(9/2*b)-1187/50*exp(21/10*b)+4*a*exp(36/5*b)+2*a*exp(26/5*b)+2*a*exp(71/5*b)+2*a*exp(51/5*b)+2*a*exp(5*b)+2*a*exp (21/5*b)+2*a*exp(27/5*b) Jb1 =1/500*a*(2100*a*exp(21/10*b)A2+8500*a*exp(17/2*b)A2+6800*a*exp(34/5*b)A2-10035*exp(3/2*b)-40149*exp(27/10*b)-180504*exp (18/5*b)-3903710*exp(17/2*b)-459447*exp(87/10*b)-1407717*exp(71/10*b)-76058*exp(17/5*b)-1126080*exp(34/5*b)-35022*exp(13/5*b)-301767*exp(51/10*b)-32175*exp(5/2*b)-187470*exp(9/2*b)-24927*exp(21/10*b)+7100*a*exp(71/10*b)A2+5100*a*exp(51/10*b)A2+4500*a*exp(9/2*b)A2+7200*a*exp(18/5*b)A2+3400*a*exp(17/5*b)A2+2600*a*exp(13/5*b)A2+2500*a*exp(5/2*b)A2+1500*a*exp(3/2*b)A2+2700*a*exp( 27/10*b)A2+8700*a*exp(87 /10*b)A2)用解二元非线性方程组的牛顿法的MATLAB^序求解线性方程组J ai =0, J bi =0,得a = b=2.811 0 0.581 6故所求的拟合曲线(7.13)为0.5816xf (x) 2.811 0 e . (7.14)(4)根据(7.2),( 7.3),( 7.4)和(7.14)式编写下面的MATLAB程序估计其误差,并做出拟合曲线和数据的图形.输入程序>> xi=[-8.5 -8.7 -7.1 -6.8 -5.10 -4.5 -3.6 -3.4 -2.6 -2.5-2.1 -1.5 -2.7 -3.6];y=[459.26 52.81 198.27 165.60 59.17 41.66 25.92 22.3713.47 12.87 11.87 6.69 14.87 24.22];n=le ngth(xi); f=2.8110.*exp(-0.5816.*xi); x=-9:0.01: -1;F=2.8110.*exp(-0.5816.*x); fy=abs(f-y); fy2=fy.A2;Ew=max(fy),E仁sum(fy)/n, E2=sqrt((sum(fy2))/n), plot(xi,y, 'r*' ), hold onplot(x,F, 'b-' ), hold off,legend('数据点(xi,yi)' ,'拟合曲线y=f(x)' )xlabel( 'x' ), ylabel( 'y'),title( '例7.3.1的数据点(xi,yi) 和拟合曲线y=f(x) 的图形')运行后屏幕显示数据(X i,yj与拟合函数f的最大误差E w = 390.141 5 ,平均误差E1=36.942 2 和均方根误差巳=106.031 7 及其数据点(X i,yj和拟合曲线y=f( x)的图形(略).7.4 多项式拟合及其MATLA程序例7.4.1给出一组数据点(X i, y i )列入表7 43中,试用线性最小二乘法求拟合曲线, 并用(7.2), (7.3 )和(7.4)式估计其误差,作出拟合曲线.解(1)首先根据表7-3给出的数据点(X i,yj,用下列MATLAB程序画出散点图在MATLAB 工作窗口输入程序>> x=[-2.9 -1.9 -1.1 -0.8 0 0.1 1.5 2.7 3.6]; y=[53.94 33.68 20.88 16.92 8.79 8.98 4.17 9.12 19.88];plot(x,y, 'r*' ), legend( ' 数据点(xi,yi)' )xlabel( 'x' ), ylabel( 'y' ),title( ' 例7.4.1 的数据点(xi,yi) 的散点图' ) 运行后屏幕显示数据的散点图(略) .(3 )用作线性最小二乘拟合的多项式拟合的MATLAB程序求待定系数a k (k 1, 2,3).输入程序>> a=polyfit(x,y,2) 运行后输出( 7.16)式的系数a =2.8302 -7.3721 9.1382故拟合多项式为f (x) 2.830 2x27.372 1x 9.138 2.(4)编写下面的MATLA龍序估计其误差,并做出拟合曲线和数据的图形•输入程序>> xi=[-2.9 -1.9 -1.1 -0.8 0 0.1 1.5 2.7 3.6]; y=[53.94 33.68 20.88 16.92 8.79 8.98 4.17 9.1219.88];n=le ngth(xi); f= 2.8302 ,*xi.A2 -7.3721 .*xi+ 9.1382x=-2.9:0.001:3.6;F= 2.8302 .*x.A2 -7.3721 .*x+8.79;fy=abs(f-y); fy2=fy.A2; Ew=max(fy), E1=sum(fy)/n, E2=sqrt((sum(fy2))/n), plot(xi,y, 'r*', x,F, 'b-'),legend( ' 数据点(xi,yi)' , ' 拟合曲线y=f(x)' )xlabel( 'x' ), ylabel( 'y' ),title( ' 例7.4.1 的数据点(xi,yi) 和拟合曲线y=f(x) 的图形' )运行后屏幕显示数据(X i,yj与拟合函数f的最大误差平均误差E1和均方根误差E 及其数据点(X i,y i)和拟合曲线y=f(x)的图形(略).Ew = E1 = E2 =0.745 7, 0.389 2, 0.436 37.5 拟合曲线的线性变换及其MATLA程序例7.5.1 给出一组实验数据点( x i , y i )的横坐标向量为x=(7.5 6.8 5.10 4.53.6 3.4 2.6 2.5 2.1 1.5 2.7 3.6 ),纵横坐标向量为y=(359.26 165.60 59.17 41.66 25.92 22.37 13.47 12.87 11.87 6.69 14.87 24.22 ),试用线性变换和线性最小二乘法求拟合曲线,并用( 7.2),(7.3)和( 7.4)式估计其误差,作出拟合曲线.解(1)首先根据给出的数据点(X i,yj,用下列MATLAB^序画出散点图.在MATLAB 工作窗口输入程序>> x=[7.5 6.8 5.10 4.5 3.6 3.4 2.6 2.5 2.1 1.5 2.73.6];y=[359.26 165.60 59.17 41.66 25.92 22.37 13.47 12.8711.87 6.69 14.87 24.22];plot(x,y, 'r*' ), legend( ' 数据点(xi,yi)' )xlabel( 'x' ), ylabel( 'y' ),title( ' 例7.5.1 的数据点(xi,yi) 的散点图' )运行后屏幕显示数据的散点图(略) .(2) 根据数据散点图,取拟合曲线为bxy a e bx(a 0,b 0) , (7.19)其中a,b是待定系数.令Y In y, A In a, B b,则(7.19)化为丫 A Bx .在MATLAB 工作窗口输入程序>> x=[7.5 6.8 5.10 4.5 3.6 3.4 2.6 2.5 2.1 1.5 2.73.6];y=[359.26 165.60 59.17 41.66 25.92 22.37 13.47 12.87 11.87 6.69 14.87 24.22];Y=log(y); a=polyfit(x,Y,1); B=a(1);A=a(2); b=B,a=exp(A)n=length(x); X=8:-0.01:1; Y=a*exp(b.*X); f=a*exp(b.*x);plot(x,y, 'r*' ,X,Y, 'b-' ), xlabel( 'x' ),ylabel( 'y' ) legend( ' 数据点(xi,yi)' , ' 拟合曲线y=f(x)' )title( ' 例7.5.1 的数据点(xi,yi) 和拟合曲线y=f(x) 的图形' )fy=abs(f-y); fy2=fy.A2; Ew=max(fy), E仁sum(fy)/n,E2=sqrt((sum(fy2))/n)运行后屏幕显示y a e bx的系数 b =0.624 1 , a =2.703 9,数据(x i, y i )与拟合函数f的最大误差Ew =67.641 9 ,平均误差E1=8.677 6 和均方根误差E2=20.711 3 及其数据点(x i, y i)和拟合曲线f(x) 2.703 9e0624 1x的图形(略).7.6 函数逼近及其MATLA程序最佳均方逼近的MATLAB程序function [yy1,a,WE]=zjjfbj(f,X,Y,xx) m=size(f);n=length(X);m=m(1);b=zeros(m,m);c=zeros(m,1); if n~=length(Y)error( 'X和Y的维数应该相同')endfor j=1:mfor k=1:mb(j,k)=0;for i=1:nb(j,k)=b(j,k)+feval(f(j,:),X(i))*feval(f(k,:),X(i));endendc(j)=0;for i=1:nc(j)=c(j)+feval(f(j,:),X(i))*Y(i);endenda=b\c;WE=0;for i=1:nff=0;for j=1:mff=ff+a(j)*feval(f(j,:),X(i));endWE=WE+(Y(i)-ff)*(Y(i)-ff);endif nargin==3return ;endyy=[];for i=1:ml=[];for j=1:length(xx)l=[l,feval(f(i,:),xx(j))];endyy=[yy l'];endyy=yy*a; yy1=yy'; a=a';WE;例7.6.1 对数据X和Y,用函数y 1, y x, y X2进行逼近,用所得到的逼近函数计算在x 6.5处的函数值,并估计误差•其中X=(1 3 4 5 6 7 8 9); Y=(-11 -13 -11 -7 -1 7 17 29).解在MATLA工作窗口输入程序>> X=[ 1 3 4 5 6 7 8 9]; Y=[-11 -13 -11 -7 -1 7 1729];f=['funO';'fun1';'fun2']; [yy,a,WE]=zjjfbj(f,X,Y,6.5)运行后屏幕显示如下yy =2.75000000000003a =-7.00000000000010 -4.99999999999995 1.00000000000000WE =7.172323350269439e-0272 x例7.6.2 对数据X 和Y,用函数y 1, y x, y x , y cosx, y e ,y si nx进行逼近,其中X=( 0 0.50 1.00 1.50 2.00 2.50 3.00 ),Y=( 0 0.4794 0.8415 0.98150.9126 0.5985 0.1645 ).解在MATLA工作窗口输入程序>> X=[ 0 0.50 1.00 1.50 2.00 2.50 3.00];Y=[0 0.4794 0.8415 0.9815 0.9126 0.5985 0.1645];f=['fu n0';'fu n1';'fu n2';'fu n3';'fu n4';'fu n5'];xx=0:0.2:3;[yy,a,WE]=zjjfbj(f,X,Y, xx), plot(X,Y,'ro',xx,yy,'b-')运行后屏幕显示如下(图略)yy = Columns 1 through 7-0.0005 0.2037 0.3939 0.5656 0.7141 0.83480.9236Colu mns 8 through 140.9771 0.9926 0.9691 0.9069 0.8080 0.67660.5191Colu mns 15 through 160.3444 0.1642a = 0.3828 0.4070 -0.3901 0.0765 -0.4598 0.5653WE = 1.5769e-004即,最佳逼近函数为y=0.3828+0.4070*x-0.3901*x A2+0.0765*exp(x) -0.4598*cos(x) +0.5653*si n(x)7.7 三角多项式逼近及其MATLA程序计算三角多项式的MATLA吐程序fun ction [A,B,Y1,Rm]=sanjiao(X,Y,X1,m)n= len gth(X)-1;max1=fix(( n-1)/2);if m > max1m=max1;endA=zeros(1,m+1);B=zeros(1,m+1);Ym=(Y(1)+Y( n+1))/2; Y(1)=Ym; Y(n+1)=Ym; A(1)=2*sum(Y)/n;for i=1:mB(i+1)=s in (i*X)*Y'; A(i+1)=cos(i*X)*Y';endA=2*A/n; B=2*B/n; A(1)=A(1)/2;Y 1=A(1);for k=1:m丫仁 Y1+A(k+1)*cos(k*X1)+ B(k+1)*s in (k*X1);Tm=A(1)+A(k+1).*cos(k*X)+ B(k+1).*si n( k*X); k=k+1;endY;Tm; Rm=(sum(Y-Tm).A2)/n;例7.7.1 根据[,]上的n 13,60,350个等距横坐标点x i,2—x(i 0,1,2,,n)和函数 f(x) 2sin .3(1 )求f(x)的6阶三角多项式逼近,计算均方误差183 ni n(1) 2 si nnxn i 9n 1的前6项进行比较(3) 利用三角多项式分别计算 X i = -2, 2.5的值;(4)在同一坐标系中,画出函数 f (x),n 13,60,350的三角多项式和数据点的图形• 解(1 )输入程序>> X 仁-pi:2*pi/13:pi;Y1=2*sin(X1/3);X1i=[-2,2.5]; [A1,B1,Y11,Rm1] =sanjiao(X1,Y1,X1i,6),X2=-pi:2*pi/60:pi;Y2=2*si n(X2/3); [A2,B2,Y12,Rm2]=sanjiao(X2,Y2,X1i,6)X3=-pi:2*pi/350:pi;Y3=2*si n(X3/3); [A3,B3,Y13,Rm3]=sanjiao(X3,Y3,X1i,6) X1i=[-2,2.5];Y1=2*si n(X1i/3) for n=1:6bi=(-1)A ( n+1)*18*sqrt(3)* n/(pi*(9* n A 2-1)) end(2)画图,输入程序>>X1=-pi:2*pi/13:pi;Y1=2*si n(X1/3);Xi=-pi:0.001:pi; f=2*si n(Xi/3); [A1,B1,Y1i,R1m]=sanjiao(X1,Y1,Xi,6);X2=-pi:2*pi/60:pi; Y2=2*si n(X2/3); X3=-pi:2*pi/350:pi;Y3=2*s in (X3/3); [A2,B2,Y2i,R2m]=sanjiao(X2,Y2,Xi,6); [A3,B3,Y3i,R3m]=sanjiao(X3,Y3,Xi,6); plot(X1,Y1, 'r*' , Xi, Y1i, 'b-' ,Xi, Y2i, 'g--' , Xi, Y3i, 'm:',Xi, f, 'k-.' )xlabel( 'x' ),ylabel( 'y')lege nd('数据点(xi,yi)' , ' n=13的三角多项式’,’n=60的三角多项式','n=350 的三角多项式','函数f(x)')title( '例7.7.1 的数据点(xi,yi) 、n=13,60,350的三角多项式 T3和函数f(x)的图形’) 运行后图形(略).7.8 随机数据点上的二元拟合及其 MATLA 程序2 2随机数,Z 是函数Z=7-3 x 3e -x -y 在(X,Y )的值,拟合点(X I ,Y I )中的X I =-3:023, Y I =-2.5:0.2:3.5. 分别用二元拟合方法中最近邻内插法、三角基线性内插法、三角基三次内插法和 MATLAB 4网格化坐标方法计算在 (X I ,Y I )处的值,作出它们的图形,并与 被拟和曲面进行比较.解 (1)最近邻内插法.输入程序>> x=ra nd(50,1);y=rand(50,1); %生成50个一元均匀分布随机数 x 和y , x ,y . X=-3+(3-(-3))*x; %利用x 生成的随机变量. Y=-2.5+(3.5-(-2.5))*y; %利用y 生成的随机变量. Z=7-3* X.A3 .* exp(-X.A2 - 丫.人2); %在每个随机点(X,Y )处计算 Z的值.X1=-3:0.2:3;(2)将这三个三角多项式分别与 f (x)的傅里叶级数f(x) 例 7.8.1 设节点(X,Y,Z )中的X 和Y 分别是在区间[3,3]和[2.5, 3.5]上的 50 个Y1=-2.5:0.2:3.5;[XI,YI] = meshgrid(X1,Y1);ZI=griddata(X,Y,Z,XI,YI, 处的插值ZI.title('用最近邻内插法拟合函数z =7-3 x A3 exp(-x A2 - y A2)和节点的图形' )%legend( ' 拟合曲面',' 节点(xi,yi,zi)' )输入程序>> x=rand(50,1);y=rand(50,1); %生成50个一元均匀分布随机数x和y , x , y .X=-3+(3-(-3))*x; %利用x生成上的随机变量.Y=-2.5+(3.5-(-2.5))*y; %利用y生成上的随机变量.Z=7-3* X.A3 .* exp(-X.A2 - 丫人2); %在每个随机点(X,Y )处计算Z 的值.%legend( ' 拟合曲面',' 节点(xi,yi,zi)' )hold on plot3(X,Y,Z, 'bo' ) hold of 运行后屏幕显示用三角基线性内插法拟合函数和节点的图形及其插值Z I (略).( 3)三角基三次内插法.输入程序%在当前图形上添加新图形.%用兰色小圆圈画出每个节点(X,Y,Z). %结束在当前图形上添加新图形.22Z=7-3 x3e -x -y在两组不同节点处的曲面>> x=rand(50,1);y=rand(50,1); %生成50个一元均匀分布随机数x和y , x,y .X=-3+(3-(-3))*x; %利用x生成上的随机变量.Y=-2.5+(3.5-(-2.5))*y;Z=7-3* X.A3 .* exp(-X.A2 - Y.A2); 的值.X1=-3:0.2:3;Y1=-2.5:0.2:3.5;[XI,YI] = meshgrid(X1,Y1);ZI=griddata(X,Y,Z,XI,YI, 处的插值ZI.mesh(XI,YI, ZI)xlabel( 'x' ), ylabel( 'y'%将坐标( XI,YI )网格化.'nearest' ) %计算在每个插值点( XI,YI )mesh(XI,YI, ZI) xlabel( 'x' ), ylabel( %作二元拟合图形'y' ), zlabel( 'z' ),的曲面hold on plot3(X,Y,Z, 'bo' )hold of运行后屏幕显示用最近邻内插法拟合函数插值乙(略).( 2)三角基线性内插法.%在当前图形上添加新图形.%用兰色小圆圈画出每个节点(X,Y,Z) %结束在当前图形上添加新图形.22Z=7-3 x3e -x -y在两组不同节点处的曲面及其X1=-3:0.2:3;Y1=-2.5:0.2:3.5;[XI,YI] = meshgrid(X1,Y1);ZI=griddata(X,Y,Z,XI,YI, 处的插值ZI.mesh(XI,YI, ZI)xlabel( 'x' ), ylabel(%将坐标( XI,YI )网格化.'linear' ) %计算在每个插值点( XI,YI )%作二元拟合图形'y' ), zlabel( 'z' ),title(曲面和节点的图形用三角基线性内插法拟合函数)z =7-3 xA3 exp(-xA2 - yA2)%利用y生成上的随机变量.%在每个随机点( X,Y )处计算Z%将坐标( XI,YI )网格化.'cubic' ) %计算在每个插值点( XI,YI )%作二元拟合图形.), zlabel( 'z' ),2title( ' 用三角基三次内插法拟合函数 z =7-3 xA3 exp(-xA2 - yA2) 曲面和节点的图形 ' ) %legend( ' 拟合曲面 ',' 节点 (xi,yi,zi)' hold on plot3(X,Y,Z, hold of 'bo' ) 运行后屏幕显示用三角基三次内插法拟合函数 和节点的图形及其插值 Z I (略). ( 4 ) MATLAB 4网格化坐标方法 . 输入程序 >> x=rand(50,1);y=rand(50,1); X=-3+(3-(-3))*x; Y=-2.5+(3.5-(-2.5))*y; )%在当前图形上添加新图形 . %用兰色小圆圈画出每个节点 (X,Y,Z). %结束在当前图形上添加新图形 .22 Z=7-3 x 3e -x2-y2 在两组不同节点处的曲面 Z=7-3* X.A3 .* exp(-X.A2 - Y.A2); 的值.X1=-3:0.2:3; Y1=-2.5:0.2:3.5;[XI,YI] = meshgrid(X1,Y1); ZI=griddata(X,Y,Z,XI,YI, 插值 ZI. mesh(XI,YI, ZI)xlabel( title( ' 的曲面和节点的图形%legend( hold on %生成50个一元均匀分布随机数 x 和y , x , y . %利用x 生成上的随机变量. %利用y 生成上的随机变量•%在每个随机点( X,Y )处计算 Z %将坐标( XI,YI )网格化 . 'v4' ) %计算在每个插值点( XI,YI )处的%作二元拟合图形 . 'y' ), zlabel( 'z' ), 'x' ), ylabel(用 MATLAB 4 网格化坐标方法 拟合函数 z =7-3 xA3 exp(-xA2 - yA2) ') ' 拟合曲面 ',' 节点 (xi,yi,zi)' )%在当前图形上添加新图形 . %用兰色小圆圈画出每个节点 (X,Y,Z). %结束在当前图形上添加新图形 .22 plot3(X,Y,Z, hold of 'bo' ) 运行后屏幕显示用 MATLAB 4网格化坐标方法拟合函数 Z=7-3 x 3e -x -y 在两组不同节点处 的曲面和节点的图形及其插值 ZI (略). 3 -x 2 -y 2(5)作被拟合曲面 Z =7-3x 3e -x -y 和节点的图形 . 输入程序 >> x=rand(50,1);y=rand(50,1); X=-3+(3-(-3))*x; Y=-2.5+(3.5-(-2.5))*y;Z=7-3* X.A3 .* exp(-X.A2 - Y.A2);%生成50个一元均匀分布随机数 x 和y , x , y . %利用x 生成随机变量. %利用 y 生成随机变量 .%在每个随机点( X,Y )处计算 Z的值. X1=-3.:0.1:3.; Y1=-2.5:0.1:3.5;[XI,YI] = meshgrid(X1,Y1); ZI=7-3* XI.A 3 .* exp(-XI42 - YI.A2); mesh(XI,YI, ZI) xlabel( title(%将坐标( XI,YI )网格化 . %作二元拟合图形 . 'x' ), ylabel( 'y' ), zlabel( 'z' ), 被拟合函数 z =7-3xA3 exp(-xA2 - yA2)的曲面和节点的图形 ') %legend( h old onplot3(X,Y,Z,hold of' 被拟合函数曲面 ',' 'bo' ) 2 运行后屏幕显示被拟合函数 Z=7-3 x 3e -x -y节点 (xi,yi,zi)' )%在当前图形上添加新图形 .%用兰色小圆圈画出每个节点 (X,Y,Z). %结束在当前图形上添加新图形 .的曲面和节点的图形及其函数值 ZI (略) .7.9 随机数据点上的n元拟合及其MATLA程序例7.9.1 首先利用MATLAB函数rand产生随机数据X i,Y i,Z i,然后用线性变换u at b ( 其中a 5,b 5 )将随机数据X1,Y1 ,Z 1 变换为节点坐标( X,Y,Z ), 再用函数222w 7 3x3y(z 1)e x y z生成数据W用三元最近邻内插法方法计算函数w在插值点x i 3:0.5:10, y i 2:0.5:13, z i=y i处拟合数据的值,并作其图形解输入程序>> X1=-5+5*ra nd(10,1);Y1=-5+5*rand(10,1);Z1=Y1;[X,Y,Z] = meshgrid(X1,Y1,Z1);W=7-3* X.A3 .* Y.*(Z+1).* exp(-X.A2 - Y.A2- Z.A2);xi=-3:0.5:10;yi=-2:0.5:13;zi=yi;[XI,YI,ZI] = meshgrid(xi,yi,zi);W1=griddata3(X, Y, Z, W, XI, YI, ZI, 'nearest' );slice(XI,YI,ZI,W1,[-2 4 9.5],9,[-2 2 9]),%shading flat%lighting flatxlabel( 'x' ), ylabel( 'y' ), zlabel( 'z' ),title( ' 被拟合函数W=7-3XA3Y(Z+1)exp(-XA2 - YA2- ZA2) ' );hold oncolorbar( 'horiz' )view([-30 45])运行后屏幕显示三元线性拟合值及其图形(略) .例7.9.2 设节点(X,Y,Z,W )中的X,Y和Z分别是在区间[3, 3]和[2.5, 3.5], Y=Z222上的15个随机数,W是函数W 2 x e x y z在(X,Y,Z )的值,拟合点(X i,y i ,z i)中的x i=-3:0.2:3 ,y i =-2.5:0.235 ,z i =y i,用'li near'方法计算拟合数据的值,并作其图形.解输入程序>> x=rand(15,1); y=rand(15,1);X1=-3+(3-(-3))*x;Y1=-2.5+(3.5-(-2.5))*y;Z1=Y1;[X,Y,Z] = meshgrid(X1,Y1,Z1);W=2+X.* exp(-X.A2 - Y.A2- Z.A2);xi=-3:0.2:3; yi=-2.5:0.2:3.5; zi=yi;[X2,Y2,Z2]=meshgrid(xi,yi,zi);W1=griddata3(X, Y, Z, W, X2,Y2,Z2, 'linear' );slice(X2,Y2,Z2,W1,[-1 0 1.5],2,[-2 3]), shading flat,lighting flat,xlabel( 'x' ), ylabel( 'y' ), zlabel( 'z' ),title( ' 被拟合函数W=2+X exp(-XA2 - YA2- ZA2)' );hold on,colorbar( 'horiz' ), view([-3 5])运行后屏幕显示三元线性拟合值及其图形(略) .。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、一元线性拟合
求HNO 3的正常沸点温度T b 及摩尔汽化热。

程序如下:
>> t=[0 20 40 50 70 80 90 100]; >> t=t+273.15;
>> p=[1919.52 6385.07 17728.9 27726.4 62251.1 89311 124902.1 170890.6] p =
1.0e+005 *
0.0192 0.0639 0.1773 0.2773 0.6225 0.8931 1.2490 1.7089 >> subplot 121 >> plot(t,p,'o',t,p) >> t1=1./t;p2=log(p); >> pp=polyfit(t1,p2,1) pp =
1.0e+003 *
-4.5691 0.0243 >> subplot 122
>> plot(t1,p2,'o',t1,p2)
>> gtext('p/pa'),gtext('T/K'),GTEXT('lnP/Pa'),gtext('T^-^1/K')
由克拉贝龙-克劳修斯方程式,~
ln v
H P C RT
∆=-+ 作1
ln ~P T
-得一直线:3
1
ln 4.5691024.30P T -=-⨯+
斜率为:~
3
4.56910v
H R
∆-⨯=-
所以摩尔汽化热为:~
314.569108.31437.99()v H kJ mol -∆=⨯⨯=⋅ 并根据拟合方程,求得一大气压时 1
32.8010T
--=⨯
则正常沸点为:357b T K =
2、多元线性拟合:
某气体混合物由四种气体组成,在常压或低压下其粘度η与各组分摩尔分数x 1,x 2,x 3,x 4之间有如下线性关系:011223344b b x b x b x b x η=++++
试根据下表所列实验数据用最小二乘法确定上式中的各个系数,并计算其复相关系数。

Matlab 程序如下:
>> a=[1.0 0.402 0.153 0.058 0.387;1.0 0.503 0.301 0.183 0.013; 1.0 0.306 0.109 0.224 0.361; 1.0 0.296 0.365 0.009 0.330; 1.0 0.309 0.405 0.109 0.177; 1.0 0.055 0.153 0.506 0.289] a =
1.0000 0.4020 0.1530 0.0580 0.3870 1.0000 0.5030 0.3010 0.1830 0.0130 1.0000 0.3060 0.1090 0.2240 0.3610 1.0000 0.2960 0.3650 0.0090 0.3300 1.0000 0.3090 0.4050 0.1090 0.1770 1.0000 0.0550 0.1530 0.5060 0.2890
>> y=[0.00625 0.00826 0.01182 0.01944 0.02372 0.03243]' y =
0.0063 0.0083 0.0118 0.0194 0.0237 0.0324
>> b=a.'*a
b =
6.0000 1.8710 1.4860 1.0890 1.5570
1.8710 0.6944 0.4879 0.2481 0.4408
1.4860 0.4879 0.4466 0.2132 0.3388
1.0890 0.2481 0.2132 0.3550 0.2742
1.5570 0.4408 0.3388 0.2742 0.5040 >> c=a.'*y
c =
0.1019
0.0252
0.0264
0.0237
0.0268
>> coeff=b\c
coeff =
0.2267
-0.2627
-0.1620
-0.1889
-0.2058
>> regress(c,b,0.05)
ans =
0.2267
-0.2627
-0.1620
-0.1889
-0.2058。

相关文档
最新文档