实验8 数据分析与多项式计算

合集下载

数值分析实验报告

数值分析实验报告

实验2.1 多项式插值的振荡现象实验目的:在一个固定的区间上用插值逼近一个函数,显然Lagrange 插值中使用的节点越多,插值多项式的次数就越高。

我们自然关心插值多项式的次数增加时,Ln(x)是否也更加靠近被逼近的函数。

Runge 给出的一个例子是极著名并富有启发性的。

实验容:设区间[-1,1]上函数 f(x)=1/(1+25x 2)。

考虑区间[-1,1]的一个等距划分,分点为 x i = -1 + 2i/n ,i=0,1,2,…,n ,则拉格朗日插值多项式为201()()125nn i i i L x l x x ==+∑. 其中,l i (x),i=0,1,2,…,n 是n 次Lagrange 插值基函数。

实验步骤与结果分析:实验源程序function Chap2Interpolation% 数值实验二:“实验2.1:多项式插值的震荡现象”% 输入:函数式选择,插值结点数% 输出:拟合函数及原函数的图形promps = {'请选择实验函数,若选f(x),请输入f,若选h(x),请输入h,若选g(x),请输入g:'};titles = 'charpt_2';result = inputdlg(promps,'charpt 2',1,{'f'});Nb_f = char(result);if(Nb_f ~= 'f' & Nb_f ~= 'h' & Nb_f ~= 'g')errordlg('实验函数选择错误!');return;endresult = inputdlg({'请输入插值结点数N:'},'charpt_2',1,{'10'});Nd = str2num(char(result));if(Nd <1)errordlg('结点输入错误!');return;endswitch Nb_fcase 'f'f=inline('1./(1+25*x.^2)'); a = -1;b = 1;case 'h'f=inline('x./(1+x.^4)'); a = -5; b = 5;case 'g'f=inline('atan(x)'); a = -5; b= 5;endx0 = linspace(a, b, Nd+1); y0 = feval(f, x0);x = a:0.1:b; y = Lagrange(x0, y0, x);fplot(f, [a b], 'co');hold on;plot(x, y, 'b--');xlabel('x'); ylabel('y = f(x) o and y = Ln(x)--');%--------------------------------------------------------------------function y=Lagrange(x0, y0, x);n= length(x0); m=length(x);for i=1:mz=x(i);s=0.0;for k=1:np=1.0;for j=1:nif(j ~= k)p = p*(z - x0(j))/(x0(k) - x0(j));endends = s + p*y0(k);endy(i) = s;end实验结果分析(1)增大分点n=2,3,…时,拉格朗日插值函数曲线如图所示。

数值分析2024上机实验报告

数值分析2024上机实验报告

数值分析2024上机实验报告数值分析是计算数学的一个重要分支,它研究如何用数值方法来解决数学问题。

在数值分析的学习过程中,学生需要通过上机实验来巩固理论知识,并学会使用相应的数值方法来解决实际问题。

本篇报告将详细介绍2024年度数值分析上机实验的内容和结果。

一、实验内容2024年度数值分析上机实验分为四个部分,分别是:方程求根、插值与拟合、数值积分和常微分方程的数值解。

1.方程求根这部分实验要求使用数值方法求解给定的非线性方程的根。

常见的数值方法有二分法、牛顿法、割线法等。

在实验过程中,我们需要熟悉这些数值方法的原理和实现步骤,并对不同方法的收敛性进行分析和比较。

2.插值与拟合这部分实验要求使用插值和拟合方法对给定的一组数据进行拟合。

插值方法包括拉格朗日插值、牛顿插值等;拟合方法包括最小二乘拟合、多项式拟合等。

在实验中,我们需要熟悉插值和拟合方法的原理和实现步骤,并对不同方法的精度和稳定性进行比较。

3.数值积分这部分实验要求使用数值方法计算给定函数的积分。

常见的数值积分方法有梯形法则、辛普森法则、龙贝格积分等。

在实验过程中,我们需要熟悉这些数值积分方法的原理和实现步骤,并对不同方法的精度和效率进行比较。

4.常微分方程的数值解这部分实验要求使用数值方法求解给定的常微分方程初值问题。

常见的数值方法有欧拉法、改进的欧拉法、四阶龙格-库塔法等。

在实验中,我们需要熟悉这些数值解方法的原理和实现步骤,并对不同方法的精度和稳定性进行比较。

二、实验结果在完成2024年度数值分析上机实验后,我们得到了以下实验结果:1.方程求根我们实现了二分法、牛顿法和割线法,并对比了它们的收敛速度和稳定性。

结果表明,割线法的收敛速度最快,但在一些情况下可能会出现振荡;二分法和牛顿法的收敛速度相对较慢,但稳定性较好。

2.插值与拟合我们实现了拉格朗日插值和最小二乘拟合,并对比了它们的拟合效果和精度。

结果表明,拉格朗日插值在小区间上拟合效果较好,但在大区间上可能出现振荡;最小二乘拟合在整体上拟合效果较好,但可能出现过拟合。

数值分析实验报告--实验2--插值法

数值分析实验报告--实验2--插值法

1 / 21数值分析实验二:插值法1 多项式插值的震荡现象1.1 问题描述考虑一个固定的区间上用插值逼近一个函数。

显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。

我们自然关心插值多项式的次数增加时, 是否也更加靠近被逼近的函数。

龙格(Runge )给出一个例子是极著名并富有启发性的。

设区间[-1,1]上函数21()125f x x=+ (1)考虑区间[-1,1]的一个等距划分,分点为n i nix i ,,2,1,0,21 =+-= 则拉格朗日插值多项式为201()()125nn ii iL x l x x ==+∑(2)其中的(),0,1,2,,i l x i n =是n 次拉格朗日插值基函数。

