北京理工大学徐特立学院数值分析上机报告

合集下载

数值分析第一次上机练习实验报告

数值分析第一次上机练习实验报告

数值分析第一次上机练习实验报告一、实验目的本次实验旨在通过上机练习,加深对数值分析方法的理解,并掌握实际应用中的数值计算方法。

二、实验内容1. 数值计算的基本概念和方法在本次实验中,我们首先回顾了数值计算的基本概念和方法。

数值计算是一种通过计算机进行数值近似的方法,其包括近似解的计算、误差分析和稳定性分析等内容。

2. 方程求解的数值方法接下来,我们学习了方程求解的数值方法。

方程求解是数值分析中非常重要的一部分,其目的是找到方程的实数或复数解。

我们学习了二分法、牛顿法和割线法等常用的数值求解方法,并对它们的原理和步骤进行了理论学习。

3. 插值和拟合插值和拟合是数值分析中常用的数值逼近方法。

在本次实验中,我们学习了插值和拟合的基本原理,并介绍了常见的插值方法,如拉格朗日插值和牛顿插值。

我们还学习了最小二乘拟合方法,如线性拟合和多项式拟合方法。

4. 数值积分和数值微分数值积分和数值微分是数值分析中的两个重要内容。

在本次实验中,我们学习了数值积分和数值微分的基本原理,并介绍了常用的数值积分方法,如梯形法和辛卜生公式。

我们还学习了数值微分的数值方法,如差商法和牛顿插值法。

5. 常微分方程的数值解法常微分方程是物理和工程问题中常见的数学模型,在本次实验中,我们学习了常微分方程的数值解法,包括欧拉法和四阶龙格-库塔法。

我们学习了这些方法的步骤和原理,并通过具体的实例进行了演示。

三、实验结果及分析通过本次实验,我们深入理解了数值分析的基本原理和方法。

我们通过实际操作,掌握了方程求解、插值和拟合、数值积分和数值微分以及常微分方程的数值解法等数值计算方法。

实验结果表明,在使用数值计算方法时,我们要注意误差的控制和结果的稳定性。

根据实验结果,我们可以对计算结果进行误差分析,并选择适当的数值方法和参数来提高计算的精度和稳定性。

此外,在实际应用中,我们还需要根据具体问题的特点和条件选择合适的数值方法和算法。

四、实验总结通过本次实验,我们对数值分析的基本原理和方法有了更加深入的了解。

优质文档精选——数值分析上机实验报告

优质文档精选——数值分析上机实验报告

数值分析上机实验报告《数值分析》上机实验报告1.用Newton 法求方程 X 7-X 4+14=0在(0.1,1.9)中的近似根(初始近似值取为区间端点,迭代6次或误差小于0.00001)。

