当前位置:文档之家› 数学实验“Chebyshev多项式最佳一致逼近,最佳平方逼近”实验报告(内含matlab程序)

数学实验“Chebyshev多项式最佳一致逼近,最佳平方逼近”实验报告(内含matlab程序)

西京学院数学软件实验任务书

实验十八实验报告

一、实验名称:Chebyshev 多项式最佳一致逼近,最佳平方逼近。 二、实验目的:进一步熟悉Chebyshev 多项式最佳一致逼近,最佳平方逼近。

三、实验要求:运用Matlab/C/C++/Java/Maple/Mathematica 等其中一种语言完成程序设计。 四、实验原理:

1.Chebyshev 多项式最佳一致逼近:

当一个连续函数定义在区间[1,1]-上时,它可以展开成切比雪夫级数。即:

0()()n n n f x f T x ∞

==∑

其中()n T x 为n 次切比雪夫多项式,具体表达式可通过递推得出:

0111()1,(),()2()()n n n T x T x x T x xT x T x +-===-

它们之间满足如下正交关系:

1

0 n m

n=m 02

n=m=0

π

π-≠???=≠?????

在实际应用中,可根据所需的精度来截取有限项数。切比雪夫级数中的系数由下式决定:

1

01

1

2n f f ππ

--==

?

?

2.最佳平方逼近:

求定义在区间01[,]t t 上的已知函数最佳平方逼近多项式的算法如下。

设已知函数()f x 的最佳平方逼近多项式为

01()n n p x a a x a x =+++ ,由最佳平方逼近的定义有:

01(,,,)

0(0,1,2,,)n i

F a a a i n a ?==?

其中1

20101(,,,)(())t n n n t F a a a f x a a x a x dx =----?

形成多项式()p x 系数的求解方程组Ca D =

其中

1

21

12221

1212

b b b b

n n

a a a a

b b b b

n n

a a a a

b b b b

n n n n

a a a a

b b b b

n n n n

a a a a

dx xdx x dx x dx

xdx x dx x dx x dx C

x dx x dx x dx x dx

x dx x dx x dx x dx

-

+

---

+-

??????????????=????????????

????

????

????

????

????

1

()

()

()

()

b

a

b

a

b

n

a

b

n

a

f x dx

f x xdx

D

f x x dx

f x x dx

-

??

??

??

??

??

??

??

=??

??

??

??

??

??

??

??

?

?

?

?

五、实验内容:

%Chebyshev多项式最佳一致逼近

function f=Chebyshev(y,k,x0)

syms t;

T(1:k+1)=t;

T(1)=1;

T(2)=t;

c(1:k+1)=0.0;

c(1)=int(subs(y,findsym(sym(y)),sym('t'))*T(1)/sqrt(1-t^2),t,-1,1)/pi;

c(2)=2*int(subs(y,findsym(sym(y)),sym('t'))*T(2)/sqrt( 1-t^2),t,-1,1)/pi;

f=c(1)+c(2)*t;

for i=3:k+1

T(i)=2*t*T(i-1)-T(i-2);

c(i)=2*int(subs(y,findsym(sym(y)),sym('t'))*T(i)/sqrt( 1-t^2),t,-1,1)/pi;

f=f+c(i)*T(i);

f=vpa(f,6);

if(i==k+1)

if(nargin==3)

f=subs(f,'t',x0);

else

f=vpa(f,6);

end

end

End

%最佳平方逼近

function coff=ZJPF(func,n,a,b)

C=zeros(n+1,n+1);

var=findsym(sym(func));

func=func/var;

for i=1:n+1

C(1:i)=(power(b,i)-power(a,i))/i;

func=func*var;

d(i,1)=int(sym(func),var,a,b);

end

for i=2:n+1

C(i,1:n)=C(i-1,2:n+1);

f1=power(b,n+1);

f2=power(a,n+1);

C(i,n+1)=(f1-f2)/(n+i);

end

coff=C\d;

数学实验报告格式

《数学实验》实验报告 ( 2012 年 03 月 30 日) 一、实验问题 1、某公司指派5个员工到5个城市工作(每个城市单独一人),希望使所花费的总电话 费用尽可能少。5个员工两两之间每个月通话的时间表示在下面的矩阵的上三角部分(因 为通话的时间矩阵是对称的,没有必要写出下三角部分),5个城市两两之间通话费率表示在 下面的矩阵的下三角部分(同样道理,因为通话的费率矩阵是对称的,没有必要写出上三角 部分). 试求解该二次指派问题。 通话时间d=[0 1 1 2 3 1 0 2 1 2 1 2 0 1 2 2 1 1 0 1 3 2 2 1 0 ] 城市间通话费率 c=[0 5 2 4 1 5 0 3 0 2 2 3 0 0 0 4 0 0 0 5 1 2 0 5 0] 2、某校毕业生必须至少修:两门数学课、三门运筹学课、两门计算机课。 1)某学生希 望所修课程最少。 2)某学生希望课程少学分多。 3)某学生觉得学分数和课程数这两大目标大致应该三七开。 3、某储蓄所营业时间为上午9:00--下午5:00,储蓄所可以雇佣两类服务员:全职:每 天100元中午12:00--下午2:00之间必须安排1小时的午餐时间半职:每人40 元必须连 续工作4小时 1)储蓄所每天雇佣的半职服务员不超过3人,为使花费最少该如何雇佣两类服务员。 2) 如果不能雇佣半时服务员,花费多少? 3)如果雇佣半时服务员没有人数限制花费多少? 二、问题的分析(涉及的理论知识、数学建模与求解的方法等) ?1 1、用xik?? ?0 i人去了k城市 ?1 (i=1...5) xjh?? i人不去k城市?0 j人去了h城市j人没去h城市 (i=1...5) dij表示i和j的通话时间;ckh表示城市k和h之间的费率,数学模型: 5555 min ????c kh dijxikxjh i?1 j?1k?1h?1 ?5 ??xik?1k?1...5?i?1? 5?1i?1 (5) s.t.??xik?k?1 5

