matlab教程(第4讲-数值计算)
Matlab中常用的数值计算方法

Matlab中常用的数值计算方法数值计算是现代科学和工程领域中的一个重要问题。
Matlab是一种用于数值计算和科学计算的高级编程语言和环境,具有强大的数值计算功能。
本文将介绍Matlab中常用的数值计算方法,包括数值积分、数值解微分方程、非线性方程求解和线性方程组求解等。
一、数值积分数值积分是通过数值方法来近似计算函数的定积分。
在Matlab中,常用的数值积分函数是'quad'和'quadl'。
'quad'函数可以用于计算定积分,而'quadl'函数可以用于计算无穷积分。
下面是一个使用'quad'函数计算定积分的例子。
假设我们想计算函数f(x) = x^2在区间[0, 1]上的定积分。
我们可以使用如下的Matlab代码:```f = @(x) x^2;integral = quad(f, 0, 1);disp(integral);```运行这段代码后,我们可以得到定积分的近似值,即1/3。
二、数值解微分方程微分方程是描述自然界各种变化规律的数学方程。
在科学研究和工程应用中,常常需要求解微分方程的数值解。
在Matlab中,可以使用'ode45'函数来求解常微分方程的数值解。
'ode45'函数是采用基于Runge-Kutta方法的一种数值解法。
下面是一个使用'ode45'函数求解常微分方程的例子。
假设我们想求解一阶常微分方程dy/dx = 2*x,初始条件为y(0) = 1。
我们可以使用如下的Matlab代码:```fun = @(x, y) 2*x;[x, y] = ode45(fun, [0, 1], 1);plot(x, y);```运行这段代码后,我们可以得到微分方程的数值解,并绘制其图像。
三、非线性方程求解非线性方程是指方程中包含非线性项的方程。
在很多实际问题中,我们需要求解非线性方程的根。
matlab数值计算()(PDF)

1.1 数值差分与差商 在MATLAB中,没有直接提供求数值导数的函数,只
有计算向前差分的函数diff,其调用格式为:
DX=diff(X):计算向量X的向前差分,即: DX(i)=X(i+1)-X(i),i=1,2,…,n-1。
注意:s1fft是关于N/2共轭对称的!
其中一组信号(蓝色曲线为滤波后的数据)
滤波用的matlab程序:
Flow=5; %不是5Hz Fhigh=500; sfft=fft(s);
sfftnew=sfft; sfftnew(1:Flow-1)=0;%:end-Mlow sfftnew(end-Flow+1:end)=0; sfftnew(Fhigh:end-Fhigh)=0; snew=ifft(sfftnew);
命令如下:
V=vander(1:6) DV=diff(V) %计算V的一阶差分
范得蒙(Vandermonde)矩阵最后一列全为1,倒数第二列为一个 指定的向量, 其他各列 是其后列与倒数第二列的点乘积。 可以用 一个指定向量生成一个范得蒙矩阵。 在 MATLAB中,函数vander(V)生成以向量 V 为基础向量的范得蒙矩阵 例如, A=vander([1;2;3;5])即可得到上述范得矩 阵。
例6-7 计算二重定积分 (1) 建立一个函数文件fxy.m: function f=fxy(x,y)
1 ∫
2 ∫
− e
x2 2
sin(x2 +
y)dxdy
−1−2
global ki;
ki=ki+1;
%ki用于统计被积函数的调用次数
f=exp(-x.^2/2).*sin(x.^2+y);
《MATLAB的数值计算》课件

误差的传播遵循一定的规律,可以通过误差分析 来预测和控制误差的大小和影响。
数值计算的稳定性分析
稳定性的定义
01
如果一个数值方法的解在舍入误差的影响下保持稳定,则称该
方法具有稳定性。
不稳定性的表现
02
不稳定的数值方法可能导致解的振荡、发散或失去物理意义。
稳定性分析的方法
03
稳定性分析可以通过数值实验、数学分析和图形绘制等方法来
GPU加速计算概述
GPU加速计算是一种利用图形处 理器(GPU)进行通用计算的技 术。通过将计算任务分配给GPU 处理,可以显著提高程序的运行 速度。在Matlab中,GPU加速计 算可以利用Matlab的GPU数组和 GPU函数实现。
GPU加速计算的优点
GPU加速计算可以显著提高程序 的运行速度,特别是对于大规模 数据和高维度的计算任务。由于 GPU具有大量的并行处理单元, 可以同时处理多个数据,因此 GPU加速计算在处理大规模数据 时具有很高的效率。
数据分析和机器学习
Matlab提供了大量的数据分析工具和机器学习算法库。
控制系统设计
Matlab具有强大的控制系统设计和分析功能。
信号处理和通信
Matlab在信号处理和通信领域有广泛应用。
02
CATALOGUE
数值计算基础
数值计算的基本概念
数值计算的定义
数值算的应用领域
数值计算是使用数学方法对实际问题 进行近似求解的过程,涉及数学建模 、算法设计、编程实现等方面。
数值计算广泛应用于科学、工程、经 济和社会等领域,是现代科学和技术 发展的重要支撑。
数值计算的特点
数值计算具有高效性、精确性和可重 复性,能够解决许多实际问题,如物 理模拟、金融分析、数据处理等。
《MATLAB数值计算》PPT课件

