Matlab数值计算

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

1.线性代数方程组的数值解法
【例A1.1】求解方程组 Ax b
1 2 3 这里 A 4 5 6 , b 7 8 0 37 85 . 61
2015-3-27
4
线性代数方程组的数值解法 (1) 在键盘上输入下列内容 A = [1,2,3; 4,5,6; 7,8,0]%节尾没有分号; b = [37;85;61]; %节尾有分号; x=A\b %节尾没有分号; (2) 每按一次【Enter】键,指令就被马上 执行(逐行执行)。由于第二条指令节 尾有分号,其结果不被显示出来,其它 两条指令的结果被马上显示出来。最后 在指令窗中将显示以下结果: 2015-3-27 5
2015-3-27 26
2015-3-27
27
5.数值积分与数值微分
【例A.5.1】计算椭圆积分,控制精度10-6。
E (0.8, 2 )
2 0
1 0.8sin t d t
2
解:程序如下: fun = inline('sqrt(1-0.8*sin(x).^2)' ,'x'); [v1, fcn1] = quad(fun, 0, 2*pi); [v2, fcn2] = quadl(fun, 0, 2*pi);
2015-3-27 33
我们以ode45为例介绍解算子使用方法.
• 函数ODE45 用于求解非刚性系统.其 调用格式为:
[T,Y] = ODE45('F',TSPAN,Y0), [T,Y] = ODE45('F',TSPAN,Y0,OPTIONS), [T,Y]=ODE45('F',TSPAN,Y0,OPTIONS,P1,P2,...)
线性代数方程组的数值解法
A= 1 4 7
x=
2 5 8 3 6 0 3.0000 5.0000 8.0000
▲BACK
2015-3-27
6
2.多项式和矩阵的特征系统
• 2.1多项式
MATLAB约定:用系数行向量 P=[a0,a1,…,an-1,an] 来表示多项式
P( x) a0 x n a1 x n1 an1 x an
2015-3-27 2
MATLAB在数值分析中的应用举例
• 数值积分与数值微分
– 解算子quad, quadl。 – 计算椭圆积分
常微分方程(组)数值解
– 解初值问题的解算子 ODE23,ODE45,ODE113
• 非线性方程和方程组的数值解法
– 解算子FZERO,FSOLVE
2015-3-27 3
2015-3-27 19
曲线拟合与函数的数值逼近(c1)
[P,Pexpr]=plegendre(7,1); format rat celldisp(P); celldisp(Pexpr); format short g
2015-3-27
20
曲线拟合与函数的数值逼近(c2)
2015-3-27
21
曲线拟合与函数的数值逼近(c3)
3 P ( x ) 2 x x 1 如 P = [2 0 1 1] 代表
2015-3-27
7
多项式的四则运算 多项式的加减法与一维数组的加减法类 似,只不过要注意多项式的阶数与行向 量元素个数的关系。
2015-3-27
8
乘除法:MATLAB提供了卷积和解卷函数
• 乘法:p = conv(p1,p2),它表示多项式p 为多项式p1与多项式p2的积。 • 除法(带余除法): [q, r] = deconv(p1, p2),它表示多项式p1 被p2除的商为多项式 q而余项是多项式r, 即满足p1 = q*p2+r。
MATLAB与数值计算
刘东毅 数学与应用数学系 天津大学理学院
2015-3-27 1
MATLAB在数值分析中的应用举例
• 线性代数方程组的数值解法
– Gauss消取法解方程组;
• 多项式和矩阵的特征系统(eig) • 函数的插值
– Lagrange多项式插值
• 曲线拟合与函数的数值逼近
– 构造Legendre正交多项式
▲BACK
2015-3-27 29
6.常微分方程(组)数值解
MATLAB求解的一阶常微分方程(组) 应具有形式(初值问题):
dy1 f1 (x,y1 , y 2 ,, y m ) dx dy 2 f 2 (x,y1 , y 2 ,, y m ) dx dy m f m (x,y1 , y 2 ,, y m ) dx
【例A.4.1】编写MATLAB程序,构造 [1,1] 上的Legendre正交多项式。 解:本题的目的是为用正交多项式进行函 数的最佳平方逼近提供正交多项式子函数。 同时进一步增加对正交多项式的感性认识。 该程序利用两个 cell 数组:正交多项式的 行向量形式( P)和正交多项式的字符串 形式( Pexpr )来存放多项式,程序如下:
2015-3-27 11
【例A.2.2】多项式求根及其逆问题
R=[1,-2, -0.3+0.5*i,-0.3-0.5*i]; P=poly(R) PR=real(P) PPR=poly2str(PR,'x') Rr=roots(P)
2015-3-27
12
结果依次为
P = 1.0000 1.6000 -1.0600 -0.8600 -0.6800 PR = 1.0000 1.6000 -1.0600 -0.8600 -0.6800 PPR=x^4+1.6 x^3 - 1.06 x^2 - 0.86 x - 0.68 Rr = -2.0000 1.0000 -0.3000 + 0.5000i -0.3000 - 0.5000i
2015-3-27 25
%绘图,折线图,准备数据点对(x,y)
xi=0:0.01:1; yi=polyval(pp,xi);%计算多项式在xi处的值 %调用绘图函数:原始数据,二阶曲线 plot(x,y,'o',xi,yi); %图形修饰 legend(‘原始数据’,‘二阶曲线’); title('多项式拟合') axis equal; axis equal; xlabel('x');ylabel('y=p(x)');
2015-3-27 31
6.常微分方程(组)数值解
MATLAB为解决常微分方程初值问题 提供了一套系统的数值解法程序,它包括解 算子(Solver)、ODE文件和算法参数选项 options . 例如ODE45 ,ODE23 , ODE15S, ODE113,ODE23S,ODE23T和ODESET 等,其它函数的使用请参见在线帮助或 MATLAB使用手册。
2015-3-27 15
矩阵的特征系统
D=
-3.5995 0 0 0 4.7296 0 0 0 8.8699 D 的对角线上的元素为对应的特征值,即 对应V的每一个列向量。 P =1.0000 -10.0000 -7.0000 151.0000
▲BACK
2015-3-27 16
3.函数的插值
• Lagrange多项式插值 【例A.3.1】已知 y f ( x) 的三个数据点 ( 1,4) ,(0,1) 和 (1,2) 。求二次 Lagrange插值函数L2。
2015-3-27
22
曲线拟合与函数的数值逼近(c4)
可得出这八个正交多项式为:ep{1} = 1; ep{2} = x;ep{3} = 1.5 x^2 - 0.5; ep{4} = 2.5 x^3 - 1.5 x;ep{5} = 4.375 x^4 - 3.75 x^2 + 0.375; ep{6} = 7.875 x^5 - 8.75 x^3 + 1.875 x; ep{7} = 14.4375 x^6 - 19.6875 x^4 + 6.5625 x^2 0.3125; ep{8} = 26.8125 x^7 - 43.3125 x^5 + 19.6875 x^3 2.1875 x ▲BACK
2015-3-27 28
数值积分与数值微分(c1)
quad 和quadl的精度控制输入宗量在第四个位 置,却省值为10-6。故在上述程序中 “… = quad(fun, 0, 2*pi)”等价于 “… = quad(fun, 0, 2*pi, 1e-6)”。 结果为: v1≈4.7139593,被积函数估值次数fcn1 = 81; v2≈4.7139597,Baidu Nhomakorabea积函数估值次数fcn2 = 168。
2015-3-27
17
函数的插值(c1)
解:编写计算L2的程序: clear all x=[-1,0,1]; y=[4,-1,2]; [p,pexpr]=lagrpoly(x,y); 在指令窗输入pexpr,可得到L2的表达 式:4 x^2 – 1 x – 1。
▲BACK
2015-3-27 18
4.曲线拟合与函数的数值逼近
2015-3-27 32
6.常微分方程(组)数值解
• 解算子是指MATLAB提供的各种常微分 方程初值问题数值解法程序,如ode45和 ode15s等; • ODE文件是指被解算子调用的,由用户 自己编写的,计算导数的函数f(t,y)的M函数文件(f(t,y) 也称为ODE函数); • Options 选项是可用odeset指令来设置一 些可选的参数值.
2015-3-27 10
2.2 多项式求根及其逆问题
n次多项式具有n个根(实根或成对的 共轭复根)。MATLAB提供的roots函数用 于求多项式的全部根,其调用格式为: x=roots(P) 其中P为多项式的系数向量,根赋给向量x, 即x(1),x(2),…,x(n)分别代表多项式的n个根。 反之,P = poly( x ) 函数poly生成以向量x为根的多项式.
2015-3-27 13
2.3 矩阵的特征系统
【例A.2.3】计算的矩阵A全部特征值, 特征向量与特征多项式。
3 4 3 A 4 6 3 3 1 3
2015-3-27 14
矩阵的特征系统
解:在指令窗输入: A=[3,-4,3;-4,6,3;3,3,1] [V,D]=eig(A) P = poly(A) 便可得到结果: V = -0.5818 0.6312 0.5130 -0.4534 0.2719 -0.8488 0.6752 0.7264 -0.1280 每一列为A的一个特征向量。
2015-3-27
y1 ( a ) s1 , y 2 ( a ) s2 , , y m ( a ) sm , x [a , b]
30
或写成向量形式:
dY F ( x, Y ) dx Y ( a ) Y0
y1 f1 ( x,y1 ,y2 , ,ym ) f ( x,y ,y , ,y ) y2 2 1 2 m , Y 其中 F ( x,Y ) , yn f m ( x,y1 ,y2 , ,ym ) Y0 [s1 ,s2 , ,sn ]T .
2015-3-27
9
【例A.2.1】求下列多项式的“商”及“余”
( s 2)(s 4)(s 1) s3 s 1
2
p1=conv([1,0,2],conv([1,4],[1,1])); p2=[1 0 1 1]; [q,r]=deconv(p1,p2); cq='商多项式为 '; cr='余多项式为 '; disp([cq,poly2str(q,'s')]); disp([cr,poly2str(r,'s')]);
2015-3-27 23
【例A.4.2】已知一组实验数据如下:
xk
0
1.0000
0.25
1.2840
0.50
1.6487
0.75
2.1170
1.00
2.7183
yk
用二阶多项式曲线进行拟合。编写 MATLAB程序,计算此二阶多项式表达式. 并绘出拟合图形。
2015-3-27
24
程序如下:
%准备数据 x=[0 0.25 0.50 0.75 1.00]; y=[1.0000,1.2840,1.6487,2.1170, 2.7183]; %调用拟合函数 pp=polyfit(x,y,2); %将多项式行向量形式转成字符串形式 p2=poly2str(pp,'x')
相关文档
最新文档