数据结构实验报告,一元多项式资料

数据结构课程设计报告

目录 一、任务目标,,,,,,,,,,,, 3 二、概要设计,,,,,,,,,,,, 4 三、详细设计,,,,,,,,,,,, 6 四、调试分析,,,,,,,,,,,, 8 五、源程序代码,,,,,,,,,, 8 六、程序运行效果图与说明,,,,, 15 七、本次实验小结,,,,,,,,, 16 八、参考文献,,,,,,,,,,, 16

任务目标 分析(1) a. 能够按照指数降序排列建立并输出多项式 b.能够完成两个多项式的相加,相减,并将结果输入要求:程序所能达到的功能: a.实现一元多项式的输入; b.实现一元多项式的输出; c.计算两个一元多项式的和并输出结果; d.计算两个一元多项式的差并输出结果;除任务要求外新增乘法: 计算两个一元多项式的乘积并输出结果 (2)输入的形式和输入值的范围:输入要求:分行输入,每行输入一项,先输入多项式的指数,再输入多项式的系数,以0 0 为结束标志,结束一个多项式的输入。 输入形式: 2 3 -1 2 3 0 1 2 0 0 输入值的范围:系数为int 型,指数为float 型 3)输出的形式: 第一行输出多项式1; 第二行输出多项式2; 第三行输出多项式 1 与多项式 2 相加的结果多项式; 第四行输出多项式 1 与多项式 2 相减的结果多项式;第五行输出多项式 1 与多项式 2 相乘的结果多项式 二、概要设计 程序实现 a. 功能:将要进行运算的二项式输入输出;

b. 数据流入:要输入的二项式的系数与指数; c.数据流出:合并同类项后的二项式; d.程序流程图:二项式输入流程图; e.测试要点:输入的二项式是否正确,若输入错误则重新输入

C++一元多项式合并实验报告