ans =
-5.18325528043789
2.17062070347062
-0.83694739215044
0.84958196911772
注意:在上面的程序中,数字格式都设为长(long)型,若改
为短(short)型,结果会有差别,
根据需要可执行 MATLAB 窗口的 Fle | Preferences命令进
第3章 MATLAB数值计算
20.01.2021
精选课件ppt
1
第3章 MATLAB数值计算
3.1 多项式 3.2 插值和拟合 3.3 数值微积分 3.4 线性方程组的数值解 3.5 稀疏矩阵 3.6 常微分方程的数值解
精选课件ppt
2
3.1 多项式
3.1.1 多项式的表达和创建
表示成向量的形式,系数按降序排列 例如
精选课件ppt
11
3.2 插值和拟合
3.2.1 多项式插值和拟合 ➢插值
已知 节点
构造函数
使得
精选课件ppt
12
➢拟合
拟合就是要找出一个曲线方程式(多项式拟合就是设 法找一个多项式),使得它与观测数据最为接近,这时 不要求拟合多项式通过全部已知的观测节点。
1.多项式插值函数(interp1)
yi = interp1(x,y,xi,method) 对应于插值函数
31
精选课件ppt
6
【例 3.4】 利用 polyval找出多项式 在[-1,4]间均匀分布的 5个离散点的值。 >> x=linspace(-1,4,5) % 在[-1,4]区间产生5个离散点
>> p=[1 4 7 -8]; >> v=polyval(p,x) x=
MATLAB的数值运算ppt课件

注意: 点不能遗漏, .*间不能随意加空格符。 两组数的大小必须相等。 例如:
3)矩阵除与数组除
矩阵除:
A\B=inv(A)*B B/A=B*inv(A) A\B≠A/B
矩阵右除:运算符为“/”。如:“X=A/B”是指 方 程X*B=A的解 。 要求:两矩阵的列数必须相等 矩阵左除的运算符为“\”。如: “X=A\B”是指 方 程A*X =B的解。 要求:两矩阵的行数必须相等
Load:用户在使用MATLAB的时候将以MAT文
件保存的矩阵重新装载到MATLAB的工 作空间中。命令格式为:
load 路径\文件名
2)矩阵的修改
直接修改:
用键找到所要修改的矩阵,用键移动到要修 改的矩阵元素上即可修改。
指令修改:
利用矩阵元素的下标 A(,)= 来修改。
注意: 例如:
MATLAB的数 值运算
本节课将介绍Matlab数值运算的基本知 识,还须注重理论与实际的结合,主要介 绍以下几个方面: 矩阵的创建与保存 向量的生成 矩阵运算与数组运算 多项式运算 线性方程组
1. 矩阵的创建、保存与修改
矩阵: 是线性代数的基本运算单元。 通常矩阵是指含有M行N列数值的矩 形结构。 矩阵中的元素可以是实数或复数。复 数可用特殊函数i,j 输入 。 例如:a=[1 2 3;4 5 6] x=[2 pi/2;sqrt(3) 3+5i]
•
还有伴随矩阵、稀疏矩阵、魔方矩阵、 对角矩阵、范德蒙等矩阵的创建,就不一 一介绍了。 注意:
•Matlab严格区分大小写字母,因 此a与A是两个不同的变量。 •Matlab函数名必须小写。
利用外部数据文件(*.mat)保存和装载 矩阵: Save:将以定义过的矩阵(变量)以MAT文件
MATLAB基础及其应用教程 第4章 数值计算