实验要求:(1) 选择不断增大的分点数目n=2, 3 …. ,画出原函数f(x)及插值多项式函数()n L x 在[-1,1]上的图像,比较并分析实验结果。

(2) 选择其他的函数,例如定义在区间[-5,5]上的函数x x g xxx h arctan )(,1)(4=+=重复上述的实验看其结果如何。

(3) 区间[a,b]上切比雪夫点的定义为 (21)cos ,1,2,,1222(1)k b a b ak x k n n π⎛⎫+--=+=+ ⎪+⎝⎭(3)以121,,n x x x +为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果,试分析2 / 21原因。

1.2 算法设计使用Matlab 函数进行实验, 在理解了插值法的基础上,根据拉格朗日插值多项式编写Matlab 脚本,其中把拉格朗日插值部分单独编写为f_lagrange.m 函数,方便调用。

1.3 实验结果1.3.1 f(x)在[-1,1]上的拉格朗日插值函数依次取n=2、3、4、5、6、7、10、15、20,画出原函数和拉格朗日插值函数的图像,如图1所示。

Matlab 脚本文件为Experiment2_1_1fx.m 。

可以看出,当n 较小时,拉格朗日多项式插值的函数图像随着次数n 的增加而更加接近于f(x),即插值效果越来越好。

实验8 无穷级数与数值计算

实验8 无穷级数与数值计算

西安理工大学应用数学系
(2)相应的Matlab代码为 syms x taylor((1+x)^0.5, x, 7, 1)
运行结果为 ans =2^(1/2) + (2^(1/2)*(x - 1))/4 - (2^(1/2)*(x - 1)^2)/32 +
(2^(1/2)*(x - 1)^3)/128 - (5*2^(1/2)*(x - 1)^4)/2048 + (7*2^(1/2)*(x - 1)^5)/8192 - (21*2^(1/2)*(x 1)^6)/65536
(n
3
1)!

105,取
n8
即可。
西安理工大学应用数学系
同理取 x 1
2
,令误差
2n
1
3 (n

1)!

105
,取 n 6 即可。
计算e的Matlab代码为
syms x y y=taylor(exp(x),x,9)
a=subs(y,x,'1') %将符号表达式y中的变量x换成变量1 e=vpa(a,10) % 将符号表达式a转化成10位精度的近似解
1 x 1 1 x 1 x2 1 3 x3 (1)n1 1 35 (2n 3) xn (6.6)
2 24 246 取
2 46 2n
于是有
, 代入(6.6), 有
1 x 1 1 x 1 x2 13 x3 (1)n1 1 3 5 (2n 3) xn
西安理工大学应用数学系
hold on for i=1:length(x)
y(i)=x(i)-x(i)^3/6+x(i)^5/120; plot(x(i),y(i),'.'),pause(.005) end hold on for i=1:length(x) y(i)=x(i)-x(i)^3/6+x(i)^5/120-

2019年MATLAB)课后实验答案

2019年MATLAB)课后实验答案

实验一 MATLAB 运算基础1. 先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。

(1) 0122sin 851z e =+(2) 21ln(2z x =,其中2120.455i x +⎡⎤=⎢⎥-⎣⎦ (3) 0.30.330.3sin(0.3)ln , 3.0, 2.9,,2.9,3.022a a e e az a a --+=++=--(4) 2242011122123t t z t t t t t ⎧≤<⎪=-≤<⎨⎪-+≤<⎩,其中t =0:: 解:4. 完成下列操作:(1) 求[100,999]之间能被21整除的数的个数。

(2) 建立一个字符串向量,删除其中的大写字母。

解:(1) 结果:(2). 建立一个字符串向量例如:ch='ABC123d4e56Fg9';则要求结果是:实验二 MATLAB 矩阵分析与处理1. 设有分块矩阵33322322E R A O S ⨯⨯⨯⨯⎡⎤=⎢⎥⎣⎦,其中E 、R 、O 、S 分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证22E R RS A O S +⎡⎤=⎢⎥⎣⎦。

解: M 文件如下;5. 下面是一个线性方程组:1231112340.951110.673450.52111456x x x ⎡⎤⎢⎥⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎢⎥⎢⎥⎣⎦(1) 求方程的解。

(2) 将方程右边向量元素b 3改为再求解,并比较b 3的变化和解的相对变化。

(3) 计算系数矩阵A 的条件数并分析结论。

解: M 文件如下:123d4e56g9实验三 选择结构程序设计1. 求分段函数的值。

2226035605231x x x x y x x x x x x x ⎧+-<≠-⎪=-+≤<≠≠⎨⎪--⎩且且及其他用if 语句实现,分别输出x=,,,,,,时的y 值。

实验数据处理方法

实验数据处理方法

实验数据处理方法引言实验数据处理是科学研究中非常重要的一环。

不仅需要采集准确的数据,还需要对数据进行合理的处理。

准确的数据处理方法可以帮助研究人员得到科学、可靠的结论。

本文将介绍一些常用的实验数据处理方法。

均值与标准差均值和标准差是最常用的描述数据集中趋势和离散程度的统计量。

均值是数据集中所有数据的平均值,计算公式为:mean = (x1 + x2 + ... + xn) / n其中n是数据集的样本数量,x1, x2, …, xn是数据集中的各个观测值。

标准差是反映数据集的离散程度的量,计算公式为:std = sqrt(((x1 - mean)^2 + (x2 - mean)^2 + ... + (xn - mean)^2) / n)其中 mean 是数据集的均值。

零假设检验与p值零假设检验是用于推断数据样本与总体的关系的统计方法。

它通过设立一个零假设和另一个备择假设,并计算出一个p值来判断是否拒绝零假设。

零假设通常表示数据没有显著差异或者没有关联。

p值是概率值,代表了观察到的或更极端结果的概率,当这个概率小于设定的显著性水平时,我们将拒绝零假设。

常见的显著性水平包括0.05和0.01。

方差分析方差分析是一种多样本比较的统计方法,用于确定多个样本间是否有显著差异。

它通过比较不同样本组的均值差异和样本内部的离散程度来推断总体的差异。

方差分析可以划分为单因素方差分析和多因素方差分析。

单因素方差分析是将样本按照一个因素进行分组比较,而多因素方差分析则考虑了多个因素对样本的影响。

方差分析的基本原理是通过计算组间离差与组内离差的比值来判断组间差异是否显著。

当组间离差远大于组内离差时,表明不同样本组的均值存在显著性差异。

相关分析相关分析是用于研究两个变量之间相关程度的统计方法。

它可以帮助研究人员了解两个变量的关系强度和方向。

常见的相关系数有Pearson相关系数、Spearman相关系数和判定系数。

Pearson相关系数适用于线性关系,Spearman相关系数适用于有序变量的关系,判定系数反映了自变量对因变量变异的解释程度。

MATLAB)课后实验答案