实验二一元多项式相加问题本实验的目的是进一步熟练掌握应用链表处理实际问题的能力。 一、问题描述 一元多项式相加是通过键盘输入两个形如P 0+P 1 X1+P 2 X2+···+PnX n的多项式,经过程序运算后在屏幕上输出它 们的相加和。 二、数据结构设计 分析任意一元多项式的描述方法可知,一个一元多项式的每一个子项都由“系数—指数”两部分组成,所以可将它抽象成一个由“系数—指数对”构成线性表,由于对多项式中系数为0的子项可以不记录他的数值,对于这样的情况就不再付出存储空间来存放它了。基于这样的分析,可以采取一个带有头结点的单链表来表示一个一元多项式。具体数据结构定义为: typedef struct node { float ce; //系数域 float ex; //指数域 struct node *next; //指针域 }lnode,*linklist; 三功能(函数)设计 1、输入并建立多项式的功能模块 此模块要求按照指数递增的顺序和一定的输入格式输入各个系数不为0的子项的“系数—指数对”,输入一个子项建立一个相关的节点,当遇到输入结束标志时结束输入,而转去执行程序下面的部分。 屏幕提示: input ce & ex and end with 0: ce=1 ex=2 ce=0 ex=0 //输入结束标志 input ce & ex and end with 0: ce=2 ex=2 ce=0 ex=0 //输入结束标志 输入后程序将分别建立两个链表来描述两个一元多项式: A=X^2 B=2X^2 这两个多项式的相加的结果应该为: C=3X^2 2、多项式相加的功能模块 此模块根据在1中建立的两个多项式进行相加运算,并存放在以C为头指针的一个新建表中。可以采用以下方法进行设计: 开始时a,b分别指向A,B的开头,如果ab不为空,进行判断:如果a所指的结点的指数和b所指的结点的指数相同,将它们的系数相加做成C式中的一项,如果不一样则将小的一项加到C中。 if(a->ex==b->ex) //判断指数是否相等 {s->ce=a->ce+b->ce; if(s->ce!=0) s->ex=a->ex; else delete s; a=a->next; b=b->next; }

最佳平方逼近方法

2016-2017(1)专业课程实践论文用最佳平方逼近法求逼近函数 肖夏,29,R数学12-1班

一、算法理论 设函数组φ0,φ1,…,φm 都是[a ,b ]上的连续函数,并且在[a ,b ]上线性无关。以此函数组为基,生成空间C [a ,b ]上的一个子空间 H =Span {φ0,φ1,…,φm } 则H 中的任意一个元素为 p x = c j φj x m j =0 对空间C [a ,b ]的任意两个函数f ,g ,定义内积 f , g = ω x f x g x dx b a 对于给定的函数f (x )∈C [a ,b ],若p ? x ∈H ,满足 f ?p ?,f ?p ? =min p∈H f ?p ,f ?p 则称p ? x 为子空间H 中对于f (x )的最佳逼近平方元素。 特别地,若φj x =x j ,j =0,1,…m 则称满足条件的p ? x ∈H ,为函数f x 在区间[a ,b ]上带权ω x 的m 次最佳平方逼近多项式。 设f (x )∈C [a ,b ],p ? x ∈H 是子空间H 中对于f (x )的最佳平方逼近元素的充分必要条件是 f ?p ?,φj =0,(j =0,1,…,m )或对于任意一个p x ,总有 f ?p ?,p =0。 求最佳平方逼近元素p ? x = c k ?φk x m k =0,只要求出c k ? 。 因 f ?p ?,φj = f ,φj ? c k ? φi ,φj =0m k =0 得 c k ? φi ,φj = f ,φj m k =0 得 φ0,φ0 ? φ0,φm ??? φm ,φ0 ? φm ,φm c 0? ?c m ? = f ,φ0 ? f ,φm 求出c k ?,带入p ? x = c k ? φk x m k =0即可。

数学实验报告

《数学实验》报告 题目:根据数值积分计算方法计 算山东省面积 学生姓名: 学号: 专业班级:机械工程17-1班

2019年4月15日

一、问题背景与提出 图1是从百度地图中截取的山东省地图,试根据前面数值积分计 算方法,计算山东省面积。 图 1 二、实验目的 1、 学会运用matlab 解决一些简单的数学应用问题。 2、 学会运用matlab 建立数学模型。 3、 学会运用一些常见的数值积分计算方法结算实际问题,并 了解其实际意义,建立积分模型。 三、实验原理与数学模型 将积分区间 [a , b] n 等分,每个区间宽度均为h = (b - a) / n , h 称 为积分步长。记 a = x 0 < x 1 < … < x k … < x n = b , 在小区间上用小矩形面积近似小曲边梯形的面积,若分别取左端点和右端点的函数值为小矩形的高,则分别得到两个曲边梯形的面积的近似公式: Ln = h ∑f (x k )n=1k=0 , h = b?a ?

R n =?∑f (x k )n k=1 , h = b?a ? 如果将二者求平均值,则每个小区间上的小矩形变为小梯形,整 个区间上的值变为: Tn =?∑f (X k )n=1 k=1+?2[f (x 0)+f (x n )] 将山东省边界上的点反映在坐标化,运用梯形公式积分计算得山 东省的面积。 四、实验内容(要点) 1、将山东省的地图区域在matlab 中画出 。 2、在坐标系上运用积分方法将所求区域的面积求出。 3、通过比例尺将山东省的实际面积求出。 五、实验过程记录(含基本步骤、主要程序清单及异常情况记录等) 1、 在百度地图中标识出山东省的区域范围,标明对应的比例: 图 2 2、 取出所截取图片中山东的边界的坐标,即将边界坐标化: (1) 运用imread 函数和imshow 函数导入山东省的区域 图片。

插值法实验报告

实验二插值法 1、实验目的: 1、掌握直接利用拉格郎日插值多项式计算函数在已知点的函数值;观察拉格郎日插值的龙格现象。 2、了解Hermite插值法、三次样条插值法原理,结合计算公式,确定函数值。 2、实验要求: 1)认真分析题目的条件和要求,复习相关的理论知识,选择适当的解决方案和算法; 2)编写上机实验程序,作好上机前的准备工作; 3)上机调试程序,并试算各种方案,记录计算的结果(包括必要的中间结果); 4)分析和解释计算结果; 5)按照要求书写实验报告; 3、实验内容: 1) 用拉格郎日插值公式确定函数值;对函数f(x)进行拉格郎日插值,并对f(x)与插值多项式的曲线作比较。 已知函数表:(0.56160,0.82741)、(0.56280,0.82659)、(0.56401,0.82577)、(0.56521,0.82495)用三次拉格朗日插值多项式求x=0.5635时函数近似值。 2) 求满足插值条件的插值多项式及余项 1) 4、题目:插值法 5、原理: 拉格郎日插值原理: n次拉格朗日插值多项式为:L n (x)=y l (x)+y 1 l 1 (x)+y 2 l 2 (x)+…+y n l n (x)

n=1时,称为线性插值, L 1(x)=y (x-x 1 )/(x -x 1 )+y 1 (x-x )/(x 1 -x )=y +(y 1 -x )(x-x )/(x 1 -x ) n=2时,称为二次插值或抛物线插值, L 2(x)=y (x-x 1 )(x-x 2 )/(x -x 1 )/(x -x 2 )+y 1 (x-x )(x-x 2 )/(x 1 -x )/(x 1 -x 2 )+y 2 (x -x 0)(x-x 1 )/(x 2 -x )/(x 2 -x 1 ) n=i时, Li= (X-X0)……(X-X i-1)(x-x i+1) ……(x-x n) (X-X0)……(X-X i-1)(x-x i+1) ……(x-x n) 6、设计思想: 拉格朗日插值法是根据n + 1个点x0, x1, ... x n(x0 < x1 < ... x n)的函数值f (x0), f (x1) , ... , f (x n)推出n次多項式p(x),然后n次多項式p (x)求出任意的点x对应的函数值f (x)的算法。 7、对应程序: 1 ) 三次拉格朗日插值多项式求x=0.5635时函数近似值 #include"stdio.h" #define n 5 void main() { int i,j; float x[n],y[n]; float x1; float a=1; float b=1; float lx=0; printf("\n请输入想要求解的X:\n x="); scanf("%f",&x1); printf("请输入所有点的横纵坐标:\n"); for(i=1;i