1.1 理论依据:设函数在有限区间[a ,b]上二阶导数存在,且满足条件{}αϕ上的惟一解在区间平方收敛于方程所生的迭代序列迭代过程由则对任意初始近似值达到的一个中使是其中上不变号在区间],[0)(3,2,1,0,)(')()(],,[x |))(),((|,|,)(||)(|.4;0)(.3],[)(.20)()(.110......b a x f x k x f x f x x x Newton b a b f a f mir b a c x f ab c f x f b a x f b f x f k k k k k k ==-==∈≤-≠>+令)9.1()9.1(0)8(4233642)(0)16(71127)(0)9.1(,0)1.0(,1428)(3225333647>⋅''<-=-=''<-=-='<>+-=f f x x x x x f x x x x x f f f x x x f故以1.9为起点⎪⎩⎪⎨⎧='-=+9.1)()(01x x f x f x x k k k k 如此一次一次的迭代,逼近x 的真实根。

当前后两个的差<=ε时,就认为求出了近似的根。

本程序用Newton 法求代数方程(最高次数不大于10)在(a,b )区间的根。

1.2 C 语言程序原代码:#include<stdio.h>#include<math.h> main(){double x2,f,f1;double x1=1.9; //取初值为 1.9 do{x2=x1;f=pow(x2,7)-28*pow(x2,4)+14; f1=7*pow(x2,6)-4*28*pow(x2,3); x1=x2-f/f1;}while(fabs(x1-x2)>=0.00001||x1<0.1); //限制循环次数 printf("计算结果:x=%f\n",x1);}1.3 运行结果:1.4 MATLAB 上机程序function y=Newton(f,df,x0,eps,M) d=0;for k=1:Mif feval(df,x0)==0d=2;breakelsex1=x0-feval(f,x0)/feval(df,x0);ende=abs(x1-x0);x0=x1;if e<=eps&&abs(feval(f,x1))<=epsd=1;breakendendif d==1y=x1;elseif d==0y='迭代M次失败';elsey= '奇异'endfunction y=df(x)y=7*x^6-28*4*x^3;Endfunction y=f(x)y=x^7-28*x^4+14;End>> x0=1.9;>> eps=0.00001;>> M=100;>> x=Newton('f','df',x0,eps,M);>> vpa(x,7)1.5 问题讨论:1.使用此方法求方解,用误差来控制循环迭代次数,可以在误差允许的范围内得到比较理想的计算结果。

数值分析实验报告

数值分析实验报告

数值分析实验报告
一、实验背景
本实验主要介绍了数值分析的各种方法。

在科学计算中,为了求解一
组常微分方程或一些极限问题,数值分析是一种有用的方法。

数值分析是
一种运用计算机技术对复杂模型的问题进行数学分析的重要手段,它利用
数学模型和计算机程序来解决复杂的数学和科学问题。

二、实验内容
本实验通过MATLAB软件,展示了以下几种数值分析方法:
(1)拉格朗日插值法:拉格朗日插值法是由法国数学家拉格朗日发
明的一种插值方法,它可以用来插值一组数据,我们使用拉格朗日插值法
对给定的点进行插值,得到相应的拉格朗日多项式,从而计算出任意一个
点的函数值。

(2)最小二乘法:最小二乘法是一种常用的数据拟合方法,它可以
用来拟合满足一定函数的点的数据,它的主要思想是使得数据点到拟合曲
线之间的距离的平方和最小。

(3)牛顿插值法:牛顿插值法是一种基于差商的插值方法,它可以
用来插值一组数据,可以求得一组数据的插值函数。

(4)三次样条插值:三次样条插值是一种基于三次样条的插值方法,它可以用来对一组数据进行插值,可以求得一组数据的插值函数。

三、实验步骤
1.首先启动MATLAB软件。

北理工数据结构上机实验报告1

北理工数据结构上机实验报告1

数据结构上级实验报告1——采用单向环表实现约瑟夫环一实验目的采用单向环表实现约瑟夫环二实验内容请按以下要求编程实现:①从键盘输入整数m,通过create函数生成一个具有m个结点的单向环表。

环表中的结点编号依次为1,2,……,m。

②从键盘输入整数s(1<=s<=m)和n,从环表的第s个结点开始计数为1,当计数到第n个结点时,输出该第n结点对应的编号,将该结点从环表中消除,从输出结点的下一个结点开始重新计数到n,这样,不断进行计数,不断进行输出,直到输出了这个环表的全部结点为止。

例如,m=10,s=3,n=4。

则输出序列为:6,10,4,9,5,2,1,3,8,7。

三程序设计(1)概要设计抽象数据类型:struct node{ int number;struct node * next;};宏:无主函数流程与各函数模块调用关系:创建头结点=〉输入链表的长度m=〉调用create函数建立链表=〉输入首次定位的节点s 以及间隔数n=〉调用deal函数处理链表=〉结束函数模块间无彼此调用关系(2)详细设计建立链表算法实现:void create(node * head,int m){node * p,*q;int i = 1;for(;m>0;m--){ p = (node *)malloc(sizeof(node));if(p == NULL) exit(0);p->number = m;p->next = head->next;head->next = p;if(i){q = p ; i--;}}q->next = head->next;}处理链表算法实现:void deal(node * head,int m,int s,int n){node * p,*q;int count=1,tag=0;p = head;while(s--){ p = p->next;}while(tag != m){if(count == n){printf("%d->",p->number);for(q = p->next; q->next != p; q=q->next);q->next = p->next;p = p->next;q = q->next;count = 1;tag++;}else {p = p->next;count++;}}printf("<-end\n");}主函数代码实现:int main(){ int m,s,n;node * head, * p;p = (node *)malloc(sizeof(node));p->next == NULL;head = p;printf("please input number m:\n");scanf("%d",&m);create(head,m);printf("please input number s(1<=s<=m):\n");scanf("%d",&s);printf("please input number n:\n");scanf("%d",&n);deal(head,m,s,n);system("pause");}四程序调试分析1在deal函数中进行对p节点的删除操作时出现问题,定位p的前一个节点q时,依旧采用了head指针从头遍历的方法,但是忽略了在函数操作中会删除掉头结点,这样head指针指向位置改变不能得到正确结果。

北理工_大数据分析报告_实验3_Matlab大数据处理

北理工_大数据分析报告_实验3_Matlab大数据处理

理工大学现代数据分析实验3实验报告主讲:明学生:经2012/10/24实验3数据处理1 (1)3.1实验目的 (1)3.1.1进一步熟悉Matlab数据处理基本功能。

(1)3.2实验容 (1)3.2.1成绩评估 (1)3.2.2曲线作图 (1)3.3实验代码及结果 (1)3.3.1成绩评估 (1)3.3.2曲线作图 (4)(图表页)图1.y1,y2,y3,y6曲线图 (5)图2.y4,y5曲线图 (6)图3.y7,y8曲线图 (6)实验3数据处理13.1实验目的3.1.1进一步熟悉Matlab数据处理基本功能。

3.2实验容3.2.1成绩评估某班5名学生,5门课程,生成学生成绩并进行统计:单人/单科(平均分,总分,标准差),全班学生优良率统计。

3.2.2曲线作图作出如下曲线,sin(x), sin(3x), sin(x)+sin(3x), x2,x3,1/x,log2(x),log10(x)含多曲线合成图,多子图合成图,用title命令、label命令和axis命令对图形进行规化。

3.3实验代码及结果3.3.1成绩评估代码:score=floor(rand(5,5)*40+60) %生成成绩,8人,6门/人sumLie=sum(score) %列求和sumHang=sum(score') %转置后利用列求和命令,实现行求和meanLie=mean(score) %列平均meanHang=mean(score') %行平均a=meanHang' %meanHang由列转置为行stdLie=std(score) %列标准差stdHang=std(score') %行标准差youliang=score>=80 %生成优良矩阵youliangHang=sum(youliang') %优良矩阵的行求和youlianglvHang=sum(youliang')/5 %优良门次除以总门次得优良率youliangLie=sum(youliang) %优良矩阵的行求和youlianglvLie=sum(youliang)/5 %优良人次除以总人数得优良率结果:score =69 97 71 64 8883 73 75 77 7180 76 80 78 7078 72 88 60 8881 76 72 86 91sumLie =391 394 386 365 408sumHang =389 379 384 386 406meanLie =78.2000 78.8000 77.2000 73.0000 81.6000 meanHang =77.8000 75.8000 76.8000 77.2000 81.2000a =77.800075.800076.800077.200081.2000stdLie =5.4498 10.32966.9785 10.7238 10.2127 stdHang =14.0250 4.6043 4.1473 11.7983 7.5961 youliang =0 1 0 0 11 0 0 0 01 0 1 0 00 0 1 0 11 0 0 1 1youliangHang =2 1 2 2 3youlianglvHang =0.4000 0.2000 0.4000 0.4000 0.6000 youliangLie =3 1 2 1 3youlianglvLie =0.6000 0.2000 0.4000 0.2000 0.60003.3.2曲线作图代码:x=-100:100;y1=sin(x);y2=sin(3*x);y3=sin(x)+sin(3*x);y4=power(x,2);y5=power(x,3);y6=1./x;y7=log2(x);y8=log10(x);subplot(2,2,1), plot(x,y1,'r-');title('y1=sin(x)');axis([0 100 -1 1]);subplot(2,2,2), plot(x,y2,'g-');title('y2=sin(3*x)');axis([0 100 -1 1]);subplot(2,2,3), plot(x,y3,'b-');title('y3=sin(x)+sin(3*x)');axis([0 100 -2 2]);subplot(2,2,4), plot(x,y6,'r-');title('y6=1./x');figure(2);plotyy(x,y4,x,y5);title('y4=x^2 and y5=x^3');xlabel('x');ylabel('y');figure(3);plotyy(x,y7,x,y8);title('y7=log2(x) and y8=log10(x)'); xlabel('x');ylabel('y');axis auto;结果:。

积分问题-数值分析上机实验报告

积分问题-数值分析上机实验报告