MATLAB)课后实验答案

实验一 MATLAB 运算基础1、 先求下列表达式得值,然后显示MATLAB 工作空间得使用情况并保存全部变量。

(1) 0122sin 851z e =+(2) 21ln(2z x =+,其中2120.455i x +⎡⎤=⎢⎥-⎣⎦ (3) 0.30.330.3sin(0.3)ln , 3.0, 2.9,,2.9,3.022a a e e a z a a --+=++=--L (4) 2242011122123t t z t t t t t ⎧≤<⎪=-≤<⎨⎪-+≤<⎩,其中t =0:0、5:2、5 解:4、 完成下列操作:(1) 求[100,999]之间能被21整除得数得个数。

(2) 建立一个字符串向量,删除其中得大写字母。

解:(1) 结果:(2)、 建立一个字符串向量 例如:ch='ABC123d4e56Fg9';则要求结果就是:实验二 MATLAB 矩阵分析与处理1、 设有分块矩阵33322322E R A O S ⨯⨯⨯⨯⎡⎤=⎢⎥⎣⎦,其中E 、R 、O 、S 分别为单位矩阵、随机矩阵、零矩阵与对角阵,试通过数值计算验证22E R RS A OS +⎡⎤=⎢⎥⎣⎦。

解: M 文件如下;5、 下面就是一个线性方程组:1231112340.951110.673450.52111456x x x ⎡⎤⎢⎥⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎢⎥⎢⎥⎣⎦(1) 求方程得解。

(2) 将方程右边向量元素b 3改为0、53再求解,并比较b 3得变化与解得相对变化。

(3) 计算系数矩阵A 得条件数并分析结论。

解: M 文件如下:实验三 选择结构程序设计1、 求分段函数得值。

2226035605231x x x x y x x x x x x x ⎧+-<≠-⎪=-+≤<≠≠⎨⎪--⎩且且及其他用if 语句实现,分别输出x=-5、0,-3、0,1、0,2、0,2、5,3、0,5、0时得y 值。

MATLAB)课后实验答案[1]

MATLAB)课后实验答案[1]

实验一 MATLAB 运算基础1。

先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。