方程ax=b(a为非奇异) x= a-1b 矩阵逆
* 两种解: x=inv(a)b — 采用求逆运算解方程 x=a\b — 采用左除运算解方程
2xx11
2x2 3x2
8 13
1 2方程ax=b2 3 x1 x2
8 13
a=[1 2;2 3];b=[8;13]; x=inv(a)*b
4.5 代数方程求解
matlab中有两种除运算左除和右除。 对于方程ax=b,a 为an×m矩阵,有三种情况:
当n=m时,此方程成为“恰定”方程 当n>m时,此方程成为“超定”方程 当n<m时,此方程成为“欠定”方程 matlab定义的除运算可以很方便地解上述三种方程
1、恰定方程组的解
• 其中,odefun表示函数句柄,可以是函数文件名、匿名函数句柄或内联函数名; • tspan表示区间[t0 tf]或者一系列离散点[t0,t1,...,tf]; • y0表示初始值向量; • T表示返回列向量的时间点; • Y表示返回对应T的求解列向量。
例 求解微分方程 x x2 1 x x 0 3
>>plot(t,x), figure(2),plot(x(:,1),x(:,2)) %绘制x的变化以0及轨迹
-1
-2
-3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5
为什么矩阵在数值计算值中那么重 要?
与基本计算相比,数值计算增加了 哪些计算功能?
说明用于曲线拟合的最小二乘法原 理。
例 >>p=[1 -5 -4 3 -2 1];
>>y=poly2sym(p) y= x^5-5*x^4-4*x^3+3*x^2-2*x+1 >> y=poly2str(p,'x') y=
Matlab学习指导第四章 数值计算

2x1-x2-x3=4
3x1+4x2-2x3=11 3x1-2x2+4x3=11
A=[ 2,-1,-1 ; 3,4,-2; 3,-2,4 ]; b=[4; 11; 11]; det(A), rank(A), rank([A,b]) x=A\b
方程组的解的三种情况:
对于方程Ax=b, A为Am×n矩阵,有三种情况: 当m=n时,此方程成为"恰定"方程,求解精确解 当m>n时,此方程成为“超定”方程,寻求最小二乘解 (直线拟
合)
1) 恰定方程组的解
当m<n时,此方程成为"欠定"方程,寻求基本解 matlab定义的除运算可以很方便地解上述三种方程 x = 方程组Ax=b (A非奇异),解为x=A\b 例4.2.1-2 求下列方程组的解 3.00 1.00 1.00
通俗地讲, 拟合就是由已知点得到一条曲线, 使该曲线 最能反映点所代表的规律.比如做欧姆定理的实验的时 候,由于实验中存在误差,最后拟合得到的曲线是一条 直线,而且肯定只有部分点落在拟合的直线上,但此时 该直线和测试点的方差最小.由拟合直线的斜率就可以 知道电阻的阻值.拟合是探测事物变化规律的办法. 插值就是根据函数上某些已知点(或实验数据),按一定 规律(插值方法)寻求未知的点,比如已知一个常用对数 y=log(x)表,是按照x=0.1:0.1:10制表的,如果按已知数 据求y=log(2.897)就可以用插值得到.表制得越密,插值 越准确.
16
对于方程组Ax=b, 采用x=A\b计算,如果方程组为yC=d, 要使用右除,即指令为y=d/C
Ax=bx'A'=b'yC=d x=A\bx'=b'/A'y=d/C 例4.2.1-1 解下列方程组 2x1+2x2+3x3=3
MATLAB经典教程(全)PPT课件