小学数学实验报告

竭诚为您提供优质文档/双击可除 小学数学实验报告 篇一:小学数学课题实验总结报告 《实施合作学习,发挥优势互补的研究》 课题实验总结 在上级主管部门和学校领导关心支持下我们开展了《实施合作学习,发挥优势互补》的课题研究。在课题组全体老师两年的不懈努力下,已基本完成本课题研究任务,并取得预期成果。 开展课题实验以来,我们坚持在实践中探索,在探索中实践,取得了初步的成效,主要体现在实验促进了三个方面的转变,一个方面的提高。 一、促进教师教学观念的转变。 参加课题实验后,实验组的老师们通过边实验边学习,不断总结与反思,提升了自己的科研水平,并树立了以“教学是为了促进学生发展”为最终目标的新型教育教学观念。课堂上,老师与学生建立了和谐融洽的师生关系,在精心创设的良好的教学氛围中鼓励学生独立思考、大胆质疑、敢于

探索、勇于创新。让学生在自主、合作、探究的学习过程中,激发学习热情,养成学习习惯,提高学习能力,从而促进了学生的发展。 二、促进学生学习方式的转变。 学生正在由被动学习逐步向主动学习转变,由老师教转变为我能学,由师生间的单向性活动转变为双向性互动、多边性互动,增大了课堂信息量,学生积极主动学习,小组合作、乐于探究,他们发扬团队精神,团队之间互相竞争、优势互补,并培养学生动手、动脑、动口的能力,培养创新意识。课前,学生能积极主动地预习信息窗内容,提出问题并尝试解决。课堂上,学生能够热烈地交流预习所得,积极主动地参与课堂讨论,参与面广,讨论热烈而且有序。课后,能自觉温习知识,深化学习,拓展延伸,并加以运用。绝大部分学生善于表达,敢于提出自己的不同见解,有较强的探究精神,能够提出问题积极思考,并能够多角度思维寻找解决问题的策略,并且培养了学生良好的合作学习的习惯。 学习方式的转变促进了学生全面发展,他们乐学,善学,学有所成。随着学生自主合作探究能力的不断提高,自主性合作性探究性已多个学习层面辐射,辐射到其它学科、班级管理、文体活动等方面。实验班班风好,学风浓,学生对所有科目的学习兴趣盎然、积极主动,全面发展。 三、促进课堂教学格局的转变。

数据结构 多项式 实验报告

数据结构实验报告 实验名称:实验一——多项式的实现 学生姓名: 班级: 班内序号: 学号: 日期:2011年10月29日 1.实验要求 实验目的: 1.熟悉C++语言的基本编程方法,掌握集成编译环境的调试方法 2.学习指针、模板类、异常处理的使用 3.掌握线性表的操作的实现方法 4.学习使用线性表解决实际问题的能力 实验内容: 利用线性表实现一个一元多项式Polynomial f(x) = a0 + a1x + a2x2 + a3x3+ … + a n x n 要求: 1.能够实现一元多项式的输入和输出 2.能够进行一元多项式相加 3.能够进行一元多项式相减 4.能够计算一元多项式在x处的值 5.能够计算一元多项式的导数(选作) 6.能够进行一元多项式相乘(选作) 7.编写测试main()函数测试线性表的正确性 2. 程序分析 由于多项式是线性结构,故选择线性表来实现,在这个程序中我采用的是单链表结构,每个结点代表一个项,多项式的每一项可以用其系数和指数唯一的表示。如果采用顺序存储,那么对于结点的插入和删除的操作会比较麻烦,而且顺序表的结点个数固定,对于可能发生的情况无法很好的处理,而采用链表就会简单许多,还能自由控制链表的长度。 两个多项式要进行多次的计算,为了保护原始的数据,方便进行以后的计算,故选择把结果存储在一个新建的链表里。 本程序完成的主要功能: 1.输入和输出:需要输入的信息有多项式的项数,用来向系统动态申请内存;多项式

