matlab数值计算2
matlab2_matlab教程

x1+2x2+3x3=1 2x1+3x2+4x3=2 a=[1 2 3;2 3 4];b=[1;2]; x=a\b x= 1.00 0 x=
x1 1 2 3 1 x2 = 2 3 4 2 x3
a
x = b
x=pinv(a)b
0.83 0.33
0
-0.17
六、微分方程求解
微分方程求解的仿真算法有多种,常用 的有Euler(欧拉法)、Runge Kutta(龙 格-库塔法。 Euler法称一步法,用于一阶微分方程
a=[1 2 3;4 5 6;7 8 9]; b=[2 4 6;1 3 5;7 9 10]; a.*b ans = 2 8 18 4 15 30 49 72 90
a=[1 2 3;4 5 6;7 8 9]; b=[2 4 6;1 3 5;7 9 10];
a*b ans = 25 55 85
37 85 133
二、数据的保存与获取
把matlab工作空间中一些有用的数 据长久保存下来的方法是生成mat数 据文件。 save —— 将工作空间中所有的变 量存到matlab.mat文件中。 默认文件名
save data——将工作空间中所
有的变量存到data.mat文件中。
save data a b ——将工作空间 中a和b变量存到data.mat文件中。
rand —— 随机矩阵
eye —— 单位矩阵
zeros ——全部元素都为0的矩阵
ones ——全部元素都为1的矩阵
还有伴随矩阵、稀疏矩阵、魔方 矩阵、对角矩阵、范德蒙等矩阵的创 建,就不一一介绍了。
注意:matlab严格区分大小写字母,因
此a与A是两个不同的变量。 matlab函数名必须小写。
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进行数值计算

如何使用MATLAB进行数值计算使用MATLAB进行数值计算一、引言数值计算是现代科学与工程领域中不可或缺的一部分,它能够解决许多实际问题,包括求解方程、优化问题和模拟实验等。
而MATLAB作为一种功能强大的数值计算软件,被广泛应用于各个领域。
本文将介绍如何使用MATLAB进行数值计算,并结合实例进行说明。
二、MATLAB基础首先,我们需要了解MATLAB的基本操作和语法,以便能够熟练运用。
MATLAB使用矩阵和数组来存储和处理数据,因此,熟悉矩阵和数组操作是非常重要的。
MATLAB中的矩阵和数组是通过方括号来定义的,例如:A = [1 2 3; 4 5 6; 7 8 9]表示一个3x3的矩阵A,其中每个元素由空格或分号隔开。
我们可以使用括号或索引来访问矩阵中的元素。
例如,要访问矩阵A的第二行第三列的元素,可以使用A(2,3)。
MATLAB提供了大量内置的数学函数,包括算术运算、三角函数、指数和对数函数等。
这些函数可以直接应用于矩阵和数组,简化了数值计算的过程。
三、方程求解方程求解是数值计算中的一个重要任务,MATLAB提供了多种方法来求解方程,包括代数方法和数值方法。
1. 代数方法对于一些简单的方程,例如一元一次方程或二次方程,可以直接使用MATLAB内置的解方程函数进行求解。
例如,对于一元一次方程ax + b = 0,可以使用solve函数来求解。
代码示例:syms x;eqn = a*x + b == 0;sol = solve(eqn, x);其中,syms x;指定x为符号变量,eqn为方程表达式,sol为方程的解。
2. 数值方法对于一些复杂的方程,无法用解析方法求解。
这时,可以使用数值方法来近似求解。
MATLAB提供了多种数值求解方法,包括二分法、牛顿法和割线法等。
这些方法可以通过迭代逼近的方式求解方程的根。
代码示例:f = @(x) x^2 - 4;x0 = 2;x = fzero(f, x0);其中,f为方程的表达式,x0为初始猜测值,x为方程的根。
数值计算与MATLAB第二章

第二章非线性方程求根习题2-11. 试寻找f(x)= x 3+6.6 x2-29.05 x +22.64=0的实根上下界,及正根所在的区间,区间长度取1。
解:由笛卡儿符号规则知,f(x)=0可能有二个正根或无正根f(-x)= -x 3+6.6 x2+29.05 x +22.64=0即x 3 -6.6 x2-29.05 x -22.64=0f(-x)=0有一个正根,因此,f(x)=0有一个负根。
由定理2-3,f(x)=0的正根上界f(x)=0的负根下界x0123456 6.39f(x)++-+++++正根所在区间为(1, 2),(2, 3)。
2.你能不利用多项式的求导公式,而借鉴于余数定理的思想,构造出P n(x)=a0x n+a1x n-1+...+a n-1x+a n在x0这点上的导数值的算法吗?习题2-21.用二分法求方程x2-x-1=0的正根,要求准确到小数点后第一位a F(a)b F(b)x F(x)0-1211-11-121 1.5-0.251.5-0.2521 1.750.31251.5-0.25 1.750.3125 1.6250.3015625 1.5-0.25 1.6250.015625 1.5625-0.12109375 1.5625-0.12104375 1.6250.015625 1.59375-0.053710937 1.59375-0.053710937 1.6250.015625 1.609375-0.019287109 1.609375-0.019287109 1.6250.015625 1.6171875-0.001892089 1.6171875-0.001892089 1.6250.015625 1.621093750.006851196 1.6171875-0.001892089 1.621093750.006851196 1.6191406250.002175738 1.6171875-0.001892089 1.619140620.002475738 1.6181640630.000290904X*=1.618K=5X*=1.593752.试证明用试位法(比例求根法),求在区间[0, 1]内的一个根必然收敛。
现代数值计算方法(MATLAB版)第2章(2)

福建师范大学
数计学院
if k==N, Warning(’ disp([’k=’,num2str(k)]) 2.1 Jacobi 0.76 −0.01 −0.01 0.88 −0.14 −0.03 −0.16 0.06
’); end
−0.14 −0.03 1.01 −0.12
:
福建师范大学
数计学院
11/12
1 2 − λ = 0, 4 3
−1 1/2
Back Close
λ1 = 0, λ2 = −
11 , λ3 = 12 11 < 1, 12
11 . 12
福建师范大学
数计学院
ρ(BJ ) = .
12/12
Back Close
Back Close
>> x=majacobi(A,b)
福建师范大学
k= 13 x = 1.27616261026619 1.29806392739565 0.48904201392258 1.30273287985933 §2.1.2 Jacobi , .
数计学院
8/12
Back Close
2.6 Jacobi (1) (2) (3) BJ BJ
A = (A − D) + D, Ax = b Dx = (D − A)x + b,
Back Close
x = D−1(D − A)x + D−1b.
福建师范大学
数计学院
x(k+1) = D−1(D − A)x(k) + D−1b
(2.12)
4/12
x(k+1) = BJ x(k) + fJ , BJ = D−1(D − A) = I − D−1A, fJ = D−1b. (2.13) Jacobi Jacobi 2.1 (Jacobi 1 2 (2.11) x(0), (2.12) ) ε, x(k+1) N, , (2.13) BJ Jacobi
MATLAB2符号说明

MATLAB的数值计算
Matlab的数据类型
变量
变量不需要事先声明,也不需要指定变量类型,它会自动根据 所赋予变量的值或对变量的操作来确定变量的类型;赋值过程中, 如果变量已存在,则用新值代替旧值,以新的类型代替旧的类型。 变量的命名规则: 变量名区分大小写; 变量名长度不超过31位,第31位之后的字符被忽略; 变量名以字母开头,变量名中可以包含字母、数字、下划线, 但不能使用标点。 变量一般为局部变量,即仅在其调用的M文件内部有效;若要 定义全局变量,须在变量前加关键字global。
A=
1 4 7 2 5 8 3 6 9
1 4 7
2 5 8
3 6 9
大型矩阵通借助M文件来输入。
x=rand(1,5) %产生的均布随机数组 x= 0.9501 0.2311 0.6068 0.4860 0.8913 x(3) %寻访数组x的第三个元素。 ans = 0.6068 x([1 2 5]) %寻访数组x的第一、二、五个元素组成的子数组。 ans = 0.9501 0.2311 0.8913 x(1:3) %寻访前三个元素组成的子数组 ans = 0.9501 0.2311 0.6068 x(3:end) %寻访除前2个元素外的全部其他元素。end是最后一 %个元素的下标。 ans = 0.6068 0.4860 0.8913
?format long;pi
ans =
3.14159265358979 ?format long e;pi ans = 3.141592653589793e+000 ?format long g;pi ans = 3.14159265358979
字符串 1、字符串的约定
MATLAB第二讲__数值计算和符号计算

(4)数值运算中必须先对变量赋值;符号运算无须事先对变 量赋值,但必须先定义,运算结果以标准的符号表达 式形式给出。
Matlab基础应用 21
2.2.2 符号运算中的运算符
(1)基本运算符 符号矩阵:‚+”,‚-”,‚*‛,‚\”, ‚/”, ‚^”, ‚ ’ ” 符号数组:‚.*”,‚./”,‚.\‛,‚.^”, ‚.’ ” (2)关系运算符 运算符只有‚==”,‚~=”。
Matlab基础应用 7
1.3.4 多项式乘除运算(续)
例4: a(x)=x2+2x+3; b(x)=4x2+5x;求c=a(x)*b(x)。 解: >>a=[1 2 3];b=[4 5 0]; >>c=conv(a,b) c= 4 13 22 15 0 >>[d,r]=deconv(c,a) d= 4 5 0 r= 0 0 0 0 0
注意: 方法一只创建了符号表达式,没有创建符号变量; 而方法二既创建了符号表达式,又创建符号变量.
Matlab基础应用 19
2.1.3 创建符号矩阵
使用sym和syms命令创建
例4: A=sym(‘[a,b;c,d]’) A= [ a, b] [ c, d] syms f g h k B=[f,g;h,k] B=
%方法二
Name Size Bytes Class a 1x1 126 sym object b 1x1 126 sym object c 1x1 126 sym object f2 1x1 146 sym object x 1x1 126 sym object Grand total is 20 elements using 650 bytes
实验3 MATLAB 数值计算(2)

实验3 MATLAB 数值计算(2)
目的和要求:
(1)了解多项式的运算。
(2)熟练掌握MATLAB二维曲线的绘制。
内容和步骤:
1.多项式的运算式的运算
(1)多项式的运算。
已知表达式G(x)=(x-4)(x+5)(x2-6x+9), 展开多项式形式;求导;并计算当x在[0,20]范围变化时G(x)的值;计算出G(x)=0的根。
多项式相乘conv;
求导polyder;
计算零点,即求根roots
解:
展开为多项式
求导:
求零点:
(2)多项式的拟合和插值。
x在[0,20]范围内,计算多项式y=x4-5x3-17x2+129x-180 的值y;并根据x和y进行二阶、三阶和四阶拟合。
并绘出拟合曲线。
对多项式y进行插值,计算在5.5处的值。
多项式拟合p=ployfit(x,y,n)
插值yi=interp1(x,y,xi,’method’)
2.绘制二维曲线
绘制的图形窗口分割为一行两列,窗口左上角画一正弦曲线,y=sin(2t),t:[0.2π];窗口右上角画3条衰减的单边指数曲线y=e-t, y=e-2t,和y=e-3t, t:[0,2]。
在图上添加标题,将3条曲线用不同的线型,并添加图例。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据的简单分析
max(求最大)、min(求最小) mean(求平均值)、 median(求中值) sum(求和)、cumsum(求累积和) std(求标准差)、 diff(差分) sort(升序排列)、sortrows(行升序排列)等等
数据的简单分析
当数据为行向量或列向量时,函数对整个向量 进行计算。
值的条件数; 2. [V,D,c]=condeig(A)相当于[V,D]=eig(A)和 c=condeig(A)两条指令的组(exmcondeig1.m) 矩阵的秩 rank(A)、迹trace(A) 通用函数形式funm(A,’funname’)
矩阵分解函数
矩阵A的LU分解: PA=LU L为主对角元为1的下三角阵,U是上三角阵,P
矩阵的抽取与扩展
抽取 1. 对角元素抽取函数 diag
diag(A,k) 、diag(A) diag(diag(A)) 2. 上三角矩阵和下三角矩阵的抽取
tril(A)、tril(A,k)、triu(A) 、triu(A,k) 扩展(exmkz.m)
稀疏矩阵
存储方式 全元素(Full)存贮、稀疏(spares)存贮
MATLAB 6.5
数值计算功能
内容: 一. 数据类型、向量的建立
及其运算; 二. 矩阵的创建及其运算、
数组运算和多项式的各 类运算。
MATLAB 的数据类型
主要类型:数字、字符串、矩阵(数组)、单 元型数据及结构型数据。
不需要对使用的变量进行事先声明,也不需要 指定变量类型,它会自动根据所赋予变量的值 或对变量所进行的操作来确定变量的类型。
别是非零元素的行下标和列下标向量;这三个向量 长度相同。m,n分别是待生成的稀疏矩阵SM的行、 列维。nzmax是用来为非零元素指定指定存储空间 的正整数。 3. 调用格式中的6个变量在一定条件下可以缺省,详 见用户指南或在线帮助。
稀疏矩阵的创建
稀疏带状矩阵的创建指令: spdiags SM=spdiags(B, d, m, n)
是由0或1组成的行置换阵。 [L,U,P]=lu(A) 、 [L,U]=lu(A) (exmlu1.m) Chol分解: A=LL^T L为非奇异下三角实矩阵 chol(A) QR分解: A=QR Q为正交阵,R为上三角阵。[q,r]=qr(A)
特殊矩阵的生成
全1阵
– ones(n), ones(m,n), ones(size(A))
向量及其运算(一维数组)
向量的生成: 1. 直接输入 ; 2. 利用冒号生成:x=x0:step:xn; 3. 线性等分向量的生成:
y=linespace(x1,x2), y=linespace(x1,x2,n); 4. 对数等分向量的生成: logspace(x1,x2,n);
一维数组子数组的寻访和赋值
矩阵的基本函数运算
特征值函数 特征方程: Ax=rx ; 广义特征方程: Ax=rBx
1. d=eig(A) 仅计算A的特征值(以向量形式存放) 2. [V,D]=eig(A) 计算特征向量阵V和特征值对角阵D,使
得AV=VD成立;(exmeig1.m) 3. [V,D]=eig(A,’nobalance’) 当矩阵A中与截断误差数量
当数据为矩阵时,命令对列进行计算,即把每 一列数据当成同一变量的不同观察值。
级相差不远时,该指令可能更精确; 4. [V,D]=eig(A,B) 计算广义特征向量阵V和广义特征值
对角阵D,使得AV=BVD成立;
矩阵特征值函数
5. [V,D]=eig(A, k, sigma) 计算k个由sigma指定 的特征向量和特征值;
sigma的取值 :实数或复数、 ‘lm’、’sm’、’lr’、’sr’、’be’ (exmeig2.m)
式为q,而余多项式为r;
多项式的运算
6. dp=polyder(p)多项式p的导数多项式; 7. dp=polyder(p1,p2)求多项式p1、p2乘积的导
数多项式dp; 8. [Num,Den]=polyder(p1,p2)对有理分式
(p1/p2)求导)求X,Y向量给定的数据的n阶 拟合多项式p。
全零阵:
– zeros(n) ,zeros(m,n), zeros(size(A)) – 常常用于对某个矩阵或向量赋0初值
单位阵:
– eye(n),eye(m,n)
随机阵:
– rand(m,n), rand(n)=rand(n,n)用于随机模拟,常和
rand('seed',k)配合使用。
抽取和创建带、对角稀疏矩阵 另有:稀疏单位阵(speye)、稀疏随机阵(sprandn) 外部数据转换为稀疏矩阵的指令:spconvert
SM=spconvert(T) 把保存来自外部的数据的变量内容转化为稀疏矩阵
多项式表达与创建
多项式的表示:将系数用行向量表示 p(x)=a0*x^n+a1*x^(n-1)+…+an P=[a0,a1,…,an] 多项式系数向量的创建方法 1. 直接输入法(降幂次序进行) 2. 指令 P=poly[A] 若A方阵,则多项式P就是该方
数组与矩阵运算的异同
数组“除、乘方、转值”运算前的小黑点决不 能遗漏,否则不按数组运算规则进行。
在执行数组与数组之间的运算时,参与运算的 数组必须同维,运算所得的结果数组也是与原 数组同维。
在求“乘、除、乘方、三角和指数函数”时, 两种运算有着根本的区别。
关系运算和逻辑运算仅对数组进行。
稀疏存储 1. 只存贮矩阵的非零元素,并且存贮按列进行; 2. 对于每一列,用一个数值数组记述非零元素值, 再用一个整数数组记述相应非零元素的行下标。
存储方式的转变 SM=sparse(A) 由任何形式转变为稀疏形式; FM=full(A) 由任何形式转变为零全素形式。
稀疏矩阵的创建
SM=sparse(I,J,S,m,max) 1. 用[I,J,S]的行创建(mxn)维稀疏矩阵SM; 2. S是按列排列的所有非零元素构成的向量;I,J分
阵的特征多项式;若A=[r1, r2, …, rn],则A的元素 认为是多项式P的根。
多项式的运算
1. pA=polyval(p,S)按数组运算规则计算多项式的 值;p为多项式,S为矩阵;
2. pM=polyvalm(p,S)按矩阵运算规则计算多项式 的值;p为多项式,S为矩阵;
3. r=roots(p)求多项式p的根; 4. P=conv(p1,p2) p是多项式p1和p2的乘积; 5. [q,r]=deconv(p1,p2)多项式p1被p2除的商为多项
6. eigs 使用迭代法求解特征值和特征向量的函 数,其求一个特征向量和特征值的时间反而 比eig求全部特征向量和特征值用的时间还多。 除非特殊需要,一般不用它。
其他矩阵函数
矩阵的条件数cond、condest、recond; 特征值的条件数 condeig 1. c=condeig(A) 向量c中包含矩阵A关于各特征
exmaddress.m
向量运算
加(减)与数加(减) 数乘 点积、差积及混合积
dot(a,b) 、dot(a,b,dim); cross(a,b)、cross(a,b,dim); dot(a,cross(b.c))
矩阵及其运算
矩阵的生成: 1. 直接输入小矩阵; 2. 创建M文件输入大矩阵 基本数学运算 1. 四则运算:加+、减- 、乘*、除\ 或/; 2. 矩阵与常数间的运算:数加、数乘、数除; 3. 逆运算:inv ; 4. 行列式det、幂^ 、指数expm、对数logm、开方sqrtm