THANKS FOR WATCHING
感谢您的观看
信号时域分析和频域分析
时域分析
研究信号随时间变化的规律,包括波形、幅度、频率、相位等。
频域分析
将信号转换为频域表示,研究信号的频谱结构和频率特性,包括幅 度谱、相位谱、功率谱等。
时域与频域关系
时域和频域是信号分析的两个方面,它们之间存在对应关系,可以 通过傅里叶变换相互转换。
数字信号处理基础
数字信号表示
MATLAB工作环境与界面
MATLAB工作环境
包括命令窗口、工作空间、命令历史窗口、当 前文件夹窗口等。
界面介绍
详细讲解MATLAB界面的各个组成部分,如菜 单栏、工具栏、编辑器窗口等。
基本操作
介绍如何在MATLAB环境中创建、保存、运行脚本和函数,以及如何进行基本 的文件操作。
基本数据类型与运算
数据统计描述性分析
描述性统计量
介绍均值、中位数、众数、方差、标准差等常见 描述性统计量的计算方法和意义。
数据分布形态
通过直方图、箱线图等图形展示数据的分布形态 ,帮助用户了解数据的整体特征。
数据间关系
探讨协方差、相关系数等统计量在揭示数据间关 系方面的应用。
数据可视化方法
二维图形绘制
详细讲解MATLAB中二维图形的绘制方法,包括线图、散点图、 柱状图等。
特征值与特征向量
特征值与特征向量的定义
设A为n阶方阵,若存在数λ和n维非零向量x,使得Ax=λx ,则称λ为A的特征值,x为A的对应于特征值λ的特征向量 。
特征值与特征向量的性质
包括特征值的和等于方阵对角线元素之和、特征值的积等 于方阵的行列式等性质。
MATLAB求解
使用MATLAB内置函数`eig`求解方阵的特征值和特征向量 。
Matlab学习笔记--Matlab数值运算

1.矩阵的函数运算1.1求解矩阵A的特征值和特征向量的函数为eig(A),常用的调用格式为:1)E=eig(a):用于求解矩阵A的全部特征值,构成向量E2)[V,D]=eig(A),用于求解矩阵A的全部特征值,构成对角矩阵D,并求A的特征向量构成V的列向量1.2求解矩阵的奇异值:svd(A)1.3求矩阵的秩:rank(A)1.4 n阶魔方矩阵:magic(n)2.矩阵的分解:2.1矩阵的三角分解:[l,u]=lu(A) %分解成为上、下三角矩阵[l,u,p]=lu(A) %分解成上、下三角矩阵以及交换矩阵2.2矩阵的正交分解:[q,r]=qr(A) %产生一个与矩阵维数相同的上三角矩阵R和一个正交矩阵Q2.3矩阵的特征值分解:[V,D]=eig(A)得到矩阵A的特征值与对角矩阵D[V,D]=eig(A,B) %对广义矩阵进行特征值分解3.特殊矩阵的生成:3.1空矩阵:空矩阵不包含任何元素,它的阶数为03.3零矩阵:矩阵中所有的值都是0.A=zeros(M,N)生成M行N列的零矩阵如果已经有一个矩阵B,需要创建一个和B一样维数的零矩阵:A=zeros(size(B))如果要生成一个方阵:A=zeros(N)3.4全1矩阵的生成和全领矩阵类似:3.5对角矩阵的生成:A=diag(V,K) V 为某个向量,就是对角线上的值,K为向量V偏离主对角线的列数,K=0表示V在主对角上。
3.6随机矩阵的生成:Rand(N)生成矩阵的元素值是在(0.0---1.0)之间Rand(M,N)Randn(N)生成矩阵的元素值服从正太分布N(0,1)Randn(M,N)3.7范德蒙矩阵:A=vander(V)其中A(I,j)=v(i)n-j3.8魔术矩阵:魔术矩阵是一个方阵,并且方阵中的每一行、每一列以及每条对角线的元素之和都相同。
Magic(N)其他还有很多函数请查询pdf文件4.特殊矩阵的操作:A(:,j)表示取A矩阵的j列的全部元素,A(I,j)表示取A矩阵的第i行和第j列的值,A(I,:)代表取A矩阵的第i行的所有值。
MATLAB数值计算

(1)代数多项式求值
y = polyval(P,x)
若x为一数值,则求多项式在该点的值;若x为向量或矩阵,则 对向量或矩阵中的每个元素求其多项式的值。
(2)矩阵多项式求值 Y = polyvalm(P,X)
•
polyvalm函数要求x为方阵,它以方阵为自变量求多项式的值
设A为方阵,P代表多项式x3-5x2,那么polyvalm(P,A)的含义是: A*A*A-5*A*A 而polyval(P,A)的含义是: A.*A.*A-5*A.*A
[I,n]=quad(fx,1,2.5,1e-10)
(2) k = polyder(P,Q)
例:求有理分式的导数。 命令如下: P=[1]; Q=[1,0,5]; [p,q]=polyder(P,Q)
求两个多项式乘积P·Q的导函数
(3) [p,q] = polyder(P,Q)
求两个多项式除法P/Q的导函数,导函数的分子存入p,分母存入q。
8. 多项式积分
例:求定积分。 (1) 建立被积函数文件fesin.m。
function f=fesin(x) f=exp(-0.5*x).*sin(x+pi/6); (2) 调用数值积分函数quad求定积分。 [S,n]=quad('fesin',0,3*pi) S=
0.9008 n= 77
(2) 牛顿-柯特斯法
➢ method 用 于 指 定 插 值 的 方 法 : ‘ l i n e a r ’ 、 ‘nearest’、‘cubic’、‘spline’
➢ X1,Y1的取值范围不能超出X,Y的给定范围,否则,会 给出“NaN”错误。
运行结果如下图所示。
代数方程
线性方程
matlab课件第4讲

