《计算方法学习指导》实验(3)

第3章 曲线拟合的最小二乘法

3.1 实验目的

​ 结合最小二乘原理用MATLAB编写相应的曲线拟合程序。

3.2 MATLAB命令
函数含义
polyfit多项式拟合
lsqcurvefit曲线拟合
lsqnonlin最小二乘法
csaps样条拟合

MATLAB解决曲线拟合问题的三种方法:

​ 调用函数,以表格形式输出拟合函数;调用函数,以公式形式输出拟合函数;由用户图形界面进行曲线拟合。

3.3 实验3例题:曲线拟合

例1:对以下数据进行1次、2次、3次多项式拟合,并求出其总体误差。

x00.30.60.91.21.51.82.12.42.73
y00.290.560.780.930.990.970.860.670.420.14

用以下多项式进行拟合:
f ( x ) = a 1 x m + a 2 x m − 1 + . . . + a m x + a m + 1 f(x)=a_1x^m+a_2x^{m-1}+...+a_mx+a_{m+1} f(x)=a1xm+a2xm1+...+amx+am+1

clc;
clear all;
xi=0:0.3:3;
yi=[0 0.29 0.56 0.78 0.93 0.99 0.97 0.86 0.67 0.42 0.14];
plot(xi,yi,'.K','MarkerSize',15);	%画出数据点的散点图
hold on;
x=0:0.01:3;

p1=polyfit(xi,yi,1);%一次多项式拟合
y1=polyval(p1,x);
yy1=polyval(p1,xi);
err1=norm(yy1-yi,2);

p2=polyfit(xi,yi,2);%二次多项式拟合
y2=polyval(p2,x);
yy2=polyval(p2,xi);
err2=norm(yy2-yi,2);

p3=polyfit(xi,yi,3);%二次多项式拟合
y3=polyval(p3,x);
yy3=polyval(p3,xi);
err3=norm(yy3-yi,2);

plot(x,y1,'Y');
hold on;
plot(x,y2,'R');
hold on;
plot(x,y3,'B');
hold on;

err1
err2
err3

结果:

err1 =

    1.0847


err2 =

    0.0686


err3 =

    0.0652

在这里插入图片描述

polyfit()和polyval()函数

p=polyfit(x,y,n)
[p,s]= polyfit(x,y,n)

​ 说明:x,y为数据点,n为多项式阶数,返回p为幂次从高到低的多项式系数向量p。x必须是单调的。矩阵s用于生成预测值的误差估计。

​ 多项式曲线求值函数:polyval( )

​ 调用格式:

y=polyval(p,x)
[y,DELTA]=polyval(p,x,s)

​ 说明:y=polyval(p,x)为返回对应自变量x在给定系数P的多项式的值。

​ [y,DELTA]=polyval(p,x,s) 使用polyfit函数的选项输出s得出误差估计Y DELTA。它假设polyfit函数数据输入的误差是独立正态的,并且方差为常数。则Y DELTA将至少包含50%的预测值。

norm()函数

​ 格式:n=norm(A,p) 功能:norm函数可计算几种不同类型的矩阵范数,根据p的不同可得到不同的范数。

例2:对以下数据做二次多项式拟合。

x00.10.20.30.40.50.60.70.80.91
y-0.4471.9783.286.167.087.347.669.569.489.3011.2

法一:解超定方程

x=0:0.1:1;
y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];
R=[(x.^2)',x',ones(11,1)];
A=R\y'

结果:
A =
   -9.8108
   20.1293
   -0.0317

因此得到的拟合二次多项式是:
f ( x ) = − 9.8108 x 2 + 20.1293 x − 0.0317 f(x)=-9.8108x^2+20.1293x-0.0317 f(x)=9.8108x2+20.1293x0.0317
法二:使用多项式拟合命令

x=0:0.1:1;
y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2];
A=polyfit(x,y,2);
z=polyval(A,x);
plot(x,y,'.k','MarkerSize',15);
hold on;
plot(x,z,'r')

结果:

在这里插入图片描述

例3:用下面给出的数据拟合给出的y(t)中的参数a,b,k。
y ( t ) = a + b e 0.02 k t y(t)=a+be^{0.02kt} y(t)=a+be0.02kt
数据:

t1002003004005006007008009001000
y4.544.995.355.655.906.106.266.396.506.59

法一:使用lsqcurvefit

curvefun1.m:

tdata=100:100:1000;
ydata=[4.54 4.99 5.35 5.65 5.90 6.10 6.26 6.39 6.50 6.59];
x0=[0.2 0.05 0.05];
x=lsqcurvefit('curvefun1',x0,tdata,ydata)

命令及结果:

>> tdata=100:100:1000;
ydata=1e-3*[4.54 4.99 5.35 5.65 5.90 6.10 6.26 6.39 6.50 6.59];
x0=[0.2 0.05 0.05];
x=lsqcurvefit('curvefun1',x0,tdata,ydata);
f=curvefun1(x,tdata);

x =

    0.0069   -0.0029    0.0809
f =

  Columns 1 through 7

    0.0044    0.0048    0.0051    0.0054    0.0056    0.0058    0.0060

  Columns 8 through 10

    0.0061    0.0063    0.0064

拟合函数为:
y ( t ) = 0.0069 − 0.0029 e 0.0016 t y(t)=0.0069-0.0029e^{0.0016t} y(t)=0.00690.0029e0.0016t

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《谭志虎 计算机组成原理实验指导与习题解析》是一本介绍计算机组成原理实验的书籍。书中详细介绍了计算机的各个部分的工作原理和实验过程,并且提供了丰富的习题解析。这本书对于学习计算机组成原理的学生来说是一本非常有用的指导书,可以帮助他们更好地理解计算机的原理和实现。 本书共分为四个部分,分别是计算机组成原理基础、微操作与总线、存储器、和I/O与异常处理。针对每个部分,书中都提供了详细的实验指导,帮助读者通过实验来理解计算机组成原理的知识。每个实验都配有实验步骤、实验目的、实验原理以及实验注意事项,让读者能够轻松地完成实验。 除了实验指导外,本书还提供了大量的习题,涵盖了每个部分的重点知识点。习题的答案和解析也都详细给出,方便读者自学和自测。通过刷完这些习题,读者可以进一步加深对计算机组成原理的理解,掌握更多的知识和技能。 总之,《谭志虎 计算机组成原理实验指导与习题解析》是一本非常实用的计算机组成原理教材,适合广大计算机专业的学生、工程师和其他相关人员使用。本书的指导和习题解析,可以让读者更全面地了解计算机的组成原理和工作原理,为他们的学习和工作提供很大的帮助。 ### 回答2: 《谭志虎计算机组成原理实验指导与习题解析PDF》是一本计算机组成原理的实验指导书籍。书中详细介绍了计算机组成原理的相关概念和实验操作步骤,同时提供了解析详尽的习题,为学习计算机组成原理的读者提供了很大的帮助。 本书主要分为两部分,第一部分主要是实验指导,介绍了计算机组成原理的相关理论知识和实验步骤,对于想要深入了解计算机组成原理的初学者非常有用。第二部分则是习题解析,对书中提供的习题进行了详细的解析,让读者更好地掌握计算机组成原理的相关知识。 《谭志虎计算机组成原理实验指导与习题解析PDF》的作者谭志虎是一位计算机科学与技术的专家,拥有丰富的教学经验和研究经验。书中的内容以通俗易懂,逻辑清晰为特点,非常适合初学者学习。 总之,如果你正在学习计算机组成原理,而又找不到合适的教材,那么《谭志虎计算机组成原理实验指导与习题解析PDF》绝对是一个不错的选择。它不仅内容详尽,还提供了大量的实验指导和习题解析,帮助你更好地理解计算机组成原理的相关知识。 ### 回答3: 谭志虎编写的《计算机组成原理实验指导与习题解析》是一本面向计算机科学学习者的实用教材,该书主要介绍计算机系统组成的基本概念、原理和设计方法,涵盖了计算机硬件和操作系统等方面的知识。读者可以通过该书学习到CPU的构成、指令系统、总线接口、存储器和IO设备等方面的知识,以及如何进行硬件设计和软件编程来实现计算机系统的功能。 该书以实际项目为例子,提供了大量的实验指导和习题解析,让读者通过实际操作来深入理解计算机系统的原理和设计方法。实验内容非常丰富,包括用Verilog编写CPU指令集、设计和实现基于FPGA的CPU系统、实现计算机硬件和操作系统的简单功能等等。通过这些实验,读者能够更加全面和深入地理解计算机系统的各个方面。 除了实验指导和习题解析之外,该书还提供了大量的题目和答案,可以帮助读者检查自己的学习效果,加深对计算机系统原理的理解。该书的内容深入浅出,适合初学者学习和参考,同时也可以作为大学教学参考资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值