(1) 0122sin 851z e =+(2) 21ln(2z x =,其中2120.455i x +⎡⎤=⎢⎥-⎣⎦ (3) 0.30.330.3sin(0.3)ln , 3.0, 2.9,,2.9,3.022a a e e az a a --+=++=--(4) 2242011122123t t z t t t t t ⎧≤<⎪=-≤<⎨⎪-+≤<⎩,其中t =0:0.5:2.5 解:4. 完成下列操作:(1)求[100,999]之间能被21整除的数的个数. (2) 建立一个字符串向量,删除其中的大写字母。

解:(1) 结果:(2)。

建立一个字符串向量例如:ch=’ABC123d4e56Fg9';则要求结果是:实验二 MATLAB 矩阵分析与处理1. 设有分块矩阵33322322E R A O S ⨯⨯⨯⨯⎡⎤=⎢⎥⎣⎦,其中E 、R 、O 、S 分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证22E R RS A OS +⎡⎤=⎢⎥⎣⎦。

解: M 文件如下;5。

下面是一个线性方程组:1231112340.951110.673450.52111456x x x ⎡⎤⎢⎥⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎢⎥⎢⎥⎣⎦ch =123d4e56g9(1) 求方程的解。

(2) 将方程右边向量元素b 3改为0。

53再求解,并比较b 3的变化和解的相对变化。

(3) 计算系数矩阵A 的条件数并分析结论。

解: M 文件如下:实验三 选择结构程序设计1. 求分段函数的值.2226035605231x x x x y x x x x x x x ⎧+-<≠-⎪=-+≤<≠≠⎨⎪--⎩且且及其他用if 语句实现,分别输出x=-5.0,—3.0,1.0,2。

数据结构多项式相加实验报告doc

数据结构多项式相加实验报告doc

数据结构多项式相加实验报告篇一:数据结构实验多项式加法数据结构实验报告实验名称:多项式加减法学号:1XX10419姓名:林强实验日期:XX.5.05一、实验目的通过实现多项式的加减法,对链表有更深入的了解二、实验具体内容1、实验题目1:(1)题目设计一个一元稀疏多项式简单的加减法计算器实现要求:一元稀疏多项式简单计算器的基本功能是:(1)输入并建立多项式:A(x)?7?3x?9x8?5x17;B(x)?8x?22x7?9x8(2)输出多项式(3)多项式A和B相加,建立多项式C=A+B,并输出相加的结果多项式C(4)选作:多项式A和B相减,建立多项式C=A-B,并输出相加的结果多项式D(2)分析1:本程序的任务是实现两个多项式的加法其中多项式的系数为浮点型,指数为整数,输出的结果也为系数和指数。

(1)输入的形式和输入值的范围:输入多项式的系数a和未知数X的指数b,当a和b都为零时,输入结束。

输入值的范围:a为实数,b为整数。

(2)输出形式:输出多项式的系数和多项式未知数X 的指数即(a,b)形式。

(3)程序所能达到的功能,实现两个多项式的加法,并输出最后的结果2:整个程序运行期间实行动态创建节点,一边输入数据,一边创建节点当将全部数据输入到单链表中后再调用多项式加法这个函数,并一边实现多项式的相加,一边释放节点,有效防止了在程序反复运行过程中可能出现系统空间不够分配的现象(3)实验代码typedef int Status;#define OVERFLOW -1#define null 0typedef struct Lnode{float coef; //存储项系数int expn;//存储项指数struct Lnode *next;}Lnode,*LinkList;typedef LinkList polynomial;Status InitList_L(LinkList &L) {//初始化头节点L=(LinkList)malloc(sizeof(Lnode));if(!L)return(-1);L->next=null;return 1;}void AddPolyn(polynomial pa, polynomial pb){ //实现两个多项式相加的算法float x;polynomial qa;polynomial qb;polynomial s;polynomial u;qa=pa->next; qb=pb->next; s=pa;while(qa&&qb){if(qa->expnexpn){s=qa;qa=qa->next;}else if(qa->expn==qb->expn){x=qa->coef+qb->coef;if(x!=0){qa->coef=x;s=qa;qa=qa->next;u=qb;qb=qb->next;free(u);}else{s->next=qa->next;free(qa);qa=s->next;u=qb;qb=qb->next;free(u);}}else if(qa->expn>qb->expn){ u=qb->next;s->next=qb;s=qb;qb->next=qa;qb=u;}}if(qb)qa->next=qb;free(pb);}void main(){float a;int b;polynomial L1;polynomial L2; LinkList q;LinkList p;LinkList m;LinkList n;InitList_L(L1);q=L1;InitList_L(L2);p=L2;cout 请输入数据:" for(;;){ cin>>a;cin>>b;if(a==0&&b==0) break;m=new Lnode;m->coef=a;m->expn=b;q->next=m;q=m;q->next=null;}//循环输入第一个多项式的系数与指数for(;;){cin>>a;cin>>b;if(a==0&&b==0)break;n=new Lnode;n->coef=a;n->expn=b;p->next=n;p=n;p->next=null;}//循环输入第二个多项式的系数与指数AddPolyn(L1,L2);//调用多项式相加的算法while((L1->next)!=null){coutnext->coefnext->expn L1=L1->next;}//输出计算结果}三、实验小结通过编写多项加法这个程序,我将自己所学到的创建链表,初始化链表和多项式加法算法都应用了一次,这使我们不仅仅只是理论化的学习书本上的知识,而是将学习到的理论知识应用到实际的操作中来增强我们的实际操作能力,这使我增加了实际操作经验,也使我通过实际操作来认识到自己在程序编写上的不足从而增强了我的实际编写程序的能力。

数值计算方法实验之Lagrange多项式插值(Python代码)

数值计算方法实验之Lagrange多项式插值(Python代码)

数值计算⽅法实验之Lagrange多项式插值(Python代码)⼀、实验⽬的在已知f(x),x∈[a,b]的表达式,但函数值不便计算,或不知f(x),x∈[a,b]⽽⼜需要给出其在[a,b]上的值时,按插值原则f(x i)= y i(i= 0,1…….,n)求出简单函数P(x)(常是多项式),使其在插值基点x i,处成⽴P(x i)=y i(i=0,1,……,n),⽽在[a,b]上的其它点处成⽴f(x)≈P(x).⼆、实验原理三、实验内容求之f(x)=x4在[0,2]上按5个等距节点确定的Lagrange插值多项式.四、实验程序1import matplotlib.pyplot as plt2from pylab import mpl34#计算插值多项式的系数。

5 x = [0, 0.5, 1, 1.5, 2]6 y = [0, 0.0625, 1, 5.0625, 16]78def ParametersOfLagrangeInterpolation(data_x,data_y,size):9 parameters=[]1011 i=0;#i⽤来控制参数的个数12while i < size:13 j = 0;#j⽤来控制循环的变量做累乘14 temp = 1;15while j < size:16if(i != j):17 temp*=data_x[i]-data_x[j]18 j+=1;19 parameters.append(data_y[i]/temp)20 i += 1;21return parameters2223#计算拉格朗⽇插值公式的值。

2425def CalculateTheValueOfLarangeInterpolation(data_x,parameters,x):26 returnValue=027 i = 0;28while i < len(parameters):29 temp = 130 j = 0;31while j< len(parameters):32if(i!=j):33 temp *=x-data_x[j]34 j+=135 returnValue += temp * parameters[i]36 i += 137return returnValue3839#将函数绘制成图像40def Draw(data_x,data_y,new_data_x,new_data_y):41 plt.plot(new_data_x, new_data_y, label="拟合曲线", color="red")42 plt.scatter(data_x,data_y, label="离散数据",color="yellow")43 plt.scatter(1.75, 9.37890625, label="真实数据", color="orange")44 plt.scatter(1.25, 2.44140625, color="green")45 mpl.rcParams['font.sans-serif'] = ['SimHei']46 mpl.rcParams['axes.unicode_minus'] = False47 plt.title("Lagrange插值拟合数据")48 plt.legend(loc="upper left")49 plt.show()5051 parameters=ParametersOfLagrangeInterpolation(x,y,5)52 datax=[0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2]53 datay=[]54for temp in datax:55 datay.append(CalculateTheValueOfLarangeInterpolation(x,parameters,temp))56 x.append(1.75)57 y.append(CalculateTheValueOfLarangeInterpolation(x,parameters,1.75))58 Draw(x,y,datax,datay)59print("得到的四次Lagrange插值多项式为:L(x) = %f(x-0)(x-1)(x-1.5)(x-2) + %f(x-0)(x-0.5)(x-1.5)(x-2) + %f(x-0)(x-0.5)(x-1)(x-2) + %f(x-0)(x-0.5)(x-1)(x-1.5)"%(parameters[1],parameters[2],parameters[3],parameters[4]))五、运算结果(1)图像得到的四次Lagrange插值多项式为:L(x) = -0.166667(x-0)(x-1)(x-1.5)(x-2) + 4.000000(x-0)(x-0.5)(x-1.5)(x-2) + -13.500000(x-0)(x-0.5)(x-1)(x-2) + 10.666667(x-0)(x-0.5)(x-1)(x-1.5)。

MATLAB数据分析与多项式计算_习题答案

MATLAB数据分析与多项式计算_习题答案

第6章 MATLAB数据分析与多项式计算习题6一、选择题1.设A=[1,2,3,4,5;3,4,5,6,7],则min(max(A))的值是()。

B A.1 B.3 C.5 D.72.已知a为3×3矩阵,则运行mean(a)命令是()。

BA.计算a每行的平均值 B.计算a每列的平均值C.a增加一行平均值 D.a增加一列平均值3.在MATLAB命令行窗口输入下列命令:>> x=[1,2,3,4];>> y=polyval(x,1);则y的值为()。

DA.5 B.8 C.24 D.104.设P是多项式系数向量,A为方阵,则函数polyval(P,A)与函数polyvalm(P,A)的值()。

DA.一个是标量,一个是方阵 B.都是标量C.值相等 D.值不相等5.在MATLAB命令行窗口输入下列命令:>> A=[1,0,-2];>> x=roots(A);则x(1)的值为()。

CA.1 B.-2 C. D.6.关于数据插值与曲线拟合,下列说法不正确的是()。

AA.3次样条方法的插值结果肯定比线性插值方法精度高。

B.插值函数是必须满足原始数据点坐标,而拟合函数则是整体最接近原始数据点,而不一定要必须经过原始数据点。

C.曲线拟合常常采用最小二乘原理,即要求拟合函数与原始数据的均方误差达到极小。

D.插值和拟合都是通过已知数据集来求取未知点的函数值。

二、填空题1.设A=[1,2,3;10 20 30;4 5 6],则sum(A)= ,median(A)= 。

[15 27 39],[4 5 6[2.向量[2,0,-1]所代表的多项式是。

2x2-13.为了求ax2+bx+c=0的根,相应的命令是(假定a、b、c已经赋值)。

为了将求得的根代回方程进行验证,相应的命令是。

x=roots([a,b,c]),polyval([a,b,c],x)4.如果被插值函数是一个单变量函数,则称为插值,相应的MATLAB函数是。

MATLAB实验

MATLAB实验

MATLAB实验实验⼀MATLAB操作基础⼀、实验⽬的1、熟悉MATLAB的操作环境及基本操作⽅法。

2、掌握MATLAB的搜索路径及其设置⽅法。

3、熟悉MATLAB帮助信息的查阅⽅法。

⼆、实验内容1、先建⽴⾃⼰的⼯作⽬录,再将⾃⼰的⼯作⽬录设置到MATLAB搜索路径下,再试验⽤help命令能否查询到⾃⼰的⼯作⽬录。

2、在MATLAB环境下验证例1-1⾄1-4,并完成以下题⽬:(1)绘制右图所⽰图形(23、利⽤MATLAB的帮助功能分别查询inv,plot、max、round等函数的功能及⽤法。

4、在⼯作空间建⽴⼀个变量a ,同时在当前⽬录下建⽴⼀个M⽂件:a.m,试在命令窗⼝输⼊a,观察结果,并解释原因。

三、思考练习1、help命令和lookfor命令有什么区别?2、什么是⼯作空间?假定有变量A与B存在于⼯作空间中,如何⽤命令保存这两个变量?下次重新进⼊MATLAB后,⼜如何装载这两个变量?实验⼆MATLAB数值计算⼀、实验⽬的1、掌握MATLAB变量和数据操作2、掌握MATLAB矩阵及其操作3、掌握MATLAB矩阵运算⼆、实验内容1、求下列表达⽰的值(1)6(10.3424510)w-=+?(2)22tan()b ca eabcxb c aππ++-+=++,其中a=3.5 ,b=5 ,c=-9.8(3)21ln(2tz e t=+,其中213[]50.65it-=-2、已知1540783617A--=??,831253320B-=??-??求下列表达式的值:(1)A+6B和2A B I-+(I为单位矩阵)(2)A*B、A.*B和B*A(3)A/B及B\A(4)[A,B] 和[A([1,3],:) ; B^2]3、建⽴⼀个均值为3,⽅差为1的10*10的正态分布随机矩阵,并将矩阵中⼤于0的元素置1,⼩于0的置0.4、当[34,,,,,,0]A NaN Inf Inf pi eps=--时,求函数all(A),any(A),isnan(A),isinf(A),isfinite(A)的值。

C语言实验报告 实验八 参考答案

C语言实验报告 实验八 参考答案

实验七八 函 数(一) 参考答案1.请编写程序sy8-1.cpp ,要求:(1)设计一个fun 函数用来计算并输出n (包括n )以内能被5 或9 整除的所有自然数的倒数之和。

(2)在主函数中输入数据,调用fun 函数,输出结果。

例如,若主函数从键盘给n 输入20后,则输出为s=0.583333。

【解题思路】用循环穷举1~n 之间各数,若余5等于0或余9等于0,则将其表示为倒数并累加即可。

注意分式若需要得到实数结果则必须至少有一个操作数是实数类型。

【参考答案】#include <stdio.h>double fun(int n){ double s=0;int i;for(i=1;i<=m;i++)if(i%5==0||i%9==0)s=s+1.0/i;return s;}main( ){ int n;double s;printf("\nInput n: ");scanf("%d",&n);s=fun(n);printf("s=%f\nlf",s);}2.请编写程序sy8-2.cpp ,要求:(1)设计一个fun 函数用来计算下列多项式的值。

(2)在主函数中输入数据,调用fun 函数,输出结果。

例如:若n 的值为11时,函数的值为1.83333【解题思路】根据多项式各项的变化规律可以看出各项的分子为常量1,分母是从1到n 累加和。

【参考答案】#include <stdio.h>float fun(int n){ float sum=0,s=0; //sum 存多项式的累加和,s 存分母的累加和int i;for(i=1;i<=n;i++){ s=s+i; //先求分母的累加sum=sum+1/s;}return sum;}main()n s ⋯++++⋯++++++=321132112111{int n; float s;printf("\nPlease enter n:");scanf("%d", &n);s = fun(n);printf("the result is: %f\n", s);}3.请编写程序sy8-3.cpp,要求:(1)设计一个fun函数,其功能是:将两个两位数的正整数a、b 合并形成一个整数放在c 中。

数据结构多项式相加实验报告

数据结构多项式相加实验报告

试验一多项式相加一. 实验内容:多项式相加二.实验目的和要求:利用双向链表实现通讯录的建立、删除、检索和列表,并可保存至文件,可重新装入。

用链式存储结构实现一元多项式的相加运算。

三.算法思想描述:1. 以单链表为存储结构插入多项式: 多项式输入:多项式按幂从高到低,以“系数,幂”的格式输入,并以“0,0”结束。

printf("Please input coef:");scanf("%d",&i);printf("Please input exp: ");scanf("%d",&j);while(i!=0){q=(pnode)malloc(sizeof(struct node));q->coef=i;q->exp=j;p->link=q;p=q;printf("Please input coef:");scanf("%d",&i);printf("Please input exp: ");scanf("%d",&j);}p->link=NULL;2. 多项式相加单链表合并:由两个多项式对应的单链表头节点开始,依次扫描各节点。

(1)若两表的节点均非空:比较二者的幂,按幂大者先入表。

如果幂相等,则系数相加再入表。

具体由以下代码实现:while(p!=NULL && q!=NULL){if(p->exp==q->exp){x=p->coef+q->coef;if(x!=0){s=(pnode)malloc(sizeof(struct node));s->coef=x;s->exp=p->exp;r->link=s;r=s;}p=p->link;q=q->link;}else if(p->exp<q->exp){s=(pnode)malloc(sizeof(struct node));s->coef=q->coef;s->exp=q->exp;r->link=s;r=s;q=q->link;}else{s=(pnode)malloc(sizeof(struct node));s->coef=p->coef;s->exp=p->exp;r->link=s;r=s;p=p->link;}(2). 若有一链表已空,则将非空链表插入新表:while(p!=NULL){s=(pnode)malloc(sizeof(struct node));s->coef=p->coef;s->exp=p->exp;r->link=s;r=s;p=p->link;}while(q!=NULL){s=(pnode)malloc(sizeof(struct node));s->coef=q->coef;s->exp=q->exp;r->link=s;r=s;q=q->link;}3. 输出合并后的链表:while(head->link!=NULL){head=head->link;printf(" %d*x^%d",head->coef,head->exp);}4. 主函数调用,完成多项式相加。

数值分析插值法

数值分析插值法

实验报告专用纸实验项目名称插值法课程名称计算机数值方法教师评语及成绩:实验成绩:教师签字:(请按照实验报告的有关要求书写,一般必须包括:1、实验目的;2、实验内容;3、实验步骤与方法;4、实验数据与程序清单;5、出现的问题及解决方法;6、实验结果、结果分析与体会等内容。

)1、实验目的(1)学会Lagrange插值、Newton插值、分段线性插值等基本插值方法;(2)讨论插值的Runge现象,掌握分段线性插值方法;(3)学会用Matlab或C等实现多项式拟合。

2、实验内容(1)用Newton插值多项式及分段线性插值函数对数据进行插值;(2)比较牛顿插值与分段线性插值法;(3)函数f(x)的多项式拟合;输入:拟合数据序列{x i,y i},i=0,1,2,…,m;输出:多项式拟合函数,并画出拟合曲线和f(x)。

3、实验步骤(1)用MATLAB编写独立的拉格朗日插值多项式的函数(2)用MATLAB编写独立的牛顿插值多项式(3)利用编写好的函数计算实际问题(4)记录实验数据(5)对运行结果进行分析(6)根据实验情况和结果撰写并提交实验报告。

4、实验原理(1)拉格朗日插值多项式(2)牛顿插值多项式(3)分段线性插值5、实验程序(MATLAB)6、实验结果与分析(1)实验结果图1龙格函数图形图2Runge(10)的图形图3Runge(12)的图形图4Runge(20)的图形输入:拟合数据序列{x i,y i},i=0,1,2,…,m;01491625364964xi012345678yi输出:多项式拟合函数,并画出拟合曲线和f(x)。

图5拟合曲线图(2)结果分析在本题中,据Runge图形可知,在区间两端点附近,节点等距的条件下,n越大,插值多项式的值与f(x)的偏离程度越大。

因此,Runge现象说明,并非插值多项式的次数越高,其近似代替f(x)的精度就越高。

分段线性插值法可以解决Runge现象。

牛顿插值法克服了拉格朗日插值法不具有继承性的缺点。

数值分析实验报告插值与拟合

数值分析实验报告插值与拟合
解:(1)
结果分析:高次插值稳定性差,而低次插值对于较大区间逼近精度又不够,而且,随着节点的加密,采用高次插值,插值函数两端会发生激烈震荡。解决这一矛盾的有效方法就是采用分段低次代数插值。
(2)
通过采用分段线性插值得到以下结果:
结果分析:通过采用分段线性插值,发现随着插值节点增多,插值计算结果的误差越来越小,而且分段线性插值的优点是计算简单,曲线连续和一致收敛,但是不具有光滑性。
拟合是指通过观察或测量得到一组离散数据序列 ,i=1,2,…,m,构造插值函数 逼近客观存在的函数 ,使得向量 与 的误差或距离最小。
可知当基函数的选择不同时,拟合函数的误差也会不同,所以在对数据进行拟合时应选择适合的基函数。
三、练习思考
整体插值有何局限性?如何避免?
答:整体插值的过程中,若有无效数据则整体插值后插值曲线的平方误差会比较大,即在该数据附近插值曲线的震动幅度较大。在插值处理前,应对原始数据进行一定的筛选,剔除无效数据。
②相同点:通过已知一些离散点集M上的约束,求取一个定义在连续集合S(M包含于S)的未知连续函数,从而达到获取整体规律目的
四、本次实验的重点难点分析
答:加强了对插值和拟合的认识,了解了其算法思想,并使用matlab将其实现。学会了观察插值拟合后的图形,并分析其问题。
画图进行比较:
通过观察图像,经比较可知两结果是很接近的。
2.区间 作等距划分: ,以 ( )为节点对函数 进行插值逼近。(分别取 )
(1)用多项式插值对 进行逼近,并在同一坐标系下作出函数的图形,进行比较。写出插值函数对 的逼近程度与节点个数的关系,并分析原因。
(2)试用分段插值(任意选取)对 进行逼近,在同一坐标下画出图形,观察分段插值函数对 的逼近程度与节点个数的关系。

数值分析拟合实验报告(3篇)

数值分析拟合实验报告(3篇)

第1篇一、实验目的本次实验旨在通过数值分析方法对一组已知数据点进行拟合,掌握线性插值、多项式插值、样条插值等方法的基本原理和实现过程,并学会使用MATLAB进行数值拟合。

二、实验内容1. 线性插值线性插值是一种简单的插值方法,适用于数据点分布较为均匀的情况。

其基本原理是通过两个相邻的数据点,利用线性关系拟合出一条直线,然后通过该直线来估算未知的值。

2. 多项式插值多项式插值是一种较为精确的插值方法,通过构造一个多项式函数来逼近已知数据点。

其基本原理是利用最小二乘法求解多项式的系数,使得多项式在已知数据点上的误差最小。

3. 样条插值样条插值是一种更灵活的插值方法,通过构造一系列样条曲线来逼近已知数据点。

其基本原理是利用最小二乘法求解样条曲线的系数,使得样条曲线在已知数据点上的误差最小。

三、实验步骤1. 线性插值(1)在MATLAB中输入已知数据点,如:x = [1, 2, 3, 4, 5];y = [2, 4, 6, 8, 10];(2)使用MATLAB内置函数`linspace`生成插值点:xi = linspace(1, 5, 100);(3)使用MATLAB内置函数`interp1`进行线性插值:yi = interp1(x, y, xi, 'linear');(4)绘制插值曲线:plot(xi, yi, 'b-', x, y, 'ro');2. 多项式插值(1)在MATLAB中输入已知数据点,如:x = [1, 2, 3, 4, 5];y = [2, 4, 6, 8, 10];(2)使用MATLAB内置函数`polyfit`求解多项式系数:p = polyfit(x, y, 3);(3)使用MATLAB内置函数`polyval`进行多项式插值:yi = polyval(p, xi);(4)绘制插值曲线:plot(xi, yi, 'b-', x, y, 'ro');3. 样条插值(1)在MATLAB中输入已知数据点,如:x = [1, 2, 3, 4, 5];y = [2, 4, 6, 8, 10];(2)使用MATLAB内置函数`spline`进行样条插值:yi = spline(x, y, xi);(3)绘制插值曲线:plot(xi, yi, 'b-', x, y, 'ro');四、实验结果与分析1. 线性插值线性插值方法简单易行,但精度较低,适用于数据点分布较为均匀的情况。

数值分析实验报告

数值分析实验报告

数值分析实验报告一、实验目的数值分析是一门研究用计算机求解数学问题的数值方法及其理论的学科。

本次实验的目的在于通过实际操作和编程实现,深入理解和掌握数值分析中的常见算法,提高运用数值方法解决实际问题的能力,并对算法的精度、稳定性和效率进行分析和比较。

二、实验环境本次实验使用的编程语言为 Python,使用的开发工具为 PyCharm。

实验所依赖的主要库包括 NumPy、Matplotlib 等。

三、实验内容(一)函数逼近与插值1、拉格朗日插值法通过给定的离散数据点,构建拉格朗日插值多项式,对未知点进行函数值的估计。

2、牛顿插值法与拉格朗日插值法类似,但采用了不同的形式和计算方式。

(二)数值积分1、梯形公式将积分区间划分为若干个梯形,通过计算梯形面积之和来近似积分值。

2、辛普森公式基于抛物线拟合的方法,提高积分近似的精度。

(三)线性方程组求解1、高斯消元法通过逐行消元将线性方程组化为上三角形式,然后回代求解。

2、 LU 分解法将系数矩阵分解为下三角矩阵 L 和上三角矩阵 U,然后通过两次前代和回代求解。

(四)非线性方程求解1、二分法通过不断将区间一分为二,逐步缩小根所在的区间,直到满足精度要求。

2、牛顿迭代法利用函数的切线来逼近根,通过迭代逐步收敛到根的近似值。

四、实验步骤(一)函数逼近与插值1、拉格朗日插值法定义计算拉格朗日基函数的函数。

根据给定的数据点和待求点,计算插值多项式的值。

输出插值结果,并与真实值进行比较。

2、牛顿插值法计算差商表。

构建牛顿插值多项式。

进行插值计算和结果分析。

(二)数值积分1、梯形公式定义积分区间和被积函数。

按照梯形公式计算积分近似值。

分析误差。

2、辛普森公式同样定义积分区间和被积函数。

运用辛普森公式计算积分近似值。

比较与梯形公式的精度差异。

(三)线性方程组求解1、高斯消元法输入系数矩阵和右端项向量。

进行消元操作。

回代求解方程。

输出解向量。

2、 LU 分解法对系数矩阵进行 LU 分解。

《数值分析》课程实验报告范文

《数值分析》课程实验报告范文

《数值分析》课程实验报告范文《数值分析》课程实验报告姓名:学号:学院:机电学院日期:2022年某月某日目录实验一函数插值方法1实验二函数逼近与曲线拟合5实验三数值积分与数值微分7实验四线方程组的直接解法9实验五解线性方程组的迭代法15实验六非线性方程求根19实验七矩阵特征值问题计算21实验八常微分方程初值问题数值解法24实验一函数插值方法一、问题提出对于给定的一元函数的n+1个节点值。

试用Lagrange公式求其插值多项式或分段二次Lagrange插值多项式。

实验二函数逼近与曲线拟合一、问题提出从随机的数据中找出其规律性,给出其近似表达式的问题,在生产实践和科学实验中大量存在,通常利用数据的最小二乘法求得拟合曲线。

在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量与时间t的拟合曲线。

t(分)051015202530354045505501.272.162.863.443.874.154.374.51 4.584.024.64二、要求1、用最小二乘法进行曲线拟合;2、近似解析表达式为;3、打印出拟合函数,并打印出与的误差,;4、另外选取一个近似表达式,尝试拟合效果的比较;5、某绘制出曲线拟合图。

三、目的和意义1、掌握曲线拟合的最小二乘法;2、最小二乘法亦可用于解超定线代数方程组;3、探索拟合函数的选择与拟合精度间的关系四、实验步骤:第一步先写出线性最小二乘法的M文件functionc=lpoly(某,y,m)n=length(某);b=zero(1:m+1);f=zero(n,m+1); fork=1:m+1f(:,k)=某.^(k-1);enda=f'某f;b=f'某y';c=a\b;c=flipud(c);第二步在命令窗口输入:>>lpoly([0,5,10,15,20,25,30,35,40,45,50,55],[0,1.27,2.16,2.86,3.44,3.87,4.15,4.37,4.51,4.58,4.02,4.64],2)回车得到:an=-0.00240.20370.2305即所求的拟合曲线为y=-0.0024某2+0.2037某+0.2305在编辑窗口输入如下命令:>>某=[0,5,10,15,20,25,30,35,40,45,50,55];>>y=-0.0024某某.^2+0.2037某某+0.2305;>>plot(某,y)命令执行得到如下图五、实验结论分析复杂实验数据时,常采用分段曲线拟合方法。

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

实验8 数据分析与多项式计算
一、实验目的
1、掌握数据统计和分析的方法。

2、掌握数据插值与曲线拟合的方法及其应用。

3、掌握多项式的常用运算。

二、实验环境(硬/软件要求)
PC机,MATLAB7.0以上。

三、实验内容
1. 利用MATLAB提供的randn函数生成符合正态分布的10×5随机矩阵A,进行以下操作:
(1)A各列元素的均值和标准方差。

(2)A的最大元素和最小元素。

(3)求A每行元素的和以及全部元素之和。

(4)分别对A每列元素按升序、每行元素按降序排序。

2. 按要求对指定函数进行插值和拟合。

(1)按表1所示用3次样条方法插值计算0~900内整数点的正弦值和0~750内整数点的正切值,然后用5次多项式拟合方法计算相同的函数值,并将两种计算结果进行比较。

(2)按表2所示用3次多项方法插值计算1~100之间整数的平方根。

表1 特殊角的正弦与正切值表
表2 1~100内特殊值的平方表
3. 有两个多项式4
3()23513P x x
x x =-++,2()58Q x x x =++,试求()P x 、
()()P x Q x 以及()/()P x Q x 的导数。

4. 有3个多项式4322123()245,()2,()23P x x x x P x x P x x x =
+++=+=++
试进行下列操作: (1)求123()()()()P x P x P x P x =
+
(2)求()P x 的根。

(3)当x 取矩阵A 的每一元素时,求()P x 的值。

其中
1 1.
2 1.40.752 3.505 2.5A --⎡⎤
⎢⎥=⎢⎥⎢⎥⎣⎦
(4)当以矩阵A 为自变量时,求()P x 的值。

其中A 的值与(3)相同。

相关文档
最新文档