2013-8-6
Matlab Language
14
绘制图形的辅助操作
曲线线形控制符
符号 含义 实线 : 虚线 -. 点划线 -双划线
曲线颜色控制符
符号 b g r c m y k w
含义
兰
绿
红
青
品红
黄
黑
白
2013-8-6
Matlab Language
15
曲线的色彩、线型和 数据点形
曲线的线形控制符、颜色控制符、数据点形控制符可以组 合使用 其先后次序不影响绘图结果 也可以单独使用。
3000
3500
4000
1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.8 0.6 0.4 0.2 0 -500 0.15 0.1 0.05
X: 46.88 Y: 0.1639
(b) 源信号 s2 SD-MBD WP-MBD
R() x
60
SIR /dB
40 20
0 0 500 1000
100
2013-8-6
Matlab Language
2
(a) Ship1 1 0.15 0.8 0.1 X: 39.06 0.6 0.4 0 0.2 0 -500 100 200 300 400
Y: 0.06192 X: 78.13 Y: 0.1534
R() x
0.05
0
500
1000
1500 2000 2500 循 环 频 率 /Hz
(b) Ship2
3000
3500
4000
1 0.8 0.1 0.05 0 0 200 400 600
MatLab4第四讲 数值计算

MatLab & 数学建模第四讲数值计算符号数学工具箱符号表达式的运算Numeric 符号到数值的转换Pretty 显示悦目的符号输出Subs 替代子表达式Sym 建立符号矩阵或表达式Symadd 符号加法Symdiv 符号除法Symmul 符号乘法Symop 符号运算Sympow 符号表达式的幂运算Symrat 有理近似Symsub 符号减法Symvar 求符号变量符号表达式的简化Collect 合并同类项Expand 展开Factor 因式Simple 求解最简形式Simplify 简化symsum 和级数符号多项式Charpoly 特征多项式Horner 嵌套多项式表示Numden 分子或分母的提取poly2sym 多项式向量到符号的转换sym2poly 符号到多项式向量的转换符号微积分Diff 微分Int 积分Jordan 约当标准形Taylor 泰勒级数展开符号可变精度算术Digits 设置可变精度Vpa 可变精度计算求解符号方程Compose 函数的复合Dsolve 微分方程的求解Finverse 函数逆Linsolve 齐次线性方程组的求解Solve 代数方程的求解符号线性代数Charploy 特征多项式Determ 矩阵行列式的值Eigensys 特征值和特征向量Inverse 矩阵逆Jordan 约当标准形Linsolve 齐次线性方程组的解Transpose 矩阵的转置一、方程求解求解单个代数方程MATLAB具有求解符号表达式的工具,如果表达式不是一个方程式(不含等号),则在求解之前函数solve将表达式置成等于0。
>> solve( ' a*x^2+b*x+c ' ) % solve for the roots of the eqution ans=[1/2/a*(-b+(b^2-4*a*c)^1/2)][1/2/a*(-b-(b^2-4*a*c)^1/2)]结果是符号向量,其元素是方程的2个解。
matlab入门经典教程--第四章 数值计算

