数值计算报告讲解

上传人:我** 文档编号:114385519 上传时间:2019-11-11 格式:DOC 页数:13 大小:858.46KB
返回 下载 相关 举报
数值计算报告讲解_第1页
第1页 / 共13页
数值计算报告讲解_第2页
第2页 / 共13页
数值计算报告讲解_第3页
第3页 / 共13页
数值计算报告讲解_第4页
第4页 / 共13页
数值计算报告讲解_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《数值计算报告讲解》由会员分享,可在线阅读,更多相关《数值计算报告讲解(13页珍藏版)》请在金锄头文库上搜索。

1、 数值计算题目名称 数值计算 学 院 机电工程学院 专业班级 13微电子制造2班 学 号 3113000453 姓 名 肖铠斌 2016-12-30摘 要 学习数值计算引论,应用MATLAB编写Gauss 列主元消元法求解线性方程组、多项式插值、Gauss 积分方法、Euler 方法求常微分方程初值问题、Newton 迭代法求非线性方程的程序。 【关键词】:Gauss 列主元消元法求解线性方程组、多项式插值、Gauss 积分方法、Euler 方法求常微分方程初值问题、Newton 迭代法求非线性方程目录 1 Gauss 列主元消元法求解线性方程组11.1问题描述11.2计算程序11.3算例22

2、 Lagrange多项式插值32.1问题描述32.2计算程序32.3算例33 Gauss 积分方法43.1.问题描述43.2计算程序43.3算例44 Euler 方法求常微分方程初值问题54.1.问题描述54.2计算程序44.3算例45Newton 迭代法求非线性方程65.1.问题描述65.2计算程序65.3算例7参考文献8一 、编写 Gauss 列主元消元法求解线性方程组的程序,要求附有算例。 1、问题描述:计算机中运算的时候常会碰到两个问题。 1)一旦遇到某个主元等于0,消元过程便无法进行下去。 2)在长期使用中还发现,即使消元过程能进行下去,但是当某个主元的绝对值很小时,求解出的结果与真

3、实结果相差甚远。 2、程序: % 输出的量:系数矩阵和增广矩阵的秩RA,RB, 方程组中未知量的个数n和有关方程组解及其解X的信息.function RA,RB,n,X=gaus(A,b) B=A b; n=length(b); RA=rank(A); RB=rank(B);zhica=RB-RA; %求矩阵A、B的秩,并作比较if zhica0,disp(RA=RB,此方程组无解.)returnendif RA=RB if RA=n disp(RA=RB=n,此方程组有唯一解.) X=zeros(n,1); C=zeros(1,n+1); %生成全零矩阵 for p= 1:n-1 Y,j=m

4、ax(abs(B(p:n,p); %返回行向量Y和j,y向量记录abs(B(p:n,p) 的每列的最大值,j向量记录每列最大值的行号C=B(p,:); %把矩阵B中第p行所有列的值全都赋给矩阵CB(p,:)= B(j+p-1,:); B(j+p-1,:)=C; %交换A,b第jk与第k 行元素 for k=p+1:n m= B(k,p)/B(p,p); %消元计算 B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1); endend b=B(1:n,n+1); A=B(1:n,1:n); X(n)=b(n)/A(n,n); for q=n-1:-1:1 %从n-1循环到1

5、X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)/A(q,q); %回代计算 endelse disp(RA=RB A=5 2 1;2 8 -3;1 -3 -6; b=8;21;1; RA,RB,n,X =gaus (A,b)RA=RB=n,此方程组有唯一解.RA = 3RB = 3n = 3X = 1 2-1二 编写多项式插值的程序,要求附有算例 1、问题描述:Lagrange差值法满足插值条件的、次数不超过n的多项式是存在而且是唯一的。 2、程序:function yy=lagrange(x,y,x0) /定义拉格朗日差值函数 xlen=length(x); /X向量的

6、维数 ylen=length(y); /y向量的维数if xlen=ylen warning(The length of x and y is not equal); /提示x.y维数不等endn=length(x0); for i=1:n /循环。从1到n z=x0(i); s=0.0; for k=1:xlen p=1.0; for j=1:ylen if j=k p=p*(z-x(j)/(x(k)-x(j); end end s=p*y(k)+s; end yy(i)=s; end 3、算例:已知数据如下表,试用lagrange差值多项式求x分别为0.5626;0.5635;0.5645

7、时函数的近似值。0.561600.562800.564010.565210.827410.826590.825770.81495解:在命令窗口输入执行命令,可得结果: x=0.56160;0.56280;0.56401;0.56521;y=0.82741;0.82659;0.82577;0.81495;x0=0.5626;0.5635;0.5645;y0=lagrange(x,y,x0)y0 = 0.8265 0.8268 0.8231 plot(x,y,o,x0,y0,k)得到图形三 编写 Gauss 积分方法的程序,要求附有算例。 1、问题描述:被积分函数f(,)一般是很复杂的,即使能够得

8、出它的显式,其积分也是很繁的。因此,一般用数值积分来代替函数的定积分。 2、程序:% f:积分表达式,可以是函数句柄、inline函数、匿名函数、字符串表达式,但是必须可以接受矢量输入% a,b:积分上下限,注意积分区间太大会降低精度,此时建议使用复化求积公式,默认-1 1% n:积分阶数,可以任意正整数,但是不建议设置过大,大不一定能得到更好的精度,默认7% tol:积分精度,默认1e-6% ql:积分结果% Ak:求积系数% xk:求积节点,满足ql=sum(Ak.*fun(xk)function ql,Ak,xk=guass(f,a,b,n,tol)if nargin=1 % 输入参数有

9、效性检验 a=-1;b=1;n=7;tol=1e-8;elseif nargin=3 n=7;tol=1e-8;elseif nargin=4 tol=1e-8;elseif nargin=2|nargin5 error(The Number of Input Arguments Is Wrong!);endsyms x % 计算求积节点p=sym2poly(diff(x2-1)(n+1),n+1)/(2n*factorial(n);tk=roots(p); % 求积节点Ak=zeros(n+1,1); % 计算求积系数for i=1:n+1 xkt=tk; xkt(i)=; pn=poly(

10、xkt); fp=(x)polyval(pn,x)/polyval(pn,tk(i); Ak(i)=quadl(fp,-1,1,tol); % 求积系数endxk=(b-a)/2*tk+(b+a)/2; % 积分变量代换,将a,b变换到-1,1f=fcnchk(f,vectorize); % 检验积分函数fun有效性fx=f(xk)*(b-a)/2; % 计算变量代换之后积分函数的值ql=sum(Ak.*fx); % 计算积分值 3、算例,求的值。编写函数文件:Gaussf.mfunction f=gaussf(x)f=cos(x);End在命令窗口输入: ql,Ak,xk=guass(gau

11、ssf, 0, 1, 7, 1e-6)ql = 0.8415Ak = 0.1012 0.2224 0.1012 0.2224 0.3137 0.3137 0.3627 0.3627xk = 0.0199 0.1017 0.9801 0.8983 0.2372 0.7628 0.4083 0.5917四 编写 Euler 方法求常微分方程初值问题的程序,要求附有算例。 1、问题描述:欧拉法的特点:单步,显式,一阶求导精度,截断误差贰阶 2、程序:欧拉公式:Euler.mfunction xx,yy=euler(f,a,b,y0,h) x=a:h:bn=length(x);y=zeros(1,n);y(1)=y0;for i=1:n-1; y(i+1)=y(i)+h*feval(f,x(i),y(i);end xx=x;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号