数值分析上机报告姓名:学号:专业:学院:授课教师:胡杰昆明理工大学2012.01.01《数值分析》实验报告——数值积分问题一、问题的提出在微积分中,积分值是通过原函数的解析式求得的,即依据人们所熟知的微积分基本定理,对于积分:⎰=badx x f )(I ,只要找到被积函数f (x )的原函数F(x),便有下列牛顿——莱布尼茨(Newton-Leibniz )公式:)()()(a b dx x f baF F -=⎰。

然而有的原函数寻找往往比较困难,许多积分函数甚至找不到用初等函数表示的原函数。

为此研究数值积分问题是非常必要的。

数值积分的至今普遍应用主要有五种:梯形公式、Simpson 公式及其两种算法的复化公式、高斯求积公式。

本实验只要选用复合Simpson 公式及高斯求积公式对特定某个积分,例如:dxdy exy⎰⎰-D,D={0<x<1,0<y<1}进行数值计算,比较分析两种算法的结果,理解数值积分法的意义,明确数值积分精度和步长之间的关系等。

二、目的和意义1、 深刻理解数值积分的意义:在微积分中,积分值是通过原函数的解析式求得的,然而原函数的寻找往往比较困难,许多积分函数甚至找不到用初等函数表示的原函数;另外,当()f x 是由测量或者数值计算给出的一张数据表时,牛顿—莱布尼茨公式也不能直接运用,为此研究数值积分问题是非常必要的。

2、 明确数值积分的精度与步长的关系:复化的求积方法对提高精度是行之有效的,但是在使用求积之前必须给出合适的步长,并且高斯求积公式具有比复化求积公式更高的精度,步长取得太大精度难以保证,步长太小则会导致计算量的增加。

3、 根据定积分的计算方法,可以考虑二重积分的计算问题:在微积分中,二重积分的计算是用化为累次积分的方法进行的。

计算二重数值积分也同样采用累次积分的计算过程。

利用二重积分的复化梯形公式设计如下:a,b,c,d 为常数,f 在D 上连续。

数值分析上机实验报告

数值分析上机实验报告

数值分析上机实验报告导言:本次上机实验主要是针对数值分析课程中的一些基本算法进行实验验证。

实验内容包括迭代法、插值法、数值积分和常微分方程的数值解等。

在实验过程中,我们将会使用MATLAB进行算法的实现,并对结果进行分析。

一、迭代法迭代法是解决函数零点、方程解等问题的常用方法。

我们将选择几个常见的函数进行迭代求根的实验。

(1)二分法二分法是一种简单而有效的迭代求根法。

通过函数在区间两个端点处的函数值异号来确定函数在区间内存在零点,并通过不断缩小区间来逼近零点。

(2)牛顿法牛顿法利用函数的一阶导数和二阶导数的信息来逼近零点。

通过不断迭代更新逼近值,可以较快地求得零点。

实验结果表明,对于简单的函数,这两种迭代法都具有很好的收敛性和稳定性。

但对于一些复杂的函数,可能会出现迭代失效或者收敛速度很慢的情况。

二、插值法插值法是在给定一些离散数据点的情况下,通过构造一个插值函数来逼近未知函数的值。

本实验我们将使用拉格朗日插值和牛顿插值两种方法进行实验。

(1)拉格朗日插值拉格朗日插值通过构造一个多项式函数来逼近未知函数的值。

该多项式经过离散数据点,并且是唯一的。

该方法简单易懂,但插值点越多,多项式次数越高,插值函数的精度也就越高。

(2)牛顿插值牛顿插值利用差商的概念,通过构造一个插值多项式来逼近未知函数的值。

与拉格朗日插值相比,牛顿插值的计算过程更加高效。

但同样要求插值点的选择要合理,否则可能出现插值函数不收敛的情况。

实验结果表明,这两种插值方法都能够很好地逼近未知函数的值。

插值点的选择对插值结果有很大的影响,过多或者过少的插值点都可能导致插值结果偏离真实函数的值。

三、数值积分数值积分是一种将定积分问题转化为数值求和的方法。

本实验我们将使用复合梯形求积法和复合辛普森求积法进行实验。

(1)复合梯形求积法复合梯形求积法将定积分区间等分为若干小区间,然后使用梯形公式对每个小区间进行近似求积,最后将结果相加得到整个定积分的近似值。

《数值分析》上机实验报告

《数值分析》上机实验报告

数值分析上机实验报告《数值分析》上机实验报告1.用Newton 法求方程 X 7-X 4+14=0在(0.1,1.9)中的近似根(初始近似值取为区间端点,迭代6次或误差小于0.00001)。

1.1 理论依据:设函数在有限区间[a ,b]上二阶导数存在,且满足条件{}αϕ上的惟一解在区间平方收敛于方程所生的迭代序列迭代过程由则对任意初始近似值达到的一个中使是其中上不变号在区间],[0)(3,2,1,0,)(')()(],,[x |))(),((|,|,)(||)(|.4;0)(.3],[)(.20)()(.110......b a x f x k x f x f x x x Newton b a b f a f mir b a c x f ab c f x f b a x f b f x f k k k k k k ==-==∈≤-≠>+令)9.1()9.1(0)8(4233642)(0)16(71127)(0)9.1(,0)1.0(,1428)(3225333647>⋅''<-=-=''<-=-='<>+-=f f x x x x x f x x x x x f f f x x x f故以1.9为起点⎪⎩⎪⎨⎧='-=+9.1)()(01x x f x f x x k k k k 如此一次一次的迭代,逼近x 的真实根。

当前后两个的差<=ε时,就认为求出了近似的根。

本程序用Newton 法求代数方程(最高次数不大于10)在(a,b )区间的根。

1.2 C语言程序原代码:#include<stdio.h>#include<math.h>main(){double x2,f,f1;double x1=1.9; //取初值为1.9do{x2=x1;f=pow(x2,7)-28*pow(x2,4)+14;f1=7*pow(x2,6)-4*28*pow(x2,3);x1=x2-f/f1;}while(fabs(x1-x2)>=0.00001||x1<0.1); //限制循环次数printf("计算结果:x=%f\n",x1);}1.3 运行结果:1.4 MATLAB上机程序function y=Newton(f,df,x0,eps,M)d=0;for k=1:Mif feval(df,x0)==0d=2;breakelsex1=x0-feval(f,x0)/feval(df,x0);ende=abs(x1-x0);x0=x1;if e<=eps&&abs(feval(f,x1))<=epsd=1;breakendendif d==1y=x1;elseif d==0y='迭代M次失败';elsey= '奇异'endfunction y=df(x)y=7*x^6-28*4*x^3;Endfunction y=f(x)y=x^7-28*x^4+14;End>> x0=1.9;>> eps=0.00001;>> M=100;>> x=Newton('f','df',x0,eps,M);>> vpa(x,7)1.5 问题讨论:1.使用此方法求方解,用误差来控制循环迭代次数,可以在误差允许的范围内得到比较理想的计算结果。

北理工数值分析大作业

北理工数值分析大作业

数值分析上机作业第 1 章1.1计算积分,n=9。

(要求计算结果具有6位有效数字)程序:n=1:19;I=zeros(1,19);I(19)=1/2*((exp(-1)/20)+(1/20));I(18)=1/2*((exp(-1)/19)+(1/19));for i=2:10I(19-i)=1/(20-i)*(1-I(20-i));endformat longdisp(I(1:19))结果截图及分析:在MATLAB中运行以上代码,得到结果如下图所示:当计算到数列的第10项时,所得的结果即为n=9时的准确积分值。

取6位有效数字可得.1.2分别将区间[-10.10]分为100,200,400等份,利用mesh或surf命令画出二元函数z=的三维图形。

程序:>> x = -10:0.1:10;y = -10:0.1:10;[X,Y] = meshgrid(x,y);Z = exp(-abs(X))+cos(X+Y)+1./(X.^2+Y.^2+1);subplot(2,2,1);mesh(X,Y,Z);title('步长0.1')>> x = -10:0.2:10;y = -10:0.2:10;[X,Y] = meshgrid(x,y);Z = exp(-abs(X))+cos(X+Y)+1./(X.^2+Y.^2+1);subplot(2,2,1);mesh(X,Y,Z);title('步长0.2')>>x = -10:0.05:10;y = -10:0.05:10;[X,Y] = meshgrid(x,y);Z = exp(-abs(X))+cos(X+Y)+1./(X.^2+Y.^2+1);subplot(2,2,1);mesh(X,Y,Z);title('步长0.05')结果截图及分析:由图可知,步长越小时,绘得的图形越精确。

数值计算方法丁丽娟课后习题答案

数值计算方法丁丽娟课后习题答案

数值计算方法丁丽娟课后习题答案【篇一:北京理工大学数值计算方法大作业数值实验1】)书p14/4分别将区间[?10,10]分为100,200,400等份,利用mesh或surf命令画出二元函数的三维图形。