第四章数值计算4.1引言本章将花较大的篇幅讨论若干常见数值计算问题:线性分析、一元和多元函数分析、微积分、数据分析、以及常微分方程(初值和边值问题)求解等。
但与一般数值计算教科书不同,本章的讨论重点是:如何利用现有的世界顶级数值计算资源MATLAB。
至于数学描述,本章将遵循“最低限度自封闭”的原则处理,以最简明的方式阐述理论数学、数值数学和MATLAB计算指令之间的在联系及区别。
对于那些熟悉其他高级语言(如FORTRAN,Pascal,C++)的读者来说,通过本章,MATLAB 卓越的数组处理能力、浩瀚而灵活的M函数指令、丰富而友善的图形显示指令将使他们体验到解题视野的豁然开朗,感受到摆脱烦琐编程后的眉眼舒展。
对于那些经过大学基本数学教程的读者来说,通过本章,MATLAB精良完善的计算指令,自然易读的程序将使他们感悟“教程”数学的基础地位和局限性,看到从“理想化”简单算例通向科学研究和工程设计实际问题的一条途径。
对于那些熟悉MATLAB基本指令的读者来说,通过本章,围绕基本数值问题展开的容将使他们体会到各别指令的运用场合和在关系,获得综合运用不同指令解决具体问题的思路和借鉴。
由于MATLAB的基本运算单元是数组,所以本章容将从矩阵分析、线性代数的数值计算开始。
然后再介绍函数零点、极值的求取,数值微积分,数理统计和分析,拟合和插值,Fourier分析,和一般常微分方程初值、边值问题。
本章的最后讨论稀疏矩阵的处理,因为这只有在大型问题中,才须特别处理。
从总体上讲,本章各节之间没有依从关系,即读者没有必要从头到尾系统阅读本章容。
读者完全可以根据需要阅读有关节次。
除特别说明外,每节中的例题指令是独立完整的,因此读者可以很容易地在自己机器上实践。
MATLAB从5.3版升级到6.x版后,本章容的变化如下:●MATLAB从6.0版起,其矩阵和特征值计算指令不再以LINPACK和EISPACK库为基础,而建筑在计算速度更快、运行更可靠的LAPACK和ARPACK程序库的新基础上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.4 元素排序
Matlab中对向量X排序的函数是sort(X), 函数返回一个 对X中的元 素按升序排列的新向量。 sort函数也可以对矩阵A的各列(或行)重新排序,其 调用格式为: [Y,I] = sort(A,dim) dim=1,按列排序;dim=2,按行排序,Y是排序后的矩 阵,I记录Y中 1 8 5 的元素在A中的位置。 A 4 12 6 例:对下列矩阵做各种排序。 13 7 13
2016/11/22 Application of Matlab Language 3
4.1 多项式(polynomial)
已知多项式的根,求解多项式 ?
能! 使用poly指令
举例:由上例所得的根求其多项式
>> pp=poly(r)
pp =
1.0000 -12.0000 -0.0000 25.0000 116.0000
这里h>0
它是y的有限差分除以x的有限差分。
MATLAB中没有直接提供数值导数的函数,只有计算向 前差分的函数diff,其调用格式为:
DX = diff(X) 计算向量X的向前差分 DX = diff(X,n) 计算向量X的n阶向前差分
2016/11/22 Application of Matlab Language 13
2016/11/22 Application of Matlab Language
84
64];
0
9
4.1 多项式(polynomial)
多项式的导数 (polyder) 举例:求b(x)= x3+4x2+9x+16的导数。
>> b=[1 4 9 16]; >> d=polyder(b) d= 3 8 9 结果为: 3x2+8x+9 另外两种形式为: p = polyder(P,Q):求P*Q的导函数 [p,q] = polyder(P,Q):求P/Q的导函数,导数分子存入p, 分母存入q
>>Isim=quad(fun,0,1), I8=quadl(fun,0,1)
Isim = 0.7468
I8 = 0.7468
2016/11/22
Application of Matlab Language
17
4.3 数值积分(续)
举例:求解定积分
I
1
0
1 ln dx x
用quad指令求积分
If length(p1)>length(p2) P2前面要补0元素,使p1、p2两参数大小相等 否则 P1前面要补0元素,使p1、p2两参数大小相等
2016/11/22 Application of Matlab Language 7
函数的内部处理
4.1 多项式(polynomial)
2016/11/22
Application of Matlab Language
16
4.3 数值积分(续)
举例:求定积分 I 0 e dx
x2 1
MATLAB指令quad和quadl求积分 >>fun=inline(‘exp(-x.*x)’,‘x’); %数组乘符号.*的采用是
必须的
Matlab数值计算
第4讲
4.1 多项式(polynomial)
多项式的MATLAB表达
多项式由一个行向量表示
该向量元素是该多项式的系数 且按降幂次序排列
如:多项式x4-12x3+25x+116由行向量: p=[1 -12 0 25 116]表示。
注意,必须包括具有零系数的项。
求解多项式的根?
Application of Matlab Language 6
2016/11/22
4.1 多项式(polynomiaቤተ መጻሕፍቲ ባይዱ)
问题:编写一个多项式加法运算的函数文件 明确需求
定义一个函数,需要有两个输入参数(比如:p1、 p2),一个输出参数p_out。
p1、p2表示两个待计算的多项式。 p_out表示两个多项式的求和结果 如p1、p2两参数大小相等,则直接相加: p_out=p1+p2 如p1、p2两参数大小不等:
p(x) = x3+4x2-7x-10在[-1, 3]段上的曲线:
2016/11/22
Application of Matlab Language
12
4.2 函数的数值导数
导数定义为:
dy f ( x h) f ( x ) lim dx ( x h) ( x ) h0
则y=f(x)的导数可近似为: dy f ( x h) f ( x ) dx ( x h) ( x )
>>ff=inline('sqrt(log(1./x))','x'); >>Isim=quad(ff,0,1) Warning: Divide by zero. > In inlineeval at 13
In inline.subsref at 25
In quad at 63 Isim = 0.8862
roots指令
2016/11/22 Application of Matlab Language 2
4.1 多项式(polynomial)
举例:求解多项式x4-12x3+25x+116的根 >>p=[1 -12 0 25 116] p= 1 -12 0 25 116 >>r=roots(p) r= 11.7473 2.7028 -1.2251 + 1.4672i -1.2251 - 1.4672i MATLAB按惯例规定,多项式是行向量,根是列 向量
8 7.5 7 6.5 6 5.5 5 4.5 -3
-2
-1
0
1
2
3
2016/11/22
Application of Matlab Language
15
4.3 数值积分
一元函数的数值积分
常用积分指令:quad和quadl。
一般说来,quadl比quad更有效。
具体调用格式如下:
q = quadl(fun,a,b) q = quadl(fun,a,b,tol) q = quadl(fun,a,b,tol,trace) [q,fcnt] = quadl(fun,a,b,...) 输入量fun为被积函数的句柄。 输入量a, b分别是积分的下限、和上限,都必须是确定的数值; 前3个输入参数是调用积分指令所必须的,其他可以缺省; 输入量tol是一个标量,控制绝对误差; 输入量trace为非0值时,将随积分的进程逐点画出被积分函数; 输出参数fcnt返回函数的执行次数。 Note:quad的调用格式与quadl相同
2016/11/22 Application of Matlab Language 8
4.1 多项式(polynomial)
多项式的除法(deconv) 举例说明:
c(x)=x6+6x5+20x4+50x3+75x2+84x+64 除以b(x)= x3+4x2+9x+16
>> c=[1 6 20 50 75 >> b=[1 4 9 16]; >> [q , r]=deconv(c , b) q= 1 2 3 4 r= 0 0 0 0 0 0
即:x4-12x3+25x+116
2016/11/22 Application of Matlab Language 4
4.1 多项式(polynomial)
多项式的乘法(conv指令) 举例:多项式a(x)=x3+2x2+3x+4 和b(x)= x3+4x2+9x+16的乘积。
>> a=[1 2 3 4] ; b=[1 4 9 16]; >> c=conv(a, b) c= 1 6 20 50 75 84 64 两个以上的多项式的乘法需要重复使用 conv.
函数文件的编写
function p_out=poly_sum(p1, p2) % calculate the sum of two polynomials if length(p1)==length(p2) p_out=p1+p2; elseif length(p1)>length(p2) p2=[zeros(1,length(p1)-length(p2)), p2]; p_out=p1+p2; else p1=[zeros(1,length(p2)-length(p1)), p1]; p_out=p1+p2; end
2016/11/22 Application of Matlab Language 20
4.5 数据插值
在工程测量和科学实验中,所得到的数据通常是离散的, 要得到这些离散点以外的其他点的数值,就需要根据已 知的数据进行插值。 插值函数一般由线性函数、多项式、样条函数或这些函数的 分段函数充当。 一维数据插值:被插值函数有一个单变量。 采用的方法有:线性方法、最近方法、三次样条和三次插值。 在Matlab中实现这些插值的函数是interp1,其调用格式如下: Y1 = interp1(X,Y,X1,method) 函数根据X,Y的值,计算函数在X1处的值。 X,Y是两个等长的已知向量,分别描述采样点和样本值; X1是一个向量或标量,描述欲插值的点; Y1是一个与X1等长的插值结果。
% choose 100 data points between -1and 3.
plot(x, v); title('x^{3}+4x^{2}-7x-10'); xlabel('x')