各项的系数和指数,用来构造每个结点,形成链表。输出即是将多项式的内容 向屏幕输出。 2.多项式相加与相减:多项式的加减要指数相同即是同类项才能实现,所以在运算时 要注意判断指数出现的各种不同的情况,分别写出计算方法。将每项运算得到 的结果都插入到新的链表中,形成结果多项式。 3.多项式的求导运算:多项式的求导根据数学知识,就是将每项的系数乘以指数,将 指数减1即可,将每项得到的结果插入到结果多项式的链表中。 4.多项式在某点的值:由用户输入x的值,然后求出每项的值相加即可。 2.1 存储结构 本程序采用的存储结构是单链表结构,其定义的结点包括三部分:系数、指数以及下一个结点的地址。示意图如下: 1.输入多项式 ·自然语言描述: 1.设置多项式的项数n; 2.按照多项式的项数申请动态数组coef[]和expn[]存储多项式的系数和指数; 3.按照指数递增的次序输入各项的系数以及指数,分别存入coef和expn; 4.再将输入的系数以及指数赋给每一个结点的coef和expn域; 5.利用头插法将每个结点加入链表。 ·伪代码: 1.输入项数n; 2.float* coef1=new float[n1]; int* expn1=new int[n1]; 3.运用for循环,循环n次 3.1 term* s=new term; 3.2 s->coef=coef[i]; 3.3 s->expn=expn[i]; 3.4 r->next=s; 3.5 r=s; 4. 运用头插法将结点插入链表。 时间复杂度: 空间复杂度: 2.输出多项式 ·自然语言描述: 1.获取头结点; 2.循环n-1次(n为多项式的项数) 2.1将指针的指向后移; 2.2依照多项式的各种情况,设置输出方式 2.2.1 系数为1且指数不为1和0,输出x^expn+; 2.2.2 系数不为0且指数为0,输出(coef)+; 2.2.3 系数不为0且指数为1,输出(coef)x+;

链表实现多项式相加实验报告

实验报告 课程名称:数据结构 题目:链表实现多项式相加 班级: 学号: 姓名: 完成时间:2012年10月17日

1、实验目的和要求 1)掌握链表的运用方法; 2)学习链表的初始化并建立一个新的链表; 3)知道如何实现链表的插入结点与删除结点操作; 4)了解链表的基本操作并灵活运用 2、实验内容 1)建立两个链表存储一元多项式; 2)实现两个一元多项式的相加; 3)输出两个多项式相加后得到的一元多项式。 3、算法基本思想 数降序存入两个链表中,将大小较大的链表作为相加后的链表寄存处。定义两个临时链表节点指针p,q,分别指向两个链表头结点。然后将另一个链表中从头结点开始依次与第一个链表比较,如果其指数比第一个小,则p向后移动一个单位,如相等,则将两节点的系数相加作为第一个链表当前节点的系数,如果为0,则将此节点栓掉。若果较大,则在p前插入q,q向后移动一个,直到两个链表做完为止。 4、算法描述 用链表实现多项式相加的程序如下: #include #include #include struct node{ int exp; float coef; struct node*next; };

void add_node(struct node*h1,struct node*h2); void print_node(struct node*h); struct node*init_node() { struct node*h=(struct node*)malloc(sizeof(struct node)),*p,*q; int exp; float coef=1.0; h->next=NULL; printf("请依次输入多项式的系数和指数(如:\"2 3\";输入\"0 0\"时结束):\n"); p=(struct node*)malloc(sizeof(struct node)); q=(struct node*)malloc(sizeof(struct node)); for(;fabs(coef-0.0)>1.0e-6;) { scanf("%f %d",&coef,&exp); if(fabs(coef-0.0)>1.0e-6) { q->next=p; p->coef=coef; p->exp=exp; p->next=NULL; add_node(h,q); } } free(p); free(q); return(h); } void add_node(struct node*h1,struct node*h2) { struct node*y1=h1,*y2=h2; struct node*p,*q; y1=y1->next; y2=y2->next; for(;y1||y2;) if(y1) { if(y2) { if(y1->expexp) y1=y1->next; else if(y1->exp==y2->exp) { y1->coef+=y2->coef; if(y1->coef==0)

数学实验报告

数学实验报告 实验序号:日期:2016 年

实验过程记录(含基本步骤、主要程序清单及异常情况记录等): 第一题 选择初速度v=0.6km/s,发射角a=45° X轴方向运动为x=cos a*v*t Y轴方向运动为y=sin a*v*t-1/2*g*t2 统一单位将0。6km/s化为600m/s 将数据代入利用函数做出运动轨迹,函数式为 8000 6000 4000 2000 5000100001500020000250003000035000 第二题 确定速度为320m/s,求最佳角度使得轨迹与X轴交点为(10000,0) 先假定发射角为π/4 作图 ParametricPlot[{Cos[Pi/4]*320*t,Sin[Pi/4]*320*t —4.9*t^2},{t,0,47},AspectRatioAutomatic] 2500 2000 1500 1000 500 200040006000800010000 进行调整角度调整为π/3.5作图 ParametricPlot[{Cos[Pi/3.5]*320*t,Sin[Pi/3.5]*320*t-4。9*t^2},{t,0,52},AspectRatio Automatic] 3000 2500 2000 1500 1000 500 200040006000800010000

继续进行不断地调整,发现当发射角度为π/3。7时,落点十分接近(10000,0)点作图如下 200040006000800010000 500 1000 1500 2000 2500 3000 因此可以确定最合适的发射角就在π/3。7附近,此时可以利用FindRoot函数找出准确值 首先需要对已知式做等量变换: ∵X=cos a*v*t ∴t=x/(cos a*v) 将上式代入y=sina*v*t-1/2*g*t2 中可得到 Y=tana*x—1/2*g*(x/(cosa*v))2 将y=0, x=10000,g=9.8, v=320代入利用FindRoot函数求解a 的范围在π/3.7附近的a的值: 得出 将这个值由弧度制化为360度制 a=53.4285° ∴最佳发射角为53.4285° 第三题 由第二题的320m/s起步进行研究 1.首先研究速度增大运用与第二题相似的研究方法,先大致计算符合要求的角度 (1)V=350m/s时,最佳发射角为π/6.8: 200040006000800010000 200 400 600 800 1000 1200 (2)V=400m/s时,最佳发射角为π/9。5: 0200040006000800010000 200 400 600 800

一元多项式相加完整实验报告

一元多项式相加实验报告 一元多项式的相加

一实验内容 根据所学的数据结构中线性结构(线性表)的逻辑特性和物理特性及相关算法,应用于求解一个具体的实际问题----------两个多项式相加 二需求分析 1掌握线性结构的逻辑特性和物理特性。 2建立一元多项式。 3将一元多项式输入,并存储在内存中,并按照指数降序排列输出多项式。 4能够完成两个多项式的加减运算,并输出结果。 三概要设计 1 本程序所用到的抽象数据类型: typedef OrderedLinkList polynomial; // 用带表头结点的有序链表表示多项式 结点的数据元素类型定义为: typedef struct { // 项的表示 float coef; // 系数 int expn; // 指数 term, ElemType; V oid AddPolyn(polynomail&Pa,polynomail&Pb) Position GetHead() Position NextPos(LinkList L,Link p) Elem GetCurElem(Link p) int cmp(term a term b) Status SetCurElem(Link&p, ElemType e) Status DelFirst(Link h, Link &q) Status ListEmpty(LinkList L) Status Append(LinkList&L, Link S) FreeNode() 2 存储结构

一元多项式的表示在计算机内用链表来实现,同时为了节省存储空间,只存储其中非零的项,链表中的每个节点存放多项式的系数非零项。它包含三个域,分别存放多项式的系数,指数,以及指向下一个项的指针。 创建一元多项式链表,对运算中可能出现的各种情况进行分析,实现一元多项式的相加相减操作。 3 模块划分 a) 主程序;2)初始化单链表;3)建立单链表; 4)相加多项式 4 主程序流程图 四详细设计 根据一元多项式相加的运算规则:对于两个一元多项式中所有指数相同的项,对应系数相加,若其和不为零,则构成“和多项式”中的一项,对