z=|??|+ ??+?? +??++??【matlab求解】[x,y]=meshgrid(-10:0.1:10);a=exp(-abs(x));b=cos(x+y);c=1./(x.^2+y.^2+1);z=a+b+c;mesh(x,y,z);[x,y]=meshgrid(-10:0.05:10);a=exp(-abs(x));b=cos(x+y);c=1./(x.^2+y.^2+1);z=a+b+c;mesh(x,y,z);[x,y]=meshgrid(-10:0.025:10); a=exp(-abs(x));b=cos(x+y);c=1./(x.^2+y.^2+1);z=a+b+c;mesh(x,y,z);(二)书p7/1.3.2数值计算的稳定性(i)取= ??c语言程序—不稳定解 +=ln1.2,按公式=?? (n=1,2,…) #includestdio.h#includeconio.h#includemath.hvoid main(){float m=log(6.0)-log(5.0),n;int i;i=1;printf(y[0]=%-20f,m); while(i20){n=1/i-5*m;printf(y[%d]=%-20f,i,n);m=n;i++;if (i%3==0) printf(\n); }getch();}(ii) c语言程序—稳定解≈??[ ??+?? +?? ??+??按公式 =??(??)#includestdio.h#includeconio.h#includemath.hvoid main(){float m=(1/105.0+1/126.0)/2,n; k=n,n-1,n-2,…)(【篇二:北京理工大学数值计算方法大作业数值实验4】 p260/1考纽螺线的形状像钟表的发条,也称回旋曲线,它在直角坐标系中的参数方程为= ?????????????????? ?? ??????????= ?????????????? ??曲线关于原点对称,取a=1,参数s的变化范围[-5,5],容许误差限分别是,,和。

北理工数据结构实验报告4

北理工数据结构实验报告4

《数据结构与算法统计》实验报告——实验四学院:班级:学号:姓名:一、实验目的1、熟悉VC 环境,学会使用C 语言利用顺序表解决实际问题。

2、通过上机、编程调试,加强对线性表的理解和运用的能力。

3、锻炼动手编程,独立思考的能力。

二、实验内容从键盘输入10个数,编程实现分别用插入排序、交换排序、选择排序算法进行排序,输出排序后的序列。

三、程序设计1、概要设计为了实现排序的功能,需要将输入的数字放入线性表中,进行进一步的排序操作。

(1)抽象数据类型:ADT SqList{数据对象:D={|,1,2,,,0}i i a a ElemSet i n n ∈=≥数据关系:R1=11{,|,,1,2,,}i i i i a a a a D i n --<>∈= 基本操作:Input(Sqlist & L)操作结果:构造一个线性表L 。

output(SqList L)初始条件:线性表L 已存在。

操作结果:按顺序在屏幕上输出L 的数据元素。

BiInsertionsort (Sqlist L)初始条件:线性表L 已存在。

操作结果:对L 的数据元素进行折半插入排序。

QuickSort (Sqlist L)初始条件:线性表L 已存在。

操作结果:对L 的数据元素进行交换排序。

SelectSort(SqList &L)初始条件:线性表L 已存在。

操作结果:对L 的数据元素进行选择排序。

}ADT SqList⑵ 宏定义#define KeyType int#define MAXSIZE 10#define ok 1#define error 0⑶主程序流程由主程序首先调用Input(L)函数创建顺序表,先调用BiInsertionsort (L)函数进行折半插入排序,调用output(L)函数显示排序结果。

再调用QuickSort (L)函数进行交换排序,调用output (L)函数显示排序结果。

数值分析上机报告

数值分析上机报告

数力系级《数值分析》实验报告姓名学号:专业:学院:成绩:2010年 6 月25 日目录数力系级 (1)1.第二章上机练习 (4)实验一 (4)迭代公式(简单原理) (4)程序及实验结果 (6)结果分析 (11)实验二 (11)迭代公式(简单原理) (11)程序及实验结果 (12)结果分析 (14)实验三 (14)迭代公式(简单原理) (14)程序及实验结果 (14)结果分析 (15)2.第三章上机练习 (15)实验一 (15)迭代公式(简单原理) (16)程序及实验结果 (16)结果分析 (18)实验二 (18)迭代公式(简单原理) (18)程序及实验结果 (19)结果分析 (23)3.第四章上机练习 (23)实验一 (23)迭代公式(简单原理) (23)程序及实验结果 (24)结果分析 (26)实验二 (27)迭代公式(简单原理) (27)程序及实验结果 (28)结果分析 (29)实验三 (29)迭代公式(简单原理) (30)程序及实验结果 (30)结果分析 (31)4.第五章上机练习 (31)实验一 (31)迭代公式(简单原理) (31)程序及实验结果 (32)结果分析 (34)实验二 (34)迭代公式(简单原理) (35)程序及实验结果 (36)结果分析 (38)实验三(选作) (39)迭代公式(简单原理) (39)程序及实验结果 (40)结果分析 (41)5.第七章上机练习 (42)实验一 (42)迭代公式(简单原理) (42)程序及实验结果 (44)结果分析 (49)1.第二章上机练习实验一1、分别用不动点迭代与Newton 法求解方程x-x 10+2=0的正根与负根。

