第06章_MATLAB数值计算_参考解答
Matlab中常见的数值计算问题及解答
Matlab中常见的数值计算问题及解答Matlab是一款强大的科学计算软件,被广泛应用于工程、物理、数学等领域的数值计算和数据分析。
然而,由于其高度灵活和多样化的功能,使用者可能会遇到一些数值计算问题。
在本文中,我们将讨论一些在Matlab中常见的数值计算问题,并提供解答。
1. 数值稳定性在进行数值计算时,一个重要的问题是数值方法的稳定性。
数值不稳定性可能导致计算结果不准确,甚至无法得到有意义的结果。
为了解决这个问题,我们可以采取以下措施:(1) 使用兼容的数值方法:在选择数值方法时,应考虑到数值方法是否适用于问题的特性和约束条件。
例如,对于矩阵运算,可以使用特殊的数值方法,如LU分解或QR分解,以提高计算的稳定性。
(2) 限制数值范围:在进行计算之前,可以通过对数据进行归一化或缩放,将数据限制在一个合理的范围内。
这样可以减小计算中的数值误差,并提高计算的稳定性。
2. 数值误差数值计算中常常会出现数值误差。
这些误差可能来自于浮点运算的舍入误差,计算中的截断误差,或者数值方法的近似误差。
为了最小化数值误差,可以采取以下措施:(1) 使用高精度计算:Matlab提供了许多高精度计算的工具,如sym工具箱。
通过使用这些工具,可以进行更精确的计算,并减小数值误差的影响。
(2) 选择适当的数值方法:在选择数值方法时,应考虑到这些方法是否适用于所求解的问题。
例如,在解决微分方程时,可以根据方程的特性选择合适的数值方法,如欧拉法、龙格-库塔法等。
3. 数值积分在数值计算中,求解积分是一项重要的任务。
然而,对于复杂的函数或高维问题,常规的积分方法可能无法得到准确的结果。
为了解决这个问题,可以采取以下措施:(1) 适当选择积分方法:Matlab提供了多种积分方法,如梯形法则、辛普森法则等。
在进行数值积分时,可以根据问题的特性选择适当的积分方法,以提高计算的准确性。
(2) 使用自适应积分方法:自适应积分方法可以根据需要对积分区域进行自适应划分,以提高计算的准确性。
matlab数值计算技巧
Matlab提供了从磁盘文件或剪贴簿转载数据至工作区(数据导入)和将工作区变量存入磁盘文件(数据导出)的多种途径。
最简单的办法是使用界面导入向导,打开文件菜单中的导入数据而后按提示操作。
一、导入文本文件load函数、dlmread函数文本文件需要具备统一的行列模式,使用分隔符作为数据项间隔,这些分隔符包括空格、逗号、tab、分号或其它。
数据文件可能附带标题行和行列头标签。
数值数据对于数值数据可以直接使用load函数装载,例如my_data.txt中数据如下:1 2 3 4 56 7 8 9 10命令A = load('my_data.txt')装载该文本文件数据。
如果数值数据使用其它分隔符,可以使用dlmread读入,假设my_data.txt中数据如下:7.2;8.5;6.2;6.65.4;9.2;8.1;7.2命令A = dlmread('my_data.txt', ';')读入该数据。
包含行列标签的数值数据例如:Grade1 Grade2 Grade378.8 55.9 45.999.5 66.8 78.089.5 77.0 56.7fid = fopen('grades.dat', 'r');grades = textscan(fid, '%f %f %f', 3, 'headerlines', 1);fclose(fid);包含字符和数值的混合数据使用textread函数读入。
如果是规则的用空格隔开的数据,则采用data=textread(filename)格式调用,读出的数据记录在data矩阵中。
二、导出文本文件save函数A = [ 1 2 3 4 ; 5 6 7 8 ];save my_data.out A –ASCIIdlmwrite函数dlmwrite('my_data.out',A, ';')三、MS-Excel电子表格文件xlsinfo获得文件信息使用命令[type, sheets] = xlsfinfo(filename)返回文件类型type和工作表信息。
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进行数值计算
如何使用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为方程的根。
实验6答案Matlab数值计算
实验6 Matlab数值计算实验目的:1、掌握数据统计与分析的方法;2、掌握数据插值和曲线拟合的方法及其应用;3、掌握多项式的常用运算。
实验内容:1.利用randn函数生成符合正态分布的10×5随机矩阵A,进行如下操作:(1)求A的最大元素和最小元素;(2)求A的每行元素的和以及全部元素的和;(3)分别对A的每列元素按升序、每行元素按降序排列。
a = randn(10,5)+10;ma = max(max(a))mi = min(min(a))s = sum(a,2)sa = sum(sum(a))p = sort(a)p1 = -sort(-a,2)2.用3次多项式方法插值计算1-100之间整数的平方根。
f = sqrt(n);interp1(n,f,(1:100),'cubic')3.某气象观测站测得某日6:00-18:00之间每隔2h的室内外温度(°C)如下表所示。
使用三次样条插值分别求出该日室内外6:30-17:30之间每隔2h 各点的近似温度,并绘制插值后的温度曲线。
n= 6:2:18;f1 = [18 20 22 25 30 28 24]; f2 = [15 19 24 28 34 32 30]; r = 6.5:2:17.5;w = interp1(n,f1,r,'spline'); w1 = interp1(n,f2,r,'spline'); subplot(211),plot(r,w) subplot(212),plot(r,w1)4. 已知lgx 在[1,101]区间10个整数采样点的函数值如下表所示,试求lgx 的5次拟合多项式p(x),并绘制lgx 和p(x)在[1,101]区间的函数曲线。
x = linspace(1,101,10); y = log(x) /log(10); p = polyfit(x,y,5) y1 = polyval(p,x) plot(x,y,':o',x,y1,'-*') legend('sin(x)','fit')5. 有3个多项式(),(),()P x x x x P x x P x x x =+++=+=++4322123245223,试进行下列操作:(1) 求()()()()P x P x P x P x =+123。
MATLAB的数值计算
例:a=[1 2 3;4 5 6;7 8 0]; p=poly(a) p =1.00 -6.00 -72.00 -27.00 p是多项式p(x)=x3-6x2-72x-27的matlab描述方法,我们可用: p1=poly2str(p,‘x’) — 函数文件,显示 数学多项式的形式 p1 =x^3 - 6 x^2 - 72 x - 27
a./b=b.\a a.\b=b./a a./b=b.\a — 都是a的元素被b的对应元 素除 a.\b=b./a — 都是a的元素被b的对应元 素除 例: a=[1 2 3];b=[4 5 6]; c1=a.\b; c2=b./a c1 = 4.0000 2.5000 2.0000 c2 = 4.0000 2.5000 2.0000
—— 给出a,b对应元素间的商.
3. 数组乘方(.^) — 元素对元素的幂 例: a=[1 2 3];b=[4 5 6]; z=a.^2 z = 1.00 4.00 9.00 z=a.^b z = 1.00 32.00 729.00
对于p的其它值,计算将涉及特征值 和特征向量,如果p是矩阵,a是标量 a^p使用特征值和特征向量自乘到p次 幂;如a,p都是矩阵,a^p则无意义。
a=[1,2,3;4,5,6;7,8,9];a^2 ans =30 36 42 66 81 96 102 126 150
2. 数组乘除(,./,.\) ab —— a,b两数组必须有相同的行 和列两数组相应元素相乘。 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
MATLAB数值计算教程
MATLAB数值计算教程第一章:MATLAB入门1.1 MATLAB简介MATLAB(Matrix Laboratory)是一款强大的数值计算软件,广泛用于工程、科学和金融领域。
它的特点是简单易用、高效快速,并且拥有丰富的工具箱和函数库。
1.2 MATLAB环境搭建要使用MATLAB进行数值计算,首先需要安装MATLAB软件,并进行必要的配置。
通过官方网站下载安装程序,根据提示进行安装即可。
安装完成后,打开MATLAB环境,即可开始使用。
1.3 MATLAB基本操作在MATLAB环境中,可以通过命令行窗口输入和执行命令,也可以使用脚本文件进行批量处理。
常用的基本操作包括变量赋值、算术运算、函数调用等。
例如,使用"="符号赋值变量,使用"+"、"-"、"*"、"/"等符号进行算术运算。
第二章:向量和矩阵操作2.1 向量操作在MATLAB中,向量是一种特殊的矩阵,可以通过一组有序的元素构成。
向量可以进行基本的算术运算,如加法、减法、乘法、除法,还可以进行向量的点积、叉积等操作。
可以使用内置函数和运算符来实现。
2.2 矩阵操作矩阵是MATLAB中最常用的数据结构之一,使用矩阵可以进行多个向量的组合和运算。
可以进行矩阵的加法、减法、乘法、除法等操作,也可以进行矩阵的转置、求逆、求特征值等操作。
MATLAB提供了大量的函数和工具箱来支持矩阵的操作。
第三章:数值计算方法3.1 数值积分数值积分是一种用数值方法计算定积分的方法。
在MATLAB 中,可以使用内置函数来进行数值积分,如trapz函数和quad函数。
也可以使用Simpson法则、复合辛普森法等方法实现数值积分。
3.2 数值微分数值微分是一种用数值方法计算导数的方法。
在MATLAB中,可以使用内置函数进行数值微分,如diff函数和gradient函数。
第六讲 MATLAB数值计算
例5.11 用3种不同的格式求A的特征值和特征向量。 命令如下: A=[1,2,2;1,-1,1;4,-12,1] E=eig(A) [V,D]=eig(A) [V,D]=eig(A,'nobalance')
例5.12 用求特征值的方法解方程。
p = [3, -7, 0, 5, 2, -18];% A = compan(p); %A的伴随矩阵 x1 = eig(A) %求A的特征值 x2 = roots(p) %直接多项式p的零点 两种方法求得的方程的根是完全一致的,实际上, roots函数正是应用求伴随矩阵的特征值的方法 来求方程的根。
3. 矩阵的左右翻转
对矩阵A实施左右翻转的函数是fliplr(A)。
4. 矩阵的上下翻转
对矩阵A实施上下翻转的函数是flipud(A)。
5.2.2 矩阵的逆与伪逆 1. 矩阵的逆 求方阵A的逆可调用组。 A=[1,2,3;1,4,9;1,8,27]; b=[5,–2,6]'; x=inv(A)*b 一般情况下,用左除比求矩阵的逆的方法更 有效,即x=A\b。
2. 向量方向余弦的计算 例5.14 设向量V=(5,-3,2),求V的方向余弦。 建立一个函数文件direct.m: function f = direct (v) r = norm(v); if r==0 f=0 else f=[v(1)/r,v(2)/r,v(3)/r]; end 在MATLAB命令窗口,输入命令: V = [5,-3,2]; F = direct(v)
第五讲 MATLAB数值计算
5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 特殊矩阵 矩阵分析 矩阵分解与线性方程组求解 数据处理与多项式计算 傅立叶分析 数值微积分 常微分方程的数值求解 非线性方程的数值求解 稀疏矩阵
MATLAB数值计算中常见问题与解决方法
MATLAB数值计算中常见问题与解决方法引言:MATLAB是一种高级的数值计算和科学工程计算软件,被广泛应用于各个领域。
然而,在使用MATLAB进行数值计算时,常常遇到一些问题。
本文将讨论一些常见的问题,并提供解决方法。
一、矩阵操作中的问题与解决方法在MATLAB中,矩阵操作是经常用到的一项功能。
然而,当矩阵维度不匹配、矩阵奇异或不可逆时,会遇到一些问题。
1. 矩阵维度不匹配的问题:当进行矩阵运算时,如矩阵相加、相乘,要求参与运算的矩阵的维度必须匹配。
如果出现维度不匹配的问题,可以使用MATLAB提供的矩阵转置、矩阵重构等函数进行维度调整。
另外,可通过使用索引,保证矩阵的维度一致,例如使用矩阵的某些行或列。
2. 矩阵奇异或不可逆的问题:当矩阵奇异或不可逆时,无法直接进行逆矩阵求解、行列式计算等操作。
可以通过使用奇异值分解(SVD)的方法,对奇异矩阵进行近似求逆,或者使用伪逆矩阵进行替代。
MATLAB提供了相应的函数,例如pinv()函数用于求伪逆。
二、数值计算中的精度问题与解决方法在进行数值计算时,常常遇到数值精度上的问题,例如数值溢出、舍入误差等。
1. 数值溢出的问题:当进行数值计算时,如果结果超出了MATLAB的数值范围,会出现数值溢出的问题。
可以通过增大数据类型的范围,如使用double类型替代默认的单精度float类型,来解决数值溢出问题。
同时,可以对输入数据进行标准化或归一化处理,将数值范围控制在合理的范围内。
2. 舍入误差的问题:在进行连续运算或迭代计算时,会不可避免地产生舍入误差。
为了减小舍入误差带来的影响,可以使用较高的浮点数精度,如使用vpa()函数进行任意精度计算。
此外,还可以通过数值插值、三次样条插值等方法,来减小舍入误差对结果的影响。
三、数值积分中的问题与解决方法数值积分在科学工程计算中广泛应用,但也会遇到一些问题。
1. 数值积分精度不足的问题:在进行数值积分时,如果选取的积分方法或积分步长不合适,可能会导致积分结果的精度不足。
MATLAB数值计算
字符串的转换
double num2str int2str mat2str str2num 字符串转换为数值代码 数字转换为字符串 整数转换为字符串 矩阵转换为字符串 转换字符串为数字
矩阵与常数的运算 常数与此矩阵的各元素之间进行运算。 注意:进行数除时,常数通常只能做除数。 >>A=[2 1 -3 -1;3 1 0 7;-1 2 4 -2;1 0 -1 矩阵的逆运算 5]; 函数 inv >>inv(A)
ans = -0.0471 0.5882 -0.2706 0.3882 -0.3529 0.4824 -0.2235 0.2941 -0.0353 -0.0353 -0.0588 0.0471 -0.9412 0.7647 -0.4706 0.2941
矩阵的基本函数运算
特征值函数 函数 [x,y]=eig(A) 可以给出特征值和特征向量的值 x为特征向量矩阵,y为特征值矩阵。
矩阵的基本运算
加减运算 要求两矩阵必须同阶。
>>a=[1 2 3;2 3 4; 3 4 5]; >>b=[1 1 1;2 2 2;3 3 3]; >>c=a+b
c=
2 4 6 3 5 7 4 6 8
乘法
要求a为i×j阶, b为j×k阶时, ab才能相乘。
>>e=[b,[5 5 5]'] e= 1 2 3 1 2 3 1 2 3 5 5 5
>>b{2} ans =
matlab的数值运算
matlab的数值运算当使用MATLAB 进行数值运算时,可以使用各种内置函数和运算符进行计算。
下面是一些常见的数值运算操作的详细说明:基本数学运算:加法:使用"+" 运算符进行两个数的相加。
例如,计算2 和3 的和:2 + 3。
减法:使用"-" 运算符进行两个数的相减。
例如,计算5 减去2 的结果:5 - 2。
乘法:使用"*" 运算符进行两个数的相乘。
例如,计算4 乘以3 的结果:4 * 3。
除法:使用"/" 运算符进行两个数的相除。
例如,计算10 除以2 的结果:10 / 2。
取余数:使用"mod" 函数或"%" 运算符计算两个数的余数。
例如,计算11 除以3 的余数:mod(11, 3) 或11 % 3。
幂运算:使用"^" 运算符进行幂运算。
例如,计算2 的3 次幂:2^3。
数学函数:MATLAB 提供了许多内置的数学函数,可以进行各种数值计算和分析操作。
这些函数包括但不限于:abs(x):返回x 的绝对值。
sin(x):返回x 的正弦值。
cos(x):返回x 的余弦值。
exp(x):返回e 的x 次幂,其中e 是自然对数的底数。
log(x):返回x 的自然对数。
sqrt(x):返回x 的平方根。
round(x):返回x 的四舍五入值。
floor(x):返回不大于x 的最大整数。
ceil(x):返回不小于x 的最小整数。
max(x, y):返回x 和y 中的较大值。
min(x, y):返回x 和y 中的较小值。
数组运算:MATLAB 中的数值计算通常涉及数组操作。
可以对向量、矩阵和多维数组执行各种运算,例如:矩阵相加:使用"+" 运算符对两个相同大小的矩阵进行元素级别的相加。
矩阵相乘:使用"" 运算符对两个矩阵进行乘法运算。
matlab课后习题答案刘
matlab课后习题答案刘MATLAB课后习题答案刘在本学期的MATLAB课程中,我们学习了MATLAB的基础知识和一些高级功能。
为了帮助同学们更好地复习和巩固所学知识,以下是针对课后习题的一些参考答案。
1. 向量和矩阵的基本操作- 创建一个3x3的单位矩阵。
```matlabA = eye(3);```- 计算矩阵A和B的乘积,其中B是A的转置。
```matlabB = A';C = A * B;```2. 条件语句和循环- 编写一个循环,打印出1到10的所有奇数。
```matlabfor i = 1:2:10disp(i);end```- 编写一个条件语句,检查一个数是否为素数。
```matlabfunction isPrime(n)if n <= 1isPrime = false;elsefor i = 2:sqrt(n)if mod(n, i) == 0isPrime = false;return;endendisPrime = true;endend```3. 函数和脚本- 编写一个函数,计算给定半径的圆的面积。
```matlabfunction area = circleArea(radius)area = pi * radius^2;end```- 编写一个脚本来调用上述函数,并打印出半径为5的圆的面积。
```matlabradius = 5;disp(['Area of circle with radius ', num2str(radius), ' is ', num2str(circleArea(radius))]);```4. 数据结构和文件I/O- 读取一个文本文件中的数据到一个cell数组。
```matlabfilename = 'data.txt';fileID = fopen(filename, 'r');data = textscan(fileID, '%s');fclose(fileID);```- 将一个矩阵写入到一个CSV文件中。
第06章 MATLAB数值计算
例6.9 设z=x2+y2,对z函数在[0,1]×[0,2]区域内进行 插值。
例6.10 某实验对一根长10米的钢轨进行热源的温度 传播测试。用x表示测量点0:2.5:10(米),用h表示测 量时间0:30:60(秒),用T表示测试所得各点的温度 (℃)。试用线性插值求出在一分钟内每隔10秒、钢 轨每隔0.5米处的温度。
(2)求矩阵的最大值和最小值 求矩阵A的最大值的函数有3种调用格式,分 别是: max(A):返回一个行向量,向量的第i个元素 是矩阵A的第i列上的最大值。 [Y,U]=max(A):返回行向量Y和U,Y向量记 录A的每列的最大值,U向量记录每列最大值 的行时,该 函数和max(A)完全相同;dim取2时,该函数 返回一个列向量,其第i个元素是A矩阵的第i 行上的最大值。 求最小值的函数是min,其用法和max完全相 同。 例6.1 分别矩阵A中各列和各行元素中的最大 值,并求整个矩阵的最大值和最小值。
例6.11 用一个3次多项式在区间[0,2π]内逼近函数。 命令如下: X=linspace(0,2*pi,50); Y=sin(X); P=polyfit(X,Y,3) %得到3次多项式的系数和误差
6.1.4 多项式计算 1. 多项式的四则运算 (1)多项式的加减运算 (2)多项式乘法运算 函数conv(P1,P2)用于求多项式P1和P2的乘积。 这里,P1、P2是两个多项式系数向量。
2. 二维数据插值 在MATLAB中,提供了解决二维插值问题的函数 interp2,其调用格式为: Z1=interp2(X,Y,Z,X1,Y1,'method') 其中X,Y是两个向量,分别描述两个参数的采样点, Z是与参数采样点对应的函数值,X1,Y1是两个向量 或标量,描述欲插值的点。Z1是根据相应的插值方 法得到的插值结果。 method的取值与一维插值函数 相同。X,Y,Z也可以是矩阵形式。 同样,X1,Y1的取值范围不能超出X,Y的给定范围, 否则,会给出“NaN”错误。
MATLAB数值计算入门教程
MATLAB数值计算入门教程第一章:MATLAB基础知识1.1 MATLAB简介MATLAB是一种用于解决科学与工程问题的高级技术计算环境。
它结合了数值分析、可视化和编程,提供了强大而灵活的工具来处理各种计算任务。
本章将介绍MATLAB的基本操作和界面。
1.2 MATLAB的安装和配置首先,我们需要下载和安装MATLAB软件。
在安装过程中,可以选择安装附带的工具箱,如统计工具箱和优化工具箱,以扩展MATLAB的功能。
安装完成后,还需进行基本配置,如设置工作目录和界面外观。
1.3 MATLAB的基本语法MATLAB使用面向向量和矩阵的语言,具有简洁而强大的语法。
本节将介绍MATLAB的基本数据类型、运算符、控制结构等。
例如,MATLAB中的向量和矩阵可以通过简单的行列运算实现。
第二章:MATLAB数值计算2.1 常用数值计算函数MATLAB提供了许多常用的数值计算函数,如求解线性方程组、插值、数值积分和微分等。
本章将介绍这些函数的使用方法,并给出实例演示。
2.2 数值计算方法数值计算方法是解决数值计算问题的核心。
本节将介绍常用的数值计算方法,如迭代法、数值求解微分方程和数值优化等。
同时,我们还会介绍MATLAB中对应的函数和工具箱。
第三章:MATLAB数据可视化3.1 绘图函数数据可视化是MATLAB的一个重要功能。
MATLAB提供了丰富的绘图函数,可以绘制二维曲线、三维曲面、散点图等。
本节将介绍这些绘图函数的使用方法,并给出实例演示。
3.2 图形操作与修改除了绘制基本图形外,MATLAB还提供了对图形进行操作与修改的函数。
例如,我们可以修改坐标轴范围、添加图例和标签,以便更好地展示和解读数据。
本节将详细介绍这些图形操作的方法。
第四章:MATLAB编程与应用4.1 MATLAB脚本和函数编写MATLAB不仅是一个交互式环境,还可以编写脚本和函数来实现更复杂的计算任务。
本节将介绍MATLAB脚本和函数的编写方法,并给出实例演示。
数值计算与MATLAB方法课后答案
第一章习题1. 序列满足递推关系,取及试分别计算,从而说明递推公式对于计算是不稳定的。
n1 1 0.01 0.00012 0.01 0.0001 0.0000013 0.0001 0.000001 0.000000014 0.000001 0.0000000110-105 0.00000001 10-10n1 1.000001 0.01 0.0000992 0.01 0.000099 -0.000099013 0.000099 -0.00009901-0.010000994 -0.00009901 -0.01000099-1.00015 -0.01000099-1.0001初始相差不大,而却相差那么远,计算是不稳定的。
2. 取y0=28,按递推公式,去计算y100,若取(五位有效数字),试问计算y100将有多大误差?y100中尚留有几位有效数字?解:每递推一次有误差因此,尚留有二位有效数字。
3.函数,求f(30)的值。
若开方用六位函数表,问求对数时误差有多大?若改用另一等价公式计算,求对数时误差有多大?设z=ln(30-y),,y*, |E(y)| 10-4z*=ln(30-y*)=ln(0.0167)=-4.09235若改用等价公式设z=-ln(30+y),,y*, |E(y)|⨯10-4z*=-ln(30+y*)=-ln(59.9833)=-4.094074.下列各数都按有效数字给出,试估计f的绝对误差限和相对误差限。
1)f=sin[(3.14)(2.685)]设f=sin xyx*=3.14, E(x)⨯10-2, y*=2.685, E(y)⨯10-3,sin(x*y*)=0.838147484, cos(x*y*)=-0.545443667⨯(-0.5454) ⨯⨯10-2+3.14(-0.5454) ⨯⨯10-3|⨯10-2⨯10-2|E r(f)| ⨯10-2⨯10-2<10-22)f=(1.56)设f = x y ,x*=1.56, E(x)⨯10-2, y*=3.414, E(y)⨯10-3,⨯⨯⨯10-2⨯⨯⨯10-3|⨯⨯⨯10-2⨯⨯⨯10-3|=0.051|E r(f)| =0.01125.计算,利用下列等式计算,哪一个得到的结果最好,为什么?6.下列各式怎样计算才能减少误差?7. 求方程x2-56x+1=0的二个根,问要使它们具有四位有效数字,至少要取几位有效数字?如果利用伟达定理, 又该取几位有效数字呢?解一:若要取到四位有效数字,如果利用伟达定理,解二:由定理二,欲使x1,x2有四位有效数字,必须使由定理一知,∆至少要取7位有效数字。
Matlab中的数值计算实践技巧
Matlab中的数值计算实践技巧在数学和工程领域中,Matlab是一种广泛使用的数值计算软件。
它的灵活性和功能强大使得它成为许多科学家和工程师的首选工具。
然而,在实践中,由于Matlab提供了许多不同的功能和技术,有时候我们可能会在使用时遇到一些问题。
本文将介绍一些在Matlab中的数值计算实践中经常遇到的技巧和解决方案。
第一部分:数值计算的基础在开始介绍一些高级技巧之前,我们首先需要了解一些数值计算的基础知识。
数值计算是利用数值方法来近似解决数学问题的过程。
在Matlab中,我们可以使用一些内置的函数来执行一些基本的数值计算操作,比如加减乘除和求幂等。
另外,Matlab还提供了一些常用的数学函数,例如三角函数、指数函数和对数函数等。
这些函数在数值计算中非常重要,我们可以利用它们来进行各种复杂的计算。
第二部分:数值计算的优化技巧在进行复杂的数值计算时,性能往往是一个关键因素。
为了提高计算效率,我们可以采用一些优化技巧。
其中一个常用的技巧是向量化运算。
在Matlab中,向量化运算可以显著减少循环的数量,从而提高计算速度。
例如,如果我们需要对一个向量中的每个元素进行运算,我们可以使用向量化的方式,而不是使用循环来逐个处理。
另外一个常见的优化技巧是矩阵分解。
许多数值计算问题可以转化为矩阵分解的形式,例如线性方程组的求解和特征值问题的求解。
在Matlab中,我们可以使用一些内置的函数来实现这些分解,并且这些函数通常会采用一些高效的算法来提高计算速度。
第三部分:数值计算的问题与解决方案在进行数值计算时,我们可能会遇到一些问题。
在这一部分,我们将介绍一些常见的问题,并给出一些解决方案。
第一个问题是数值不稳定性。
由于计算机的有限精度,有些计算可能会引入一些误差。
当计算过程中的误差累积到一定程度时,可能会导致结果的不稳定性。
为了解决这个问题,我们可以使用一些数值稳定性较好的算法,或者对问题进行一些转化来避免误差的累积。
如何在MATLAB中进行数值计算
如何在MATLAB中进行数值计算MATLAB是一种用于数值计算和科学计算的程序设计语言和环境。
它提供了各种函数和工具箱,用于处理数值计算问题,包括线性代数、数值积分、数值微分、常微分方程求解、优化、插值等。
下面将介绍如何在MATLAB中进行数值计算的基本步骤和常用函数。
首先,启动MATLAB软件,创建一个新的脚本文件(.m文件),用于编写和保存MATLAB代码。
1.数值计算基础在MATLAB中进行数值计算的基本单位是矩阵和向量。
可以使用MATLAB提供的各种函数来创建和操作矩阵和向量。
例如,可以使用"zeros"函数创建一个全零的矩阵,使用"ones"函数创建一个全一的矩阵,使用"rand"函数生成一个随机矩阵。
2.线性代数计算MATLAB提供了丰富的线性代数函数,用于处理线性方程组、矩阵运算和特征值计算等问题。
例如,可以使用"inv"函数计算矩阵的逆,使用"det"函数计算矩阵的行列式,使用"eig"函数计算矩阵的特征值和特征向量。
3.数值积分MATLAB提供了多种数值积分方法,用于计算函数的定积分。
可以使用"quad"函数进行一维数值积分,使用"quad2d"函数进行二维数值积分,使用"quad3d"函数进行三维数值积分。
4.数值微分MATLAB提供了多种数值微分方法,用于计算函数的导数和偏导数。
可以使用"diff"函数计算函数的导数,使用"gradient"函数计算函数的梯度,使用"hessian"函数计算函数的Hessian矩阵。
5.常微分方程求解MATLAB提供了多种数值方法,用于求解常微分方程组。
可以使用"ode45"函数求解一阶常微分方程,使用"ode15s"函数求解刚性常微分方程。
《现代数值计算方法(MATLAB版)》习题解答
1.10 提示: (1) sin(x + y ) − sin x = 2 sin y cos(x + y ), (2) 1 − cos 1◦ = 2 2 √ √ = − ln( 1010 + 1 + 105 ). ln( 1010 + 1 − 105 ) = ln √ 10 1 5
−2 1 λ −3 , ρ(Bs ) = 2 > 1, 故 Gauss 2 2 =λ3 = 0, 所以 λ1 = λ2 =
λ3 = 0, ρ(BJ ) = 0 < 1, 故 Jacobi 迭代法收敛. −1 1 0 0 0 −2 2 (2) Bs = 1 1 0 0 0 −1 2 2 1 0 0 0 Seidel 迭代法发散.
10 +1+10
1.11 (1) (A) 比较准确; (2) (A) 比较准确. 1.12 算法 2 准确. 在算法 1 中, ε0 ≈ 0.2231 带有误差 0.5 × 10−4 , 而这个误差在以后的每次计算中 顺次以 41 , 42 , · · · 传播到 In 中. 而算法 2 中的误差是按
2
故 Jacobi 迭代, Gauss-Seidel 迭代均收敛. 2.13 提示: ρ(J ) = 0.9 < 1, 故迭代法收敛. 1 0 . 5 0. 5 2.14 提示: 容易验证 A = 0.5 1 0.5 是对称正定的, 故 Gauss-Seidel 迭代收敛, 但 2D − A = 0.5 0.5 1 1 −0.5 −0.5 −0.5 1 −0.5 不正定, 故 Jacobi 迭代发散. −0.5 −0.5 1 0 0 −1 3 2.15 提示: BJ = 1 0 0 . 特征方程 3λ + λ + 2 = 0, 特征值 λ1 = −0.478, λ2,3 = 1 2 0 3 3 故 Jacobi 迭代收敛. −1 −1 , 因为 ρ(BS ) = 1, 故 Gauss-Seidel 迭代发散. −1 −22 11 1 2.16 提示: (1) 将原方程组的系数矩阵调整为: 1 −4 2 , 显然为严格对角占优矩阵, 故 11 −5 −33 = 0
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%可参见教材第 157 页例 6.19
运行结果: dx =
000
%当 x=pi/2 时单独计算 x=pi/2; f=inline('sin(x).^2+cos(x).^2'); dx=diff(f([x, pi]))/(pi/2)
dx = 0
(2) 程序设计: clear all; close all; clc; x=1:3; f=inline('sqrt(x.^2+1)'); dx=diff(f([x, 4]))
运行结果:
U= 1.0e-004 * -0.0675
0.1715
fmin = 1.9920e-010
(2) 程序设计: clear all; close all; clc; f=inline('-sin(x)-cos(x.^2)'); fmax=fminbnd(f, 0, pi)
%用内联函数,求负的最小值 %注意函数名 f 不加单引号'
高教社刘卫国《MATLAB 程序设计与应用》(第二版)习题参考解答
第 6 章:MATLAB 数值计算
教材 P189 习题六
第 6 章 MATLAB 数值计算
1. 利用 MATLAB 提供的 randn 函数生成符合正态分布的 10×5 随机矩阵 A,进行如下操 作:
(1) A 各列元素的均值和标准方差。 (2) A 的最大元素和最小元素。 (3) 求 A 每行元素的和以及全部元素之和。 (4) 分别对 A 的每列元素按升序、每行元素按降序排列。 答:
运行结果: P=
0
15.0000
7.0000 -3.5000
0.5000 -2.0000 -2.0000
所以P(x)=15x5+7x4-3.5x3+0.5x2-2x-2
(2) 程序设计: r=roots(P)
运行结果:
r= 0.7071 0.1000 + 0.6245i
王成优©山东大学(威海)MATLAB 语言
运行结果:
王成优©山东大学(威海)MATLAB 语言
2
WangChengyou © Shandong University, Weihai
高教社刘卫国《MATLAB 程序设计与应用》(第二版)习题参考解答
第 6 章:MATLAB 数值计算
(2) 程序设计: clear all; close all; clc; X=[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]; Y=1:10; X1=1:100; Y1=interp1(X, Y, X1, 'cubic'); plot(X, Y, 'r:o'); hold on; %绘精确平方根曲线 plot(X1, Y1, 'k-x'); %绘 3 次多项式插值平方根曲线 legend('精确平方根', '3 次多项式插值');
运行结果: fmax =
0.7310
王成优©山东大学(威海)MATLAB 语言
5
WangChengyou © Shandong University, Weihai
高教社刘卫国《MATLAB 程序设计与应用》(第二版)习题参考解答
第 6 章:MATLAB 数值计算
6. 求函数在指定点的数值导数。
(1) f (x) = sin2 x + cos2 x , x = π , π , π , π 6432
rowsumA=sum(A, 2); %(3)A 每行元素的和
sumA=sum(rowsumA); %(3)A 全部元素之和
sort1=sort(A);
%(4)A 的每列元素按升序排列
sort2=sort(A, 2, 'descend'); %(4)A 的每行元素按降序排列
运行结果:(略)
2. 按要求对指定函数进行插值和拟合。
运行结果:
Pxi = -2.0000 -2.3920 184.9056 332.5264
-2.6112 560.0000
-1.7024
2.7104 15.0000 42.1120 94.1408
5. 求函数在指定区间的极值。 (1) f (x, y) = 3x2 + 2xy + y2 在[1,1]附近的最小值。
运行结果: dx0.9608
7. 求数值积分。
∫ (1) π sin5 x sin(5x)dx 0
∫1 1+ x2
(2) −11+ x4 dx
∫ π x sin x
(3)
0
1+
cos2
dx x
(4) ∫∫ cos(x + y)dxdy , Ω : 0 ≤ x ≤ π, 0 ≤ y ≤ π
程序设计:
clear all; close all; clc;
A=randn(10, 5);
meanA=mean(A);
%(1)A 各列元素的均值
stdA=std(A);
%(1)A 各列元素的标准方差
maxA=max(max(A)); %(2)A 的最大元素
minA=min(min(A)); %(2)A 的最小元素
运行结果:
P= 1.0e+003 * -0.0000
0.0013
-0.1779
8.4330
所以它的线性拟合曲线为:P(x)=1.3x2-177.9x+8433
4. 已知多项式 P1(x) = 3x + 2 , P2 (x) = 5x2 − x + 2 , P3 (x) = x2 − 0.5 ,求 (1) P(x) = P1(x)P2 (x)P3(x) 。 (2) P(x) = 0 的全部根。 (3) 计算 xi = 0.2i (i = 0,1, 2,",10) 各点上的 P(xi ) 。 答: (1) 程序设计: clear all; close all; clc; P1=[0, 3, 2]; P2=[5, -1, 2]; P3=[1, 0, -0.5]; P=conv(conv(P1, P2), P3)
Ω
答:
(1) 程序设计:
王成优©山东大学(威海)MATLAB 语言
6
WangChengyou © Shandong University, Weihai
高教社刘卫国《MATLAB 程序设计与应用》(第二版)习题参考解答
第 6 章:MATLAB 数值计算
clear all; close all; clc; f=inline('sin(x).^5.*sin(5*x)'); qf=quad(f, 0, pi)
7
8
9
10
答:
(1) 程序设计:
clear all; close all; clc;
alpha1=0:15:90; sin_alpha1=sin(alpha1*pi/180); %精确正弦值
plot(alpha1, sin_alpha1, 'k:p'); hold on; %绘精确正弦曲线
王成优©山东大学(威海)MATLAB 语言
4
WangChengyou © Shandong University, Weihai
高教社刘卫国《MATLAB 程序设计与应用》(第二版)习题参考解答
第 6 章:MATLAB 数值计算
0.1000 - 0.6245i -0.7071 -0.6667
(3) 程序设计: i=0:10; xi=0.2*i; Pxi=polyval(P, xi)
运行结果: qf =
0.0982
(2) 程序设计: clear all; close all; clc; f=inline('(1+x.^2)./(1+x.^4)'); qf=quad(f, -1, 1)
运行结果: qf =
2.2214
(3) 程序设计: clear all; close all; clc; f=inline('x.*sin(x)./(1+cos(x).^2)'); qf=quad(f, 0, pi)
(1) 按表 6.4 用 3 次样条方法插值计算 0 ~ 90D 范围内整数点的正弦值和 0 ~ 75D 范围内整
数点的正切值,然后用 5 次多项式拟合方法计算相同的函数值,并将两种计算结果进行
比较。
表 6.4 特殊角的正弦和正切值表
α (度)
0
15
30
45
60
75
90
sin α tan α
0
0.2588
运行结果:
王成优©山东大学(威海)MATLAB 语言
3
WangChengyou © Shandong University, Weihai
高教社刘卫国《MATLAB 程序设计与应用》(第二版)习题参考解答
第 6 章:MATLAB 数值计算
3. 已知一组实验数据如表 6.6 所示。
表 6.6 特殊角的正弦和正切值表
0.5000
0.7071
0.8660
0.9659
1.0000
0
0.2679
0.5774
1.0000
1.7320
3.7320
(2) 按表 6.5 用 3 次多项式方法插值计算 1~100 之间整数的平方根。
表 6.5 1~100 内特殊值的平方根表
N
1
4
9
16
25
36
49
64
81 100
N
1
2
3
4
5
6
(2) f (x) = x2 +1, x = 1, 2,3