用多项式模型进行数据拟合实验报告(附代码)

实验题目: 用多项式模型进行数据拟合实验 1 实验目的 本实验使用多项式模型对数据进行拟合,目的在于: (1)掌握数据拟合的基本原理,学会使用数学的方法来判定数据拟合的情况; (2)掌握最小二乘法的基本原理及计算方法; (3)熟悉使用matlab 进行算法的实现。 2 实验步骤 2.1 算法原理 所谓拟合是指寻找一条平滑的曲线,最不失真地去表现测量数据。反过来说,对测量 的实验数据,要对其进行公式化处理,用计算方法构造函数来近似表达数据的函数关系。由于函数构造方法的不同,有许多的逼近方法,工程中常用最小平方逼近(最小二乘法理论)来实现曲线的拟合。 最小二乘拟合利用已知的数据得出一条直线或曲线,使之在坐标系上与已知数据之间的距离的平方和最小。模型主要有:1.直线型2.多项式型3.分数函数型4.指数函数型5.对数线性型6.高斯函数型等,根据应用情况,选用不同的拟合模型。其中多项式型拟合模型应用比较广泛。 给定一组测量数据()i i y x ,,其中m i ,,3,2,1,0Λ=,共m+1个数据点,取多项式P (x ),使得 min )]([020 2=-=∑∑==m i i i m i i y x p r ,则称函数P (x )为拟合函数或最小二乘解,此时,令 ∑==n k k k n x a x p 0 )(,使得min ])([02 002=??? ? ??-=-=∑∑∑===m i n k i k i k m i i i n y x a y x p I ,其中 n a a a a ,,,,210Λ为待求的未知数,n 为多项式的最高次幂,由此该问题化为求),,,(210n a a a a I I Λ=的极值问题。 由多元函数求极值的必要条件:0)(200 =-=??∑∑==m i j i n k i k i k i x y x a a I ,其中n j ,,2,1,0Λ= 得到: ∑∑∑===+=n k m i i j i k m i k j i y x a x )(,其中n j ,,2,1,0Λ=,这是一个关于n a a a a ,,,,210Λ的线 性方程组,用矩阵表示如下所示:

实验四 数据分析与多项式计算(含实验报告)

实验四 数据分析与多项式计算 一、实验目的 1.掌握数据统计和分析的方法。 2.掌握数据插值与曲线拟合的方法及其应用。 3.掌握多项式的常用运算。 二、实验的设备及条件 计算机一台(带有MATLAB7.0以上的软件环境)。 设计提示 1.参考本节主要内容,学习并理解相关函数的含义及调用方法。 三、实验内容 1.请完成教材P134中实验指导环节的实验内容的第1题; 2. 请完成教材P134中实验指导环节的实验内容的第2题(此题含两个小题, 任选其一完成); 3. 请完成教材135中实验指导环节的实验内容第4题; 4. 请完成教材135中实验指导环节的实验内容的第5题。 5. 已知某压力传感器的测试数据如下表 p 0.0 1.1 2.1 2.8 4.2 5.0 6.1 6.9 8.1 9.0 9.9 u 10 11 13 14 17 18 22 24 29 34 39 p 为压力值,u 为电压值,试用多项式 d cp bp ap p u +++=23)(来拟合其特性函数,求出a,b,c,d ,并把拟合曲线和各个测试数据点画在同一幅图上。 四、实验报告要求(包含预习报告要求和最终报告要求) 1.实验名称 2.实验目的 3.实验设备及条件 4.实验内容及要求 5.实验程序设计 指程序代码。 预习报告 要求 最终报告要求

6.实验结果及结果分析 实验结果要求必须客观,有数据的可以记录数据,没有数据的简单描述实验现象。结果分析是对实验结果的理论评判。 7.实验中出现的问题及解决方法 8. 思考题的回答 一、实验报告的提交方式 Word文档,命名方式:实验号_你的学号_姓名!!! 例如本次实验:实验一_000000001_张三.doc (信息101提交报告邮箱):E_mail: matlab_xx01@https://www.doczj.com/doc/2211740871.html, (网络工程101提交作业邮箱):E_mail: Matlab_wg01@https://www.doczj.com/doc/2211740871.html,(注意网络班的M是大写的) 下一次课前提交,过期不收! 二、参考文献 参考教材和Matlab帮助文件。 1.实验名称 数据分析与多项式计算 2.实验目的 1.掌握数据统计和分析的方法。 2.掌握数据插值与曲线拟合的方法及其应用。 3.掌握多项式的常用运算。 3.实验设备及条件 计算机一台(带有MATLAB7.0以上的软件环境) 4.实验内容及要求 完成所给实验题以及思考题,题与题之间用相应注释分割。注意对实验中出现的相关函数或变量,请使用help或doc查询相关帮助文档,学习函数的用法。 5.实验程序设计 %1.1

一元多项式的运算

数据结构课程设计实验报告 专业班级: 学号: 姓名: 2011年1月1日

题目:一元多项式的运算 1、题目描述 一元多项式的运算在此题中实现加、减法的运算,而多项式的减法可以通过加法来实现(只需在减法运算时系数前加负号)。 在数学上,一个一元n次多项式P n(X)可按降序写成: P n(X)= P n X^n+ P(n-1)X^(n-1)+......+ P1X+P0 它由n+1个系数惟一确定,因此,在计算机里它可以用一个线性表P来表示: P=(P n,P(n-1),......,P1,P0) 每一项的指数i隐含在其系数P i的序号里。 假设Q m(X)是一元m次多项式,同样可以用一个线性表Q来表示: Q=(q m,q(m-1),.....,q1,q0) 不是一般性,假设吗吗m

[vip专享]2013春数学实验基础 实验报告(1)常微分方程

1. 分别用Euler 法和ode45解下列常微分方程并与解析解比较: (1) 30,1)0(,<<=+='x y y x y 编写Euler 法的matlab 函数,命名为euler.m function [t,y]=euler(odefun,tspan,y0,h)t=tspan(1):h:tspan(2);y(1)=y0; for i=1:length(t)-1 y(i+1)=y(i)+h*feval(odefun,t(i),y(i));end t=t';y=y'; 下面比较三者的差别:% ode45 odefun=inline('x+y','x','y');[x1,y1]=ode45(odefun,[0,3],1);plot(x1,y1,'ko');pause hold on ;% Euler·¨ [x2,y2]=euler(odefun,[0,3],1,0.05);plot(x2,y2,'r+');pause hold on ; % 解析解 y0=dsolve('Dy=t+y','y(0)=1');ezplot(y0,[0,3]);pause hold off ; legend('ode45','euler 法','解析解');

Euler 法只有一阶精度,所以实际应用效率比较差,而ode45的效果比较好,很接近真实值。 (2) 2 0.01()2sin(),(0)0,(0)1,05 y y y t y y t ''''-+===<<先写M 文件ex1_2fun.m function f=ex1_2fun(t,y)f(1)=y(2); f(2)=0.01*y(2).^2-2*y(1)+sin(t);f=f(:);% ode45 [t1,y1]=ode45(@ex1_2fun,[0,5],[0;1]);plot(t1,y1(:,1),'ko'); % 解析解 s=dsolve('D2y-0.01*(Dy)^2+2*y=sin(t)','y(0)=0','Dy(0)=1','t') s = [ empty sym ] %由此可知该微分方程无解析解2. 求一通过原点的曲线,它在处的切线斜率等于若上限增为1.58,1.60会(,)x y 2 2,0 1.57.x y x +<

两个一元多项式相加-c++版

《数据结构》实验报告 ——两个一元多项式相加 一、实验题目:两个一元多项式相加 二、实验内容: 根据所学的数据结构中线性结构(线性表)的逻辑特性和物理特性及相关算法,应用于求解一个具体的实际问题----------两个多项式相加 三、设计思想: (1)建立两个顺序列表,分别用来表示两个一元多项式;顺序列表奇数位,存储该多项式的系数;顺序列表的偶数位,存储该相应多项式的指数。 (2)用成员函数merg(qList&l2)实现两多项式的相加。实现的大致方法为:比较第二个多项式列表与第一个多项式列表的偶数位的数值大小(指数),如果 相同,则将他们的前一位数(系数)相加;如果不同,就将他的前一位数(系 数)及它自己(指数)插入第一个多项式列表的后面。 (3)建立函数shu(double a[],int j)实现多项式的输入。 四、源程序代码 #include "stdafx.h" #include using namespace std; template class List { private: Telem * elem; int curlen; int maxlen; public: List(int maxsz=100):maxlen(maxsz) { curlen=0; elem=new Telem{maxlen}; }; List(Telem a[],int n,int maxsz=100):maxlen(maxsz) { curlen=n; elem=new Telem[maxlen]; for(int i=0;i

数学实验综合实验报告材料

一、实验目的: 1、初步认识迭代,体会迭代思想的重要性。 2、通过在mathematica环境下编写程序,利用迭代的方法求解方程的根、线性方程组的解、非线性方程组的解。 3、了解分形的的基本特性及利用mathematica编程生成分形图形的基本方法,在欣赏由mathematica生成的美丽的分形图案的同时对分形几何这门学科有一个直观的了解。从哲理的高度理解这门学科诞生的必然性,激发读者探寻科学真理的兴趣。 4、从一个简单的二次函数的迭代出发,利用mathematica认识混沌现象及其 所 蕴涵的规律。 5、.进一步熟悉Mathematic软件的使用,复习总结Mathematic在数学作图中的应用,为便于研究数学图像问题提供方便,使我们从一个新的视角去理解数学问题以及问题的实际意义。 6、在学习和运用迭代法求解过程中,体会各种迭代方法在解决问题的收敛速度上的异同点。 二、实验的环境: 学校机房,mathematica4环境 三、实验的基本理论和方法: 1、迭代(一)—方程求解 函数的迭代法思想: 给定实数域上光滑的实值函数)(x f以及初值 x定义数列

1()n n x f x +=, ,3,2,1,0=n , (1) n x , ,3,2,1,0=n ,称为)(x f 的一个迭代序列。 (1)方程求根 给定迭代函数)(x f 以及初值0x 利用(1)迭代得到数列n x , ,3,2,1,0=n .如果数列收敛到某个*x ,则有 )(**x f x =. (2) 即*x 是方程)(x f x =的解。由此启发我们用如下的方法求方程0)(=x g 的近似解。 将方程0)(=x g 改写为等价的方程 )(x f x =, (3) 然后选取一初值利用(1)做迭代。迭代数列n x 收敛的极限就是方程0)(=x g 的解。 为了使得迭代序列收敛并尽快收敛到方程0)(=x g 的某一解的条件是迭代函数)(x f 在解的附近的导数将的绝对值尽量小,因此迭代方程修订成 x x f x h x )1()()(λλ-+== (4) 选取λ使得|)(|x h '在解的附近尽量小. 为此, 我们可以令 ,01)()(=-+'='λλx f x h 得 ) (11 x f '-= λ. 于是 1 )()()(-'-- =x f x x f x x h .

[计算机]一元多项式相加完整实验报告

[计算机]一元多项式相加完整实验报告一元多项式的相加 一实验内容 根据所学的数据结构中线性结构(线性表)的逻辑特性和物理特性及相关算法,应用于求解一个具体的实际问题----------两个多项式相加 二需求分析 1掌握线性结构的逻辑特性和物理特性。 2建立一元多项式。 3将一元多项式输入,并存储在内存中,并按照指数降序排列输出多项式。 4能够完成两个多项式的加减运算,并输出结果。 三概要设计 1 本程序所用到的抽象数据类型: typedef OrderedLinkList polynomial; // 用带表头结点的有序链表表示多项式 结点的数据元素类型定义为: typedef struct { // 项的表示 oat flcoef; // 系数 int expn; // 指数 term, ElemType; Void AddPolyn(polynomail&Pa,polynomail&Pb) Position GetHead() Position NextPos(LinkList L,Link p) Elem GetCurElem(Link p) int cmp(term a term b)

Status SetCurElem(Link&p, ElemType e) Status DelFirst(Link h, Link &q) Status ListEmpty(LinkList L) Status Append(LinkList&L, Link S) FreeNode() 2 存储结构 一元多项式的表示在计算机内用链表来实现,同时为了节省存储空间,只存储其中非零的项,链表中的每个节点存放多项式的系数非零项。它包含三个域,分别存放多项式的系数,指数,以及指向下一个项的指针。 序数coef 指数exp 指针域next 创建一元多项式链表,对运算中可能出现的各种情况进行分析,实现一元多项式的相加相减操作。 3 模块划分 a) 主程序;2)初始化单链表;3)建立单链表; 4)相加多项式 4 主程序流程图 开始 申请结点空间 输入多项式各项的系数X,指数Y 输出已输出的多项式 否 是否输入正确 合并同类项 结束 四详细设计 根据一元多项式相加的运算规则:对于两个一元多项式中所有指数相

相关主题
文本预览
相关文档 最新文档