2、use the following method to find a solution in [,1] accurate to within 410- for0120200550600234=--+-x x x xa. Bisection method ;b. Newton method ; method ; d. method of False Position ; üller’s method 迭代公式(简单原理)MethodThe method calls for a repeated halving of subintervals of [a, b] and, at each step, locating the half containing the root of equation.Suppose f(x) is a continuous function defined on the interval [a, b], with f(a) and f(b) of opposite sign. set al = a and b1 = b, and let p1 be the midpoint of [a, b]; That is p1 =(a+b)/2, If f(p1) = 0, then set p = p1, p1是f(x)=0的实根p. If f(a1)f(p1)<0, then p ∈ (a1, p1), set a2=a1,b2=p1; otherwise p ∈ (p1,b1), set a2=p1,b2=b1. We then repeat the process to the interval [a2, b2]. The length of interval [ a k , b k ] is bk-ak=12--k a b IterationThe basic idea:Step1. Constructing the fixed-point equation: x=g (x ) ,let f (x )=0⇔ x=g (x ); g (x ) is called Iteration functionStep2. Setting up iteration scheme :p k+1= g (p k) (1)We choose an initial approximation p0 and generate the sequence ∞=o k k p }{ by (1), for each k ≥ 1.3. Newton methodSuppose that f ∈ 2C [a, b] ,let pk ∈ [a, b] be an approximation to root of the equation f(x)= the firstTaylor polynomial for f(x) about pk to approximate f(x):))((')()(k k k p x p f p f x f -+≈ We have 0)(=x f ⇔ ))((')(k k k p x p f p f -+0≈, Let f ’(pk ) ≠0 , Solving for pk+1 gives)(')(1k k k k p f p f p p -=+, which starts with an initial approximation P0 and generates the sequence ∞=o k k p }{ 4. Secant method如所求问题不便求导,用过点xk 的割线的斜率来代替切线的f ’( xk ), 即11)()('----=k k k k k x x x x f x f , Substituting it into Newton Method, we have )()()()(111--+---=k k k k k k k x x x f x f x f x x , This technique is called the Secant method .5. method of False Position (1) 提供两个初始值:p0, p1,满足f(p0) ·f(p1)<0 ;(2)利用割线法求出p2,; (3) 检查f(p2) ·f(p1),若f(p2) ·f(p1)<0 ,过点(p1,f(p1)) (p2,f(p2))做割线,求出p3; 否则若f(p2) ·f(p1) >0,过点(p0,f(p0))与(p2,f(p2))做割线,求出p3; 依此类推下去…试位法保证方程f(x)=0的根p ,总在相邻的迭代之中,即p ∈(pk,pk+1).6. M üller’s method程序及实验结果Newton methodfunction res=fnewton(func,dfunc,x,tol) x0=x;d=feval(func,x0)/feval(dfunc,x0);i=0;while abs(d)>toli=i+1;x1=x0-d;x0=x1;d=feval(func,x0)/feval(dfunc,x0); endres=[x0,i];function fx1=func(x)fx1=x-10^x+2;function fx2=dfunc(x)fx2=1-10^x*(log(10));实验结果Iterationfunction res=fixedpoint(func1,x,tol)x0=x;d=feval(func1,x0);x1=d;i=0;while abs(x1-x0)>tolx0=x1;i=i+1;d=feval(func1,x1); x1=d;endres=[x1,i];function fx1=func1(x) fx1=log10(x+2);实验结果将func1做更改function fx=func2(x) fx=10^(x)-2;实验结果:Bisection methodfunction res=bisection(func,xa,xb,tol)n=0;xc=0;fa=0;fc=0;while (xb-xa)>toln=n+1;fa=feval(func,xa);xc=(xa+xb)/2;fc=feval(func,xc);if fc*fa<0xb=xc;else xa=xc;endendres=[ n xa xb xc fc ];function fx1=func(x)fx1=600*(x^4)-550*(x^3)+200*(x^2)-20*x-1;实验结果. Newton methodfunction res=fnewton(func,dfunc,x,tol)x0=x;d=feval(func,x0)/feval(dfunc,x0);i=0;while abs(d)>toli=i+1;x1=x0-d;x0=x1;d=feval(func,x0)/feval(dfunc,x0);endres=[x0,i];function fx1=func(x)fx1=600*(x^4)-550*(x^3)+200*(x^2)-20*x-1;function fx2=dfunc(x)fx2=1-10^x*(log(10));实验结果methodfunction res=secant(func,x,y,tol)x0=x;x1=y;d=[feval(func,x1)]*(x1-x0)/(feval(func,x1)-feval(func,x0)); i=0;while abs(d)>toli=i+1;d=feval(func,x1)*(x1-x0)/(feval(func,x1)-feval(func,x0));x0=x1;x1=x1-d;endres=[x0,i];function fx1=func(x)fx1=600*(x^4)-550*(x^3)+200*(x^2)-20*x-1;实验结果method of False Positionfunction res=falseposition(func,x,y,tol)x0=x;x1=y;d=[feval(func,x1)]*(x1-x0)/(feval(func,x1)-feval(func,x0)); i=0;f=0;x2=0;while abs(d)>toli=i+1;f=feval(func,x1);d=feval(func,x1)*(x1-x0)/(feval(func,x1)-feval(func,x0)); x2=x1-d;if x2*f<0x0=x1;x1=x2;else x1=x2;endendres=[x0,i];function fx1=func(x)fx1=600*(x^4)-550*(x^3)+200*(x^2)-20*x-1;实验结果üller’s methodfunction res=muller(func, x, y, z, tol)%To find the approximation root of a polynomial s %by muller methodx0=x;x1=y;x2=z;h1=x1-x0;h2=x2-x1;m1=(feval(func,x1)-feval(func,x0))/h1;m2=(feval(func,x2)-feval(func,x1))/h2;d=(m2-m1)/(h2+h1);i=0;h=100;b=0;e=0;p=0;q=0;while abs(h)>toli=i+1;b=m2+h2*d;p=(b^2-4*d*feval(func,x2))^;if abs(b-p)<abs(b+p)e=b+p;else e=b-p;endh=(-2)*feval(func,x2)/e;q=x2+h;x0=x1;x1=x2;x2=q;h1=x1-x0;h2=x2-x1;m1=(feval(func,x1)-feval(func,x0))/h1;m2=(feval(func,x2)-feval(func,x1))/h2;d=(m2-m1)/(h2+h1);endres=[q,i];function fx1=func(x)fx1=600*(x^4)-550*(x^3)+200*(x^2)-20*x-1;实验结果结果分析1.经过实验结果比较我们可以看到,Newton 法只需选取不同的初值,便可求出他全部的解,即Newton 法对于他全部的解都是收敛的。

北理工数据结构实验报告

北理工数据结构实验报告

《数据结构与算法设计》实验报告——实验二学院:自动化学院班级:____学号:__姓名:_____一、实验目的1、熟悉VC 环境,学习使用C 语言实现栈的存储结构。

2、通过编程、上机调试,进一步理解栈的基本概念。

3、锻炼动手编程,独立思考的能力。

二、实验内容实现简单计算器的功能,请按照四则运算加、减、乘、除、幂(^)和括号的优先关系和惯例,编写计算器程序。

要求支持运算符:+、-、*、/、%、()和=:① 从键盘输入一个完整的表达式,以回车作为表达式输入结束的标志;② 输入表达式中的数值均为大于等于零的整数,如果中间计算过程中出现小数也只取整进行计算。

例如,输入:4+2*5=输出:14 输入:(4+2)*(2-10)=输出:-48三、程序设计 1、概要设计为实现上述程序功能,应使用两个栈,分别寄存操作数与运算符。

为此,需要栈的抽象数据结构。

(1)、栈的抽象数据类型定义为: ADT Stack{数据对象:D={|,1,2,,,0}i i a a ElemSet i n n ∈=≥K 数据关系:R1=11{,|,,2,,}i i i i a a a a D i n --<>∈=K约定n a端为栈顶,1a端为栈底。

基本操作:InitStack(&S)操作结果:创建一个空栈S。

GetTop(S,&e)初始条件:栈S已存在且非空。

操作结果:用e返回S的栈顶元素。

Push(&S,e)初始条件:栈S已存在。

操作结果:插入元素e为新的栈顶元素。

Pop(&S,&e)初始条件:栈S已存在且非空。

操作结果:删除S的栈顶元素,并用e返回其值。

In(m,a[])操作结果:若m是运算符,返回TRUE。

Precede(m, n)初始条件:m,n为运算符。

操作结果:若m优先级大于n,返回>,反之亦然。

Operation(a, theta,b)初始条件:a,b为整数,theta为运算符。

数值计算方法上机实验报告

数值计算方法上机实验报告
列选主元是当高斯消元到第 步时,从 列的 以下(包括 )的各元素中选出绝对值最大的,然后通过行交换将其交换到 的位置上。交换系数矩阵中的两行(包括常数项),只相当于两个方程的位置交换了,因此,列选主元不影响求解的结果。
(2)计算机程序框图:(见下页)
(3)输入变量、输出变量说明:
输入变量: 系数矩阵元素, 常向量元素
称为改进欧拉公式。
(2)计算机程序框图:(见下页)
(3)输入变量、输出变量说明:
输入变量: 处置点, 区间长度, 计算次数
输出变量: 初值问题的数值解法结果
(4)具体算例及求解结果:
例:求解初值问题(课本P242例7-2)
求解结果:
0.1
1.095909
1.095909
0.6
1.485956
1.485955
输出变量: 解向量元素
(4)具体算例及求解结果:
例:用列选主元法求解下列线性方程组(课本P65例3-3)
求解结果:
3、 分解法求解线性方程组
(1)算法原理:
求解线性方程组 时,当对 进行 分解,则等价于求解 ,这时可归结为利用递推计算相继求解两个三角形(系数矩阵为三角矩阵)方程组,用顺代,由
求出 ,再利用回带,由 求出 。
例:根据给定的函数 的实例数据表,试用最小二乘法求二次拟合多项式。(课本P186习题3)
求解结果:
6、变步长梯形求积分
(1)算法原理:
设将积分区间 分成 等份,即有 个子区间,分点 ,其中步长
对于子区间 ,利用体型求其积分近似值
对于子区间 有
对于子区间 再取其中点
作新节点,此时区间数增加了一倍为 ,
0.2
1.184097

北理工_数据分析_实验5_数据拟合

北理工_数据分析_实验5_数据拟合

北理工_数据分析_实验5_数据拟合实验5:数据拟合一、实验目的本实验旨在通过数据拟合方法,对给定的实验数据进行拟合分析,掌握数据拟合的基本原理和方法。

二、实验原理数据拟合是一种通过选择合适的数学模型,将实验数据与模型进行匹配,从而得到最佳拟合曲线或者函数的方法。

常用的数据拟合方法有线性回归、多项式拟合、指数拟合等。

三、实验步骤1. 导入实验数据根据实验要求,导入实验所需的数据。

假设我们有一组实验数据,包含自变量x和因变量y的取值。

2. 确定拟合函数根据实验数据的特点和要求,选择合适的拟合函数。

在本实验中,我们选择了多项式函数作为拟合函数,形式如下:y = a0 + a1*x + a2*x^2 + ... + an*x^n其中,a0, a1, a2, ..., an为待确定的系数,n为多项式的次数。

3. 拟合曲线的计算利用最小二乘法求解待确定系数的值,使得拟合曲线与实验数据的残差平方和最小。

通过数值计算得到最佳拟合曲线的系数。

4. 绘制拟合曲线利用得到的拟合曲线的系数,绘制拟合曲线。

将拟合曲线与实验数据一同绘制在同一张图上,以直观地观察拟合效果。

5. 拟合结果的评估对拟合结果进行评估,可以计算拟合曲线与实验数据的拟合度,如相关系数、残差平方和等指标,以评估拟合效果的好坏。

四、实验数据示例假设我们有一组实验数据,包含自变量x和因变量y的取值如下:x: [1, 2, 3, 4, 5]y: [2.1, 4.5, 7.2, 9.8, 12.5]我们选择二次多项式函数进行拟合,即 n=2。

根据最小二乘法,我们可以得到拟合曲线的系数为:a0 = 0.2a1 = 1.3a2 = 0.9利用上述系数,我们可以得到拟合曲线的表达式为:y = 0.2 + 1.3*x + 0.9*x^2将拟合曲线和实验数据绘制在同一张图上,可以观察到拟合曲线与实验数据的拟合效果。

五、实验结果评估为了评估拟合结果的好坏,我们可以计算拟合曲线与实验数据的相关系数和残差平方和。

数值计算方法丁丽娟课后习题答案

数值计算方法丁丽娟课后习题答案

数值计算方法丁丽娟课后习题答案【篇一:北京理工大学数值计算方法大作业数值实验1】)书p14/4分别将区间[?10,10]分为100,200,400等份,利用mesh或surf命令画出二元函数的三维图形。

z=|??|+ ??+?? +??++??【matlab求解】[x,y]=meshgrid(-10:0.1:10);a=exp(-abs(x));b=cos(x+y);c=1./(x.^2+y.^2+1);z=a+b+c;mesh(x,y,z);[x,y]=meshgrid(-10:0.05:10);a=exp(-abs(x));b=cos(x+y);c=1./(x.^2+y.^2+1);z=a+b+c;mesh(x,y,z);[x,y]=meshgrid(-10:0.025:10); a=exp(-abs(x));b=cos(x+y);c=1./(x.^2+y.^2+1);z=a+b+c;mesh(x,y,z);(二)书p7/1.3.2数值计算的稳定性(i)取= ??c语言程序—不稳定解 +=ln1.2,按公式=?? (n=1,2,…) #includestdio.h#includeconio.h#includemath.hvoid main(){float m=log(6.0)-log(5.0),n;int i;i=1;printf(y[0]=%-20f,m); while(i20){n=1/i-5*m;printf(y[%d]=%-20f,i,n);m=n;i++;if (i%3==0) printf(\n); }getch();}(ii) c语言程序—稳定解≈??[ ??+?? +?? ??+??按公式 =??(??)#includestdio.h#includeconio.h#includemath.hvoid main(){float m=(1/105.0+1/126.0)/2,n; k=n,n-1,n-2,…)(【篇二:北京理工大学数值计算方法大作业数值实验4】 p260/1考纽螺线的形状像钟表的发条,也称回旋曲线,它在直角坐标系中的参数方程为= ?????????????????? ?? ??????????= ?????????????? ??曲线关于原点对称,取a=1,参数s的变化范围[-5,5],容许误差限分别是,,和。

(完整版)哈工大-数值分析上机实验报告

(完整版)哈工大-数值分析上机实验报告

(完整版)哈⼯⼤-数值分析上机实验报告实验报告⼀题⽬:⾮线性⽅程求解摘要:⾮线性⽅程的解析解通常很难给出,因此线性⽅程的数值解法就尤为重要。

本实验采⽤两种常见的求解⽅法⼆分法和Newton法及改进的Newton法。

前⾔:(⽬的和意义)掌握⼆分法与Newton法的基本原理和应⽤。

数学原理:对于⼀个⾮线性⽅程的数值解法很多。

在此介绍两种最常见的⽅法:⼆分法和Newton法。

对于⼆分法,其数学实质就是说对于给定的待求解的⽅程f(x),其在[a,b]上连续,f(a)f(b)<0,且f(x)在[a,b]内仅有⼀个实根x*,取区间中点c,若,则c恰为其根,否则根据f(a)f(c)<0是否成⽴判断根在区间[a,c]和[c,b]中的哪⼀个,从⽽得出新区间,仍称为[a,b]。

重复运⾏计算,直⾄满⾜精度为⽌。

这就是⼆分法的计算思想。

Newton法通常预先要给出⼀个猜测初值x0,然后根据其迭代公式产⽣逼近解x*的迭代数列{x k},这就是Newton法的思想。

当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。

另外,若将该迭代公式改进为其中r为要求的⽅程的根的重数,这就是改进的Newton法,当求解已知重数的⽅程的根时,在同种条件下其收敛速度要⽐Newton法快的多。

程序设计:本实验采⽤Matlab的M⽂件编写。

其中待求解的⽅程写成function的⽅式,如下function y=f(x);y=-x*x-sin(x);写成如上形式即可,下⾯给出主程序。

⼆分法源程序:clear%%%给定求解区间b=1.5;a=0;%%%误差R=1;k=0;%迭代次数初值while (R>5e-6) ;c=(a+b)/2;if f12(a)*f12(c)>0;a=c;elseb=c;endR=b-a;%求出误差k=k+1;endx=c%给出解Newton法及改进的Newton法源程序:clear%%%% 输⼊函数f=input('请输⼊需要求解函数>>','s')%%%求解f(x)的导数df=diff(f);%%%改进常数或重根数miu=2;%%%初始值x0x0=input('input initial value x0>>');k=0;%迭代次数max=100;%最⼤迭代次数R=eval(subs(f,'x0','x'));%求解f(x0),以确定初值x0时否就是解while (abs(R)>1e-8)x1=x0-miu*eval(subs(f,'x0','x'))/eval(subs(df,'x0','x'));R=x1-x0;x0=x1;k=k+1;if (eval(subs(f,'x0','x'))<1e-10);breakendif k>max;%如果迭代次数⼤于给定值,认为迭代不收敛,重新输⼊初值ss=input('maybe result is error,choose a new x0,y/n?>>','s');if strcmp(ss,'y')x0=input('input initial value x0>>');k=0;elsebreakendendendk;%给出迭代次数x=x0;%给出解结果分析和讨论:1.⽤⼆分法计算⽅程在[1,2]内的根。

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

《数值分析》实验报告第二章:解线性方程组的直接方法2、试用MATLAB软件编程实现追赶法求解三对角方程组的算法,并考虑梯形电阻电路问题,电路如下:其中电路中的各个电流{1i ,2i ,…,8i }须满足下列线性方程组:R V i i =- 22 210 252321=-+-i i i 0 252 432=-+-i i i 0 252 543=-+-i i i 0 252 654=-+-i i i 0 252 765=-+-i i i 0 252 876=-+-i i i 052 87=+-i i设V 220=V ,Ω=27R ,运用求各段电路的电流量。

解:1481.827220≈=R V 上述方程组可用矩阵表示为:⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--------------00000001481.8522520000002520000002520000002520000002520000002520000002287654321i i i i i i i iMatLab 程序: %赋初值;a=[0 -2 -2 -2 -2 -2 -2 -2]; b=[2 5 5 5 5 5 5 5];c=[-2 -2 -2 -2 -2 -2 -2]; d=[8.1481 0 0 0 0 0 0 0]; %三对角方程的追赶法for i=2:8 %“追”的过程; a(i)=a(i)/b(i-1);b(i)=b(i)-c(i-1)*a(i); d(i)=d(i)-a(i)*d(i-1); end;d(8)=d(8)/b(8); %“赶”的过程; for i=7:-1:1d(i)=(d(i)-c(i)*d(i+1))/b(i); end; x=d; x程序运行结果:x =8.1477 4.0737 2.0365 1.0175 0.5073 0.2506 0.1194 0.0477即 (A) 0477.01194.02506.05073.00175.10365.20737.41477.887654321⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=i i i i i i i i I 。

1、试分别用(1)Jacobi 迭代法;(2)Gauss -Seidel 迭代法;(3)共轭梯度法解线性方程组⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡--=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡--------1217142712151534112323537123219143211054321x x x x x迭代初始向量取)0(x =(0,0,0,0,0T )。

解:实验步骤及程序、结果取要求达到的精度810-=ε。

以下程序中的k 均表示迭代次数。

(1)Jacobi 迭代法MatLab 源程序。

format longA=[10,1,2,3,4;1,9,-1,2,-3;2,-1,7,3,-5;3,2,3,12,-1;4,-3,-5,-1,15];b=[12,-27,14,-17,12]; x0=[0,0,0,0,0];x1=x0; Nmax=1000; k=0;for i=1:5sum=0;for j=1:5if j~=isum=sum+A(i,j)*x0(j);end; end;x1(i)=(b(i)-sum)/A(i,i); end;while abs(norm(x1-x0,inf))>1e -8 & k<Nmaxx0=x1; for i=1:5 sum=0;for j=1:5 if j~=isum=sum+A(i,j)*x0(j);end; end;x1(i)=(b(i)-sum)/A(i,i); end; k=k+1; end;x1 k输出结果: x1 =1.000000024731627 -2.000000022663167 2.999999958446139 -1.999999993335823 0.999999970325168k =88迭代了88次。

(2)Gauss-Seidel迭代法MatLab源程序。

A=[10,1,2,3,4;1,9,-1,2,-3;2,-1,7,3,-5;3,2,3,12,-1;4,-3,-5,-1,15];b=[12,-27,14,-17,12];x0=[0,0,0,0,0];x1=x0;Nmax=1000;k=1;sum=0;for j=2:5sum=sum+A(1,j)*x0(j);end;x1(1)=(b(1)-sum)/A(1,1);for i=2:4sum=0;for j=1:(i-1)sum=sum+A(i,j)*x0(j);end;x1(i)=b(i)-sum;sum=0;for j=(i+1):5sum=sum+A(i,j)*x0(j);end;x1(i)=(x1(i)-sum)/A(i,i);end;sum=0;for j=1:4sum=sum+A(5,j)*x0(j);end;x1(5)=(b(5)-sum)/A(5,5);while abs(norm(x1-x0,inf))>1e-8 & k<Nmaxx0=x1;sum=0;for j=2:5sum=sum+A(1,j)*x0(j);end;x1(1)=(b(1)-sum)/A(1,1);for i=2:4sum=0;for j=1:(i-1)sum=sum+A(i,j)*x0(j);end;x1(i)=b(i)-sum;sum=0;for j=(i+1):5sum=sum+A(i,j)*x0(j); end;x1(i)=(x1(i)-sum)/A(i,i);end; sum=0;for j=1:4sum=sum+A(5,j)*x0(j); end;x1(5)=(b(5)-sum)/A(5,5); k=k+1;end; x1 k输出结果: x1 =1.000000024731627 -2.000000022663166 2.999999958446139-1.999999993335823 0.999999970325168k =89迭代了89次。

第四章 矩阵特征值与特征向量的计算1、已知矩阵⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-----291283630112147168336364230366308466190 试用幂法求按模最大的特征值与特征向量; 试用反幂法求按模最小的特征值与特征向量;解:(1)幂法程序:A=[190,66,-84,30;66,303,42,-36;336,-168,147,-112;30,-36,28,291];x=[0;0;0;1];deg=1e-5;N=100;k=0; eigenvalue0=0;[xr,r]=max(abs(x));a=xr;y=x/a;x=A*y;eigenvalue=xr;while abs(eigenvalue-eigenvalue0)>=deg & k<Nk=k+1;eigenvalue0=eigenvalue;[xr,r]=max(abs(x));a=xr;y=x/a;x=A*y;eigenvalue=xr;end;eigenvaluexk输出结果:eigenvalue =3.430000571059348e+02x =-1.143330070136651e+02-3.430000489479517e+020.000000000000058e+021.715010523810607e+02k =87(2)反幂法A=[190,66,-84,30;66,303,42,-36;336,-168,147,-112;30,-36,28,291]; B=inv(A);x=[0;0;0;1];deg=1e-5;N=1000;k=0; eigenvalue0=0;[xr,r]=max(abs(x));a=xr;y=x/a;x=B*y;eigenvalue=xr;while abs(eigenvalue-eigenvalue0)>=deg & k<Nk=k+1;eigenvalue0=eigenvalue;[xr,r]=max(abs(x));a=xr;y=x/a;x=B*y;eigenvalue=xr;end;eigenvaluexk输出结果:eigenvalue =0.002637740424370x =-0.0017042945280000.0008521724621230.0089222842784510.000568148573659k =68第五章插值法3、已知直升机旋转机翼外形轮廓线上某些型值点的数据:的机翼外形曲线图。

解:了解三次样条插值方法的使用。

程序如下:x=[-520,-280,-156.6,-78,-39.62,-3.1,0,3.1,39.62,78,156.6,280,520]'; y=[0,-30,-36,-35,-28.44,-9.4,0,9.4,28.44,35,36,30,0]';%求解Mfor i=1:12h(i)=x(i+1)-x(i);endfor i=2:12a(i)=h(i-1)/(h(i-1)+h(i));b(i)=1-a(i);c(i)=6*((y(i+1)-y(i))/h(i)-(y(i)-y(i-1))/h(i-1))/(h(i-1)+h(i)); enda(13)=h(12)/(h(1)+h(12));b(13)=h(1)/(h(1)+h(12));c(13)=6/(h(1)+h(12))*((y(2)-y(1))/h(1)-(y(13)-y(12))/h(12));A(1,1)=2;A(1,2)=b(2);A(1,12)=a(2);A(12,11)=a(13);A(12,12)=2;A(12,1)=b(13);for i=2:11A(i,i)=2;A(i,i+1)=b(i+1);A(i,i-1)=a(i+1);endC=c(2:13);C=C';m=A\C;M(1)=m(12);M(2:13)=m;xx=-520:1040/120:520;for i=1:61for j=1:12if x(j)<=xx(i) && xx(i)<x(j+1)break;endendyy(i)=M(j+1)*(xx(i)-x(j))^3/(6*h(j))-M(j)*(xx(i)-x(j+1))^3/(6*h(j))+(y(j+1)-M(j+1)* h(j)^2/6)*(xx(i)-x(j))/h(j)-(y(j)-M(j)*h(j)^2/6)*(xx(i)-x(j+1))/h(j);end;for i=62:121yy(i)=-yy(122-i);end;for i=1:60xx(i)=-xx(i);end;plot(xx,yy, 'r');hold on;for i=1:6x(i)=-x(i);endplot(x,y,'+');title('机翼外形');输出结果:第六章函数逼近1、钢包问题。

相关文档
最新文档