《数值计算方法》
实验指导
(Matlab版)
肇庆学院数学与统计学学院
计算方法课程组
《数值计算方法》实验1报告
班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:
1. 实验名称
实验1 算法设计原则验证(之相近数相减、大数吃小数和简化计算步骤) 2. 实验题目
(1) 取16
10=z ,计算z z -+1和)1/(1z z ++,验证两个相近的数相减会造成
有效数字的损失.
(2) 按不同顺序求一个较大的数(123)与1000个较小的数(15
310-?)的和,验证大
数吃小数的现象.
(3) 分别用直接法和秦九韶算法计算多项式
n n n n a x a x a x a x P ++++=--1110)(
在x =1.00037处的值.验证简化计算步骤能减少运算时间.
对于第(3)题中的多项式P (x ),直接逐项计算需要2
1
12)1(+=+++-+n n n 次乘法和n 次加法,使用秦九韶算法
n n a x a x a x a x a x P ++++=-)))((()(1210
则只需要n 次乘法和n 次加法. 3. 实验目的
验证数值算法需遵循的若干规则. 4. 基础理论
设计数值算法时,应避免两个相近的数相减、防止大数吃小数、简化计算步骤减少运算次数以减少运算时间并降低舍入误差的积累.两相近的数相减会损失有效数字的个数,用一个大数依次加小数,小数会被大数吃掉,乘法运算次数太多会增加运算时间. 5. 实验环境
操作系统:Windows xp ; 程序设计语言:Matlab
6. 实验过程
(1) 直接计算并比较;
(2) 法1:大数逐个加1000个小数,法2:先把1000个小数相加再与大数加; (3) 将由高次项到低次项的系数保存到数组A[n]中,其中n 为多项式次数.
7. 结果与分析
(1) 计算的z z -+1= ,)1/(1z z ++ .
分析:
(2) 123逐次加1000个6
310-?的和是 ,先将1000个6
310-?相加,
再用这个和与123相加得.
分析:
(3) 计算次的多项式:
直接计算的结果是,用时;
用秦九韶算法计算的结果是,用时.
分析:
8. 附录:程序清单
(1) 两个相近的数相减.
%*************************************************************
%* 程序名:ex1_1.m *
%* 程序功能:验证两个相近的数相减会损失有效数字个数*
%*************************************************************
z=1e16;
x,y
======================================================================
(2) 大数吃小数
%*************************************************************
%* 程序名:ex1_2.m *
%* 程序功能:验证大数吃小数的现象. *
%*************************************************************
clc; % 清屏
clear all; % 释放所有内存变量
format long; % 按双精度显示浮点数
z=123; % 大数
t=3e-15; % 小数
x=z; % 大数依次加小数
% 重复1000次给x中加上t
y=0; % 先累加小数
% 重复1000次给y中加上t
y=z + y; % 再加到大数
x,y
======================================================================
(3) 秦九韶算法
%*************************************************************
%* 程序名:ex1_3.m *
%* 程序功能:验证秦九韶算法可节省运行时间. *
%*************************************************************
clc; % 清屏
clear all; % 释放所有内存变量
format long; % 按双精度显示浮点数
A=[8,4,-1,-3,6,5,3,2,1,3,2,-1,4,3,1,-2,4,6,8,9,50,-80,12,35,7,-6,42,5,6,23,74,65,55,80,78,77,98,56]; A(10001)=0; % 扩展到10001项,后面的都是分量0
% A为多项式系数,从高次项到低次项
x=1.00037;
n=9000; % n为多项式次数
% 直接计算
begintime=clock; % 开始执行的时间
% 求x的i次幂
% 累加多项式的i次项
endtime=clock; % 结束执行的时间
time1=etime(endtime,begintime); % 运行时间
disp('直接计算');
disp(['p(',num2str(x),')=',num2str(p)]);
disp([' 运行时间: ',num2str(time1),'秒']);
% 秦九韶算法计算
begintime=clock; % 开始执行的时间
% 累加秦九韶算法中的一项
endtime=clock; % 结束执行的时间
time2=etime(endtime,begintime); % 运行时间
disp(' ');
disp('秦九韶算法计算');
disp(['p(',num2str(x),')=',num2str(p)]);
disp([' 运行时间: ',num2str(time2),'秒']);
《数值计算方法》实验1报告
班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:
1. 实验名称
实验1 算法设计原则验证(之数值稳定性) 2. 实验题目 计算定积分?==-1
1
10,1,0,d n x e
x I x n n ,分别用教材例1-7推导出的算法A 和B ,
其中:
算法A :???≈-=-6321.0101I nI I n n 算法B :?????≈-=-0
)
1(1101I I n
I n n 验证算法不稳定时误差会扩大.
3. 实验目的
验证数值算法需遵循的若干规则. 4. 基础理论
设计数值算法时,应采用数值稳定性好的算法.数值稳定的算法,误差不会放大,甚至会缩小;而数值不稳定的算法会放大误差. 5. 实验环境
操作系统:Windows xp ; 程序设计语言:Matlab
6. 实验过程
分别用数组IA[ ]和IB[ ]保存两种算法计算的结果. 7. 结果与分析
8. 附录:程序清单
%*************************************************************
%* 程序名:ex1_4.m *
%* 程序功能:验证数值稳定性算法可控制误差. *
%*************************************************************
clc; % 清屏
clear all; % 释放所有内存变量
format long; % 按双精度显示浮点数
I=[0.63212055882856, 0.36787944117144, 0.26424111765712, 0.20727664702865, ...
0.17089341188538, 0.14553294057308, 0.12680235656154, 0.11238350406938, ... 0.10093196744492, 0.09161229300662, 0.08387707010843];
% 保留14位小数的精确值, …是Matlab中的续行符
% 算法A
IA(1) = 0.6321; % Matlab下标从1开始,所以要用IA(n+1)表示原问题中的I(n)
% 算法B
disp('n 算法A 算法B 精确值');
for n=1:11
fprintf('%2d %14.6f %14.6f %14.6f\n',n-1,IA(n),IB(n),I(n));
end
% n显示为2位整数, 其它显示为14位其中小数点后显示6位的小数
《数值计算方法》实验1报告
班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:
1. 实验名称
实验1 算法设计原则(除数绝对值不能太小) 2. 实验题目
将线性方程组增广矩阵利用初等行变换可化为
???
?
??→-???? ??→-???? ??''0
'0
''0222111
2'1222112
11
1
2222
21
112112212
1121
b a b a r r b a b a a r r b a a b a a a a a a
由此可解得'/',/'22221111a b x a b x ==.分别解增广矩阵为
161011212-?? ???和162121011-??
???
的方程组,验证除数绝对值远小于被除数绝对值的除法会导致结果失真. 3. 实验目的
验证数值算法需遵循的若干规则. 4. 基础理论
设计数值算法时,应避免除数绝对值远小于被除数绝对值的除法,否则绝对误差会被放大,使结果失真. 5. 实验环境
操作系统:Windows xp ; 程序设计语言:Matlab
6. 实验过程
用二维数组A 和B 存放方程组的增广矩阵,利用题目所给初等行变换求解方程组. 7. 结果与分析
第1种顺序的方程组的解为x = ,y = ;
第2种顺序的方程组的解为x = ,y = . 分析:
8. 附录:程序清单
%************************************************************* %* 程 序 名:ex1_5.m * %* 程序功能:验证除数的绝对值太小可能会放大误差. * %*************************************************************
clc;
A=[1e-16, 1, 1; 2, 1, 2];
B=[2, 1, 2; 1e-16, 1, 1]; % 增广矩阵
% 方程组A
% m = - a_{21}/a_{11} 是第2行加第1行的倍数
% 消去a_{21}
% m = - a_{12}/a_{22} 是第1行加第2行的倍数
% 消去a_{12}, 系数矩阵成对角线
% 未知数x1的值
% 未知数x2的值
disp(['方程组A的解: x1=',num2str(A(1,3)),', x2=',num2str(A(2,3))]);
disp(' ');
% 方程组B
% m = - b_{21}/b_{11} 是第2行加第1行的倍数
% 消去b_{21}
% m = - b_{12}/b_{22} 是第1行加第2行的倍数
% 消去b_{12}, 系数矩阵成对角线
% 未知数x1的值
% 未知数x2的值
disp(['方程组B的解: x1=',num2str(B(1,3)),', x2=',num2str(B(2,3))]);
班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:
1. 实验名称
实验2 非线性方程的迭代解法(之简单迭代法) 2. 实验题目
用简单迭代法求方程01042
3
=-+x x 在区间[1,2]内的一个实根,取绝对误差限为
410-.
3. 实验目的
掌握非线性方程的简单迭代法. 4. 基础理论
简单迭代法:将方程0)(=x f 改写成等价形式)(x x ?=,从初值0x 开始,使用迭代公式)(1k k x x ?=+可以得到一个数列,若该数列收敛,则其极限即为原方程的解.取数列中适当的项可作为近似解. 5. 实验环境
操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程
7. 结果与分析
8. 附录:程序清单
班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:
1. 实验名称
实验2 非线性方程的迭代解法(之Newton 迭代法) 2. 实验题目
用Newton 迭代法求方程01042
3
=-+x x 在区间[1,2]内的一个实根,取绝对误差限为
410-.
3. 实验目的
掌握求解非线性方程的Newton 迭代法. 4. 基础理论
Newton 迭代法:解方程0)(=x f 的Newton 迭代公式为)
(')
(1k k k k x f x f x x -=+.
5. 实验环境
操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程
7. 结果与分析
8. 附录:程序清单
班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:
1. 实验名称
实验2 非线性方程的迭代解法(之对分区间法) 2. 实验题目
用对分区间法求方程3
10x x --=在区间[1, 1.5]内的一个实根,取绝对误差限为4
10-. 3. 实验目的
掌握求解非线性方程的对分区间法. 4. 基础理论
对分区间法:取[a ,b ]的中点p ,若f (p ) ≈ 0或b – a < ε,则p 为方程0)(=x f 的近似解; 若f (a ) f (p ) < 0,则说明根在区间取[a ,p ]中;否则,根在区间取[p ,b ]中.将新的有根区间记为 [a 1,b 1],对该区间不断重复上述步骤,即可得到方程的近似根. 5. 实验环境
操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程
用宏定义函数f (x );
为了循环方便,得到的新的有根区间始终用[a ,b ]表示; 由于新的有根区间可能仍以a 为左端点,这样会反复使用函数值f (a ),为减少运算次数,将这个函数值保存在一个变量fa 中;
同样在判断新的有根区间时用到函数值f (p ),若新的有根区间以p 为左端点,则下一次用到的f (a )实际上就是现在的f (p ),为减少运算次数,将这个函数值保存在一个变量fp 中.
算法的伪代码描述:
Input :区间端点a ,b ;精度要求(即误差限)ε;函数f (x );最大对分次数N
7. 结果与分析
8. 附录:程序清单
说明: 源程序中带有数字的空行,对应着算法描述中的行号
%**********************************************************
%* 程序名:Bisection.m *
%* 程序功能:使用二分法求解非线性方程. *
%**********************************************************
f=inline('x^3-x-1'); % 定义函数f(x)
a=input('有根区间左端点: a=');
b=input('右端点:b=');
epsilon=input('误差限:epsilona=');
N=input('最大对分次数: N=');
1 % 对分次数计数器n置1
2 % 左端点的函数值给变量fa
fprintf('\n k p f(p) a(k) f(a(k))');
fprintf(' b(k) b-a\n');
% 显示表头
fprintf('%2d%36.6f%12.6f%12.6f%12.6f\n',0,a,fa,b,b-a);
% 占2位其中0位小数显示步数0, 共12位其中小数6位显示各值
3 % while n≤ N
4 % 取区间中点p
5 % 求p点函数值给变量fp
fprintf('%2d%12.6f%12.6f',n,p,fp); % 输出迭代过程中的中点信息p和f(p)
6 % 如果f(p)=0或b-a的一半小于误差限ε
fprintf('\n\n近似解为:%f\n',p); % 则输出近似根p (7)
return; % 并结束程序(7)
8
9 % 计数器加1
10 % 若f(a)与f(p)同号
11 % 则取右半区间为新的求根区间, 即a取作p
12 % 保存新区间左端点的函数值
13 % 否则
14 % 左半区间为新的求根区间, 即b取作p
15
fprintf('%12.6f%12.6f%12.6f%12.6f\n',a,fa,b,b-a);
% 显示新区间端点及左端函数值、区间长度
16
fprintf('\n\n经过%d次迭代后未达到精度要求.\n',N); % 输出错误信息(行17)
《数值计算方法》实验2报告
班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:
1. 实验名称
实验2 非线性方程的迭代解法(之Aitken-Steffensen 加速法) 2. 实验题目
用Aitken-Steffensen 加速法求方程01042
3
=-+x x 在区间[1,2]内的一个实根,取绝对误差限为4
10-.
3. 实验目的
熟悉求解非线性方程的Aitken-Steffensen 加速法. 4. 基础理论
将方程0)(=x f 改写成等价形式)(x x ?=,得到从初值0x 开始的迭代公式
)(1k k x x ?=+后,基于迭代公式)(1k k x x ?=+的Aitken-Steffensen 加速法是通过“迭代-再迭
代-加速”完成迭代的,具体过程为
k
k k k k k k k k k k x y z z y x x y z x y +---
===+2)(),(),(2
1
??. 5. 实验环境
操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程
为了验证Aitken-Steffensen 加速法可以把一些不收敛的迭代加速成迭代收敛,我们使用将方程组变形为31021x x -=
,取迭代函数3102
1)(x x -=?,并利用宏定义出迭代函数.
由于不用保存迭代过程,所以用x0表示初值同时也存放前一步迭代的值,y 和z 是迭代过程中产生的y k 和z k ,x 存放新迭代的结果.
算法的伪代码描述:
Input :初值x 0;精度要求(即误差限)ε;迭代函数φ(x );最大迭代次数N
7. 结果与分析
8. 附录:程序清单
%*************************************************************
%* 程序名:Aitken_Steffensen.m *
%* 程序功能:用Aitken-Steffensen加速法求方程. *
%*************************************************************
clc;
clear all;
phi=inline('0.5 * sqrt( 10 - x^3)'); % 迭代函数
x0=input('初值: x0 = ');
epsilon=input('误差限: epsilon=');
N=input('最大迭代次数: N=');
disp(' n 迭代中间值y(n-1) 再迭代结构z(n-1) 加速后的近似值x(n)');
fprintf('%2d%54.6f\n',0,x0);
% 占2位整数显示步数0, 为了对齐, 占54位小数6位显示x0
1 % n是计数器
2 % while n<=N
y= 3 ; % 迭代
z= 3 ; % 再迭代
x= 3 ; % 加速
% x0初值及前一步的近似值, y和z是中间变量, x是下一步的近似值
fprintf('%2d%18.6f%18.6f%18.6f\n',n,y,z,x);
% 显示中间值和迭代近似值
6 % 如果与上一步近似解差的绝对值不超过误差限
fprintf('\n\n 近似解x≈x(%d)≈%f\n',n,x);
% 则输出近似根(7),可简略为: fprintf('\n\n近似解x=%f',x);
return; % 并结束程序(7)
8 % 相当于endif
9 % 计数器加1
10 % 新近似值x作为下一次迭代的初值
11
fprintf('\n 迭代%d次还不满足误差要求.\n\n',N); %输出错误信息(12)
《数值计算方法》实验2报告
班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩:
1. 实验名称
实验2 非线性方程的迭代解法(之Newton 下山法) 2. 实验题目
用Newton 下山法求方程01042
3
=-+x x 在区间[1,2]内的一个实根,取绝对误差限为
410-.
3. 实验目的
熟悉非线性方程的Newton 下山法. 4. 基础理论
Newton 下山法:Newton 下山法公式为)
(')
(1k k k k k x f x f x x λ-=+,使|)(||)(|1k k x f x f <+,
其中10≤ 5. 实验环境 操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程 定义函数f(x)和df(x),其中df(x)是f(x)的导函数. 每步迭代时先取下山因子为1,尝试迭代,判断尝试结果是否满足下山因子,若满足则作为这步的迭代结果;否则将下山因子减半,然后再尝试.为防止当前的x k 是极小值点,附近不会有满足下述条件的其它点,使尝试陷入死循环,同时计算机中能表示出的浮点数也有下界,因此我们设置了最大尝试次数.当超过最大尝试次数时,不再进行下山尝试. 由于反复尝试迭代且要判断下山条件,所以f (x 0)和f …(x 0)会反复使用,为避免重复计算浪费运行时间,将这两个值分别保存在变量fx0和dfx0. 而尝试产生的节点,判断下山条件时要用到它的函数值,若尝试成功,这个点会作为下一步的初值再使用,所以把该点的函数值也保存在变量fx 中. 算法的伪代码描述: Input :初值x 0;精度要求(即误差限)ε;函数及其导函数f (x )和f?(x);最大迭代次数N ;K 下山尝试最大次数 7. 结果与分析 8. 附录:程序清单 %************************************************************* %* 程序名:NewtonDownhill.m * %* 程序功能:用Newton下山法求解非线性方程. * %************************************************************* clc; clear all; f=inline('x^3-x-1'); % 函数f(x) df=inline('3*x^2-1'); % 函数f(x)的导函数 x0=input('初值: x0 = '); epsilon=input('误差限: epsilon='); N=input('最大迭代次数: N='); K=input('最大下山尝试次数: K='); 1 % 迭代次数计数器 2 % 存x0点函数值 fprintf('\n\n n x(n) f(x(n))\n'); % 显示表头 fprintf('%2d%14.6f%14.6f\n',0,x0,fx0); % 2位整数显示0, 共14位小数6位显示x0和fx0 3 % while n ≤ N disp(''); % 换行显示下山尝试过程的表头 disp(' 下山因子尝试x(n) 对应f(x(n)) 满足下山条件'); disp(''); 4 % 存x0点导数值, 每次下山尝试不用重新计算 if dfx0==0 % 导数为0不能迭代 disp(…无法进行Newton迭代?); return; end lambda=1.0; % 下山因子从1开始尝试 k=1; % k下山尝试次数计数器 while k<=K % 下山最多尝试K次 % 下山公式 fx=f(x); % 函数值 fprintf('%22.6f%14.6f%14.6f',lambda,x,fx); % 显示尝试结果 if (abs(fx) fprintf(' 满足\n'); break; % 是, 则退出下山尝试的循环else fprintf(' 不满足\n'); end lambda=lambda/2; % 不是, 则下山因子减半 k=k+1; % 计数器加1 end if k>K fprintf('\n 下山条件无法满足, 迭代失败.\n\n'); return; end fprintf('%2d%14.6f%14.6f\n',n,x,fx); % 2位整数显示步数n, 共14位小数6位显示下步迭代结果 22 % 达到精度要求否 fprintf('\n\n 方程的近似解为: x≈%f\n\n',x); % (23) return; % 达到, 则显示结果并结束程序(23) end % (24) % 用x0,fx0存放前一步的近似值和它的函数值, 进行循环迭代 25 26 27 28 fprintf('\n 迭代%d次还不满足误差要求.\n\n',N); 实验一 Matlab使用方法和程序设计 一、实验目的 1、掌握Matlab软件使用的基本方法; 2、熟悉Matlab的数据表示、基本运算和程序控制语句; 3、熟悉Matlab绘图命令及基本绘图控制; 4、熟悉Matlab程序设计的基本方法。 二、实验内容 1、帮助命令 2、矩阵运算 (1)矩阵的乘法和乘方 已知A=[1 2;3 4]:B=[5 5;7 8]:求A^2*B ( 2 )矩阵除法 已知A=[1 2 3:4 5 6:7 8 9]:B=[1 0 0:0 2 0:0 0 3],求矩阵左除A\B,右除A/B。 ( 3 )矩阵的转置及共轭转置 已知A=[5+i,2-i,1;6*i,4,9-i],求该复数矩阵的转置A',共轭转置A.' ( 4 )使用冒号选出指定元素 已知:A=[1 2 3:4 5 6:7 8 9];求A中第3列前2个元素;A中第2、3行元素。 ( 5 )方括号[] 用magic函数生成一个4阶魔术矩阵,删除该矩阵的第四列 3、多项式 (1)求多项式P(x)=x3-2x-4的根 ( 2 )已知A=[1.2 3 5 0.9;5 1.7 5 6;3 9 0 1;1 2 3 4].,构造多项式,并计算多项式值为20的解。 4、基本绘图命令 ( 1 ) 绘制余弦曲线 ] 2,0[ ), cos(π ∈ =t t y 。 ( 2 ) 在同一坐标系中绘制曲线 ] 2,0[ ), 5.0 sin( ), 25 .0 cos( yπ ∈ - = - =t t y t 5、基本绘图控制 绘制 ] 4,0[π 区间上的y=10sint曲线,并要求: (1)线形为点划线,颜色为红色,数据点标记为加号; (2)坐标轴控制:显示范围,刻度线,比例,网络线; (3)标注控制:坐标轴名称,标题,相应文本。 6、基本程序设计 (1)编写命令文件:计算1+2+....+n<2000时的最大n值; (2)编写函数文件:分别用n和which循环结构编写程序,求2的0到n次幂的和. n=input('输入正数n:') ji=1: for i=1:n; ji=ji+2^i: end ji input('输入正数n:') ji-1:i-1: While i<=n ji=ji+2^i; i=i+1; end ji (3)如果想对一个变量x赋值,当从键盘输入y或Y时,x自动赋为1;当从键盘输入n或N时,x自 动赋为0;输入其他字符时终止程序。 k=input('shuruX:'.'s'): if k=='y' k=='Y' x=1 ; else k=='n' k=='N' x=0; else ruturn end >> n=input('输入正数n:') 输入正数n:20 n =20 《数值计算方法》实验指导 (Matlab 版) 肇庆学院数学与统计学学院 计算方法课程组 1. 实验名称 实验1 算法设计原则验证(之相近数相减、大数吃小数和简化计算步骤) 2. 实验题目 有效数字的损失. 123 )与1000个较小的数(3 10 15)的和,验证 大数吃小数的现象. (3)分别用直接法和秦九韶算法计算多项式 P(x) a 0x n a 1x n 1 在x =1.00037 处的值?验证简化计算步骤能减少运算时间. n 1 对于第(3)题中的多项式P (x ),直接逐项计算需要n (n 1) 2 1 次乘法 和n 次加法,使用秦九韶算法 P(x) (((a °x ajx a 2)x a . 则只需要n 次乘法和n 次加法. 3. 实验目的 验证数值算法需遵循的若干规则. 4. 基础理论 设计数值算法时,应避免两个相近的数相减、防止大数吃小数、简化计算步骤减少运算 次数以减少运算时间并降低舍入误差的积累. 两相近的数相减会损失有效数字的个数, 用一 《数值计算方法》实验 1报告 班级: 20xx 级 XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩: ⑴取 z 1016,计算z 1 Z 和 1/(、z 1 Z),验证两个相近的数相减会造成 (2)按不同顺序求一个较大的数( a n 1 X a n 个大数依次加小数,小数会被大数吃掉,乘法运算次数太多会增加运算时间. 5.实验环境 操作系统:Win dows xp ;程序设计语言:Matlab 6.实验过程 (1)直接计算并比较; (2)法1 :大数逐个加1000个小数,法2 :先把1000个小数相加再与大数加; (3)将由高次项到低次项的系数保存到数组A[n]中,其中n为多项式次数. 7.结果与分析 (1)计算的~1V Z = _______________________________ ,1/( ~1 < z) ____________________ . 分析: (2)123逐次加1000个3 10 6的和是_________________________ ,先将1000个3 10 6相 加,再用这个和与123相加得_______________________ . 分析: (3)计算__________ 次的多项式: 直接计算的结果是___________________ ,用时___________________ ; 用秦九韶算法计算的结果是____________________ ,用时 ___________________ 分析: 实验一MATLAB 工作环境熟悉及简单命令的执行 一、 实验目的:熟悉MATLAB 的工作环境,学会使用MATLAB 进行一些简单的运算。 二、 实验内容:MATLAB 的启动和退出,熟悉MATLAB 的桌面(Desktop ),包括菜单 (Menu )、工具条(T oolbar )、命令窗口(Command Window)、历史命令窗口、工作 空间(Workspace)等;完成一些基本的矩阵操作;学习使用在线帮助系统。 三、实验步骤: 1、启动MATLAB ,熟悉MATLAB 的桌面。 2、在命令窗口执行命令完成以下运算,观察workspace 的变化,记录运算结果。 (1)(365-52?2-70)÷3; (2)area=pi*2.5^2; (3)已知x=3,y=4,在MATLAB 中求z : ()23 2y x y x z -= ; (4)将下面的矩阵赋值给变量m1,在workspace 中察看m1在内存中占用的字节数。 m1=???? ? ???? ???11514412679810115133216 执行以下命令 >>m1( 2 , 3 ) >>m1( 11 ) >>m1( : , 3 ) >>m1( 2 : 3 , 1 : 3 ) >>m1( 1 ,4 ) + m1( 2 ,3 ) + m1( 3 ,2 ) + m1( 4 ,1) (5)执行命令>>help abs 查看函数abs 的用法及用途,计算abs( 3 + 4i ); (6)执行命令 >>x=0:0.1:6*pi; >>y=5*sin(x); >>plot(x,y) (7)运行MATLAB 的演示程序,>>demo ,以便对MATLAB 有一个总体了解。 四、思考题 1、以下变量名是否合法?为什么? (1)x2; (2)3col ; (3)_row ; (4)for ; 数值分析编程作业 2012年12月 第二章 14.考虑梯形电阻电路的设计,电路如下: 电路中的各个电流{i1,i2,…,i8}须满足下列线性方程组: 12 123 234 345 456 567 678 78 22/ 2520 2520 2520 2520 2520 2520 250 i i V R i i i i i i i i i i i i i i i i i i i i -= -+-= -+-= -+-= -+-= -+-= -+-= -+= 这是一个三对角方程组。设V=220V,R=27Ω,运用追赶法,求各段电路的电流量。Matlab程序如下: function chase () %追赶法求梯形电路中各段的电流量 a=input('请输入下主对角线向量a='); b=input('请输入主对角线向量b='); c=input('请输入上主对角线向量c='); d=input('请输入右端向量d='); n=input('请输入系数矩阵维数n='); u(1)=b(1); for i=2:n l(i)=a(i)/u(i-1); u(i)=b(i)-c(i-1)*l(i); end y(1)=d(1); for i=2:n y(i)=d(i)-l(i)*y(i-1); end x(n)=y(n)/u(n); i=n-1; while i>0 x(i)=(y(i)-c(i)*x(i+1))/u(i); i=i-1; end x 输入如下: 请输入下主对角线向量a=[0,-2,-2,-2,-2,-2,-2,-2]; 请输入主对角线向量b=[2,5,5,5,5,5,5,5]; 请输入上主对角线向量c=[-2,-2,-2,-2,-2,-2,-2,0]; 请输入方程组右端向量d=[220/27,0,0,0,0,0,0,0]; 请输入系数矩阵阶数n=8 运行结果如下: x = 8.1478 4.0737 2.0365 1.0175 0.5073 0.2506 0.1194 0.0477 第三章 14.试分别用(1)Jacobi 迭代法;(2)Gauss-Seidel 迭代法解线性方程组 1234510123412191232721735143231211743511512x x x x x ?????? ??????---????????????=--?????? --?????? ??????---?????? 迭代初始向量 (0)(0,0,0,0,0)T x =。 (1)雅可比迭代法程序如下: function jacobi() %Jacobi 迭代法 a=input('请输入系数矩阵a='); b=input('请输入右端向量b='); x0=input('请输入初始向量x0='); n=input('请输入系数矩阵阶数n='); er=input('请输入允许误差er='); N=input('请输入最大迭代次数N='); for i=1:n for j=1:n if i==j d(i,j)=a(i,j); else d(i,j)=0; end end end m=eye(5)-d\a; %迭代矩阵 g=d\b; x=m*x0+g; k=1; while k<=N %进行迭代 for i=1:5 if max(abs(x(i)-x0(i))) >er x=m*x+g; k=k+1; M A T L A B 实 验 指 导 书 电子信息工程学院 2012.02 目录 实验一MATLAB安装与界面 (1) 实验二MATLAB符号计算与应用 (2) 实验三MATLAB数值数组与向量化运算 (4) 实验四MATLAB数值计算 (7) 实验五MATLAB可视化 (10) 实验六M文件及MATLAB综合应用 (16) 实验一Matlab安装与界面 【实验目的】 【实验原理】 1. 安装MATALB软件,并按理论教学内容逐一熟悉软件界面及软件特点。 【实验仪器】 1.配置在PIV 2.0GHZ/512MB以上的PC机; 2. MATALB7.0以上版本软件。 【实验内容及步骤】 1. 完成MATLAB软件安装; 2.熟悉MATLAB运行环境。 (1)命令窗口的使用。 (2)工作空间窗口的使用。 (3)工作目录、搜索路径的设置。 (4)命令历史记录窗口的使用。 (5)了解各菜单的功能。 3. 图示复数 i z i z2 1 ,3 4 2 1 + = + =的和展示MATLAB的可视化能力; 4. 画出衰减振荡曲线 t e y t 3 sin 3 - =,t的取值范围是] 4,0[π;展示数组运算的优点及 MATLAB的可视化能力。 5. 创建一个M文件,输入步骤4的相关程序,运行程序并变换名称保存,将工作空间中的y变量的MAT文件变换路径输出保存,然后再向内存装载MAT文件。 6. 以命令窗口中输入help Laplace、help浏览器中搜索两种方式体会MATLAB帮助系统的特点和功能。 【实验报告要求】 1.整理实验结果。 2.总结实验心得体会 第一章绪论 1.设0x >,x 的相对误差为δ,求ln x 的误差。 解:近似值* x 的相对误差为* **** r e x x e x x δ-= == 而ln x 的误差为()1ln *ln *ln ** e x x x e x =-≈ 进而有(ln *)x εδ≈ 2.设x 的相对误差为2%,求n x 的相对误差。 解:设()n f x x =,则函数的条件数为'() | |() p xf x C f x = 又1 '()n f x nx -= , 1 ||n p x nx C n n -?∴== 又((*))(*)r p r x n C x εε≈? 且(*)r e x 为2 ((*))0.02n r x n ε∴≈ 3.下列各数都是经过四舍五入得到的近似数,即误差限不超过最后一位的半个单位,试指 出它们是几位有效数字:*1 1.1021x =,*20.031x =, *3385.6x =, * 456.430x =,*57 1.0.x =? 解:*1 1.1021x =是五位有效数字; *20.031x =是二位有效数字; *3385.6x =是四位有效数字; *456.430x =是五位有效数字; *57 1.0.x =?是二位有效数字。 4.利用公式(2.3)求下列各近似值的误差限:(1) * * * 124x x x ++,(2) ***123x x x ,(3) **24/x x . 其中****1234 ,,,x x x x 均为第3题所给的数。 解: *4 1* 3 2* 13* 3 4* 1 51()1021()1021()1021()1021()102 x x x x x εεεεε-----=?=?=?=?=? *** 124***1244333 (1)()()()() 1111010102221.0510x x x x x x εεεε----++=++=?+?+?=? *** 123*********123231132143 (2)() ()()() 111 1.10210.031100.031385.610 1.1021385.610222 0.215 x x x x x x x x x x x x εεεε---=++=???+???+???≈ ** 24**** 24422 *4 33 5 (3)(/) ()() 11 0.0311056.430102256.43056.430 10x x x x x x x εεε---+≈ ??+??= ?= 5计算球体积要使相对误差限为1,问度量半径R 时允许的相对误差限是多少? 解:球体体积为34 3 V R π= 则何种函数的条件数为 2 3'4343 p R V R R C V R ππ=== (*)(*)3(*)r p r r V C R R εεε∴≈= 又(*)1r V ε= 第2章牛顿插值法实现 参考文献:[1]岑宝俊. 牛顿插值法在凸轮曲线修正设计中的应用[J]. 机械工程师,2009,10:54-55. 求牛顿插值多项式和差商的MA TLAB 主程序: function[A,C,L,wcgs,Cw]=newpoly(X,Y) n=length(X);A=zeros(n,n);A(:,1) =Y'; s=0.0;p=1.0;q=1.0;c1=1.0; for j=2:n for i=j:n A(i,j)=(A(i,j-1)-A(i-1,j-1))/(X(i)-X(i-j+1)); end b=poly(X(j-1));q1=conv(q,b);c1=c1*j;q=q1; end C=A(n,n);b=poly(X(n));q1=conv(q1,b); for k=(n-1):-1:1 C=conv(C,poly(X(k)));d=length(C);C(d)=C(d)+A(k,k); end L(k,:)=poly2sym(C);Q=poly2sym(q1); syms M wcgs=M*Q/c1;Cw=q1/c1; (1)保存名为newpoly.m 的M 文件 (2)输入MA TLAB 程序 >> X=[242,243,249,250]; >> Y=[13.681,13.526,13.098,13.095]; >> [A,C,L,wcgs,Cw]=newpoly(X,Y) 输出3阶牛顿插值多项式L 及其系数向量C 差商的矩阵A ,插值余项wcgs 及其 ) ()()1(ξ+n n f x R 的系数向量Cw 。 A = 13.6810 0 0 0 13.5260 -0.1550 0 0 13.0980 -0.0713 0.0120 0 13.0950 -0.0030 0.0098 -0.0003 C = 1.0e+003 * 第二讲MATLAB的数值分析 2-1矩阵运算与数组运算 矩阵运算和数组运算是MATLAB数值运算的两大类型,矩阵运算是按矩阵的运算规则进行的,而数组运算则是按数组元素逐一进行的。因此,在进行某些运算(如乘、除)时,矩阵运算和数组运算有着较大的差别。在MATLAB中,可以对矩阵进行数组运算,这时是把矩阵视为数组,运算按数组的运算规则。也可以对数组进行矩阵运算,这时是把数组视为矩阵,运算按矩阵的运算规则进行。 1、矩阵加减与数组加减 矩阵加减与数组加减运算效果一致,运算符也相同,可分为两种情况: (1)若参与运算的两矩阵(数组)的维数相同,则加减运算的结果是将两矩阵的对应元素进行加减,如 A=[1 1 1;2 2 2;3 3 3]; B=A; A+B ans= 2 2 2 4 4 4 6 6 6 (2)若参与运算的两矩阵之一为标量(1*1的矩阵),则加减运算的结果是将矩阵(数组)的每一元素与该标量逐一相加减,如 A=[1 1 1;2 2 2;3 3 3]; A+2 ans= 3 3 3 4 4 4 5 5 5 2、矩阵乘与数组乘 (1)矩阵乘 矩阵乘与数组乘有着较大差别,运算结果也完全不同。矩阵乘的运算符为“*”,运算是按矩阵的乘法规则进行,即参与乘运算的两矩阵的内维必须相同。设A、B为参与乘运算的 =A m×k B k×n。因此,参与运两矩阵,C为A和B的矩阵乘的结果,则它们必须满足关系C m ×n 算的两矩阵的顺序不能任意调换,因为A*B和B*A计算结果很可能是完全不一样的。如:A=[1 1 1;2 2 2;3 3 3]; B=A; A*B ans= 6 6 6 12 12 12 18 18 18 F=ones(1,3); G=ones(3,1); F*G ans 3 G*F ans= 1 1 1 1 1 1 1 1 1 (2)数组乘 数组乘的运算符为“.*”,运算符中的点号不能遗漏,也不能随意加空格符。参加数组乘运算的两数组的大小必须相等(即同维数组)。数组乘的结果是将两同维数组(矩阵)的对应元素逐一相乘,因此,A.*B和B.*A的计算结果是完全相同的,如: A=[1 1 1 1 1;2 2 2 2 2;3 3 3 3 3]; B=A; A.*B ans= 1 1 1 1 1 4 4 4 4 4 9 9 9 9 9 B.*A ans= 1 1 1 1 1 4 4 4 4 4 9 9 9 9 9 由于矩阵运算和数组运算的差异,能进行数组乘运算的两矩阵,不一定能进行矩阵乘运算。如 A=ones(1,3); B=A; A.*B ans= 1 1 1 A*A ???Error using= => 列主元法 function lianzhuyuan(A,b) n=input('请输入n:') %选择阶数A=zeros(n,n); %系数矩阵A b=zeros(n,1); %矩阵b X=zeros(n,1); %解X for i=1:n for j=1:n A(i,j)=(1/(i+j-1)); %生成hilbert矩阵A end b(i,1)=sum(A(i,:)); %生成矩阵b end for i=1:n-1 j=i; top=max(abs(A(i:n,j))); %列主元 k=j; while abs(A(k,j))~=top %列主元所在行 k=k+1; end for z=1:n %交换主元所在行a1=A(i,z); A(i,z)=A(k,z); A(k,z)=a1; end a2=b(i,1); b(i,1)=b(k,1); b(k,1)=a2; for s=i+1:n %消去算法开始m=A(s,j)/A(i,j); %化简为上三角矩阵 A(s,j)=0; for p=i+1:n A(s,p)=A(s,p)-m*A(i,p); end b(s,1)=b(s,1)-m*b(i,1); end end X(n,1)=b(n,1)/A(n,n); %回代开始 for i=n-1:-1:1 s=0; %初始化s for j=i+1:n s=s+A(i,j)*X(j,1); end X(i,1)=(b(i,1)-s)/A(i,i); end X 欧拉法 clc clear % 欧拉法 p=10; %贝塔的取值 T=10; %t取值的上限 y1=1; %y1的初值 r1=1; %y2的初值 %输入步长h的值 h=input('欧拉法please input number(h=1 0.5 0.25 0.125 0.0625):h=') ; if h>1 or h<0 break end S1=0:T/h; S2=0:T/h; S3=0:T/h; S4=0:T/h; i=1; % 迭代过程 for t=0:h:T Y=(exp(-t)); R=(1/(p-1))*exp(-t)+((p-2)/(p-1))*exp(-p*t); y=y1+h*(-y1); y1=y; r=r1+h*(y1-p*r1); r1=r; S1(i)=Y; S2(i)=R; S3(i)=y; S4(i)=r; i=i+1; end t=[0:h:T]; % 红线为解析解,'x'为数值解 plot(t,S1,'r',t,S3,'x') ************************ MATLAB上机指导书 ************************ 昆明理工大学机电学院 彭用新 2015年3月 实验三符号计算 一、操作部分:在命令窗口执行命令完成以下运算,记录运算结果。 1.findsym:帮助我们获取系统定义的自变量 f= sym('sin(a*x+b*y)'); findsym(f) 2.numden(获取分子分母), sym2poly,(获取多项式时系数)poly2sym(根据多项式系 数获得符号表达式) [n,d]=numden(sym('x*x+y')+sym('y^2')) p=sym('2*x^3+3*x^2+4'); sym2poly(p) x=[2,3,0,4]; poly2sym(x) 3. collect :合并同类项;expand:展开多项式;horner: 分解成嵌套形式;factor:因式 分解;simplify: 对表达式化简 syms x y; collect(x^2*y+y*x-x^2-2*x) collect((x+y)*(x^2+y^2+1), y) syms x y; expand((x-2)*(x-4)) syms x;horner(x^3-6*x^2+11*x-6) syms x;factor(x^3-6*x^2+11*x-6) syms x;simplify((x^2+5*x+6)/(x+2)) 4. finverse :求得符号函数的反函数。 syms x y; finverse(1/tan(x)) f= x^2+y; finverse(f,y) finverse(f) https://www.wendangku.net/doc/857762341.html,pose 求符号函数的复合函数 syms x y; f = 1/(1 + x^2); g = sin(y); compose(f,g) 6. subs :表达式替换。 syms a b;subs(a+b,a,4) 第一章 绪 论 本章以误差为主线,介绍了计算方法课程的特点,并概略描述了与算法相关的基本概念,如收敛性、稳定性,其次给出了误差的度量方法以及误差的传播规律,最后,结合数值实验指出了算法设计时应注意的问题. §1.1 引 言 计算方法以科学与工程等领域所建立的数学模型为求解对象,目的是在有限的时间段内利用有限的计算工具计算出模型的有效解答。 由于科学与工程问题的多样性和复杂性,所建立的数学模型也是各种各样的、复杂的. 复杂性表现在如下几个方面:求解系统的规模很大,多种因素之间的非线性耦合,海量的数据处理等等,这样就使得在其它课程中学到的分析求解方法因计算量庞大而不能得到计算结果,且更多的复杂数学模型没有分析求解方法. 这门课程则是针对从各种各样的数学模型中抽象出或转化出的典型问题,介绍有效的串行求解算法,它们包括 (1) 非线性方程的近似求解方法; (2) 线性代数方程组的求解方法; (3) 函数的插值近似和数据的拟合近似; (4) 积分和微分的近似计算方法; (5) 常微分方程初值问题的数值解法; (6) 优化问题的近似解法;等等 从如上内容可以看出,计算方法的显著特点之一是“近似”. 之所以要进行近似计算,这与我们使用的工具、追求的目标、以及参与计算的数据来源等因素有关. 计算机只能处理有限数据,只能区分、存储有限信息,而实数包含有无穷多个数据,这样,当把原始数据、中间数据、以及最终计算结果用机器数表示时就不可避免的引入了误差,称之为舍入误差. 我们需要在有限的时间段内得到运算结果,就需要将无穷的计算过程截断, 从而产生截断误差. 如 +++=! 21 !111e 的计算是无穷过程,当用 ! 1 !21!111n e n ++++= 作为e 的近似时,则需要进行有限过程的计算,但产生了 截断误差e e n -. MATLAB 编程题库 1.下面的数据表近似地满足函数2 1cx b ax y ++=,请适当变换成为线性最小二乘问题,编程求最好的系数c b a ,,,并在同一个图上画出所有数据和函数图像. 625 .0718.0801.0823.0802.0687.0606.0356.0995 .0628.0544.0008.0213.0362.0586.0931.0i i y x ---- 解: x=[-0.931 -0.586 -0.362 -0.213 0.008 0.544 0.628 0.995]'; y=[0.356 0.606 0.687 0.802 0.823 0.801 0.718 0.625]'; A=[x ones(8,1) -x.^2.*y]; z=A\y; a=z(1); b=z(2); c=z(3); xh=-1:0.1:1; yh=(a.*xh+b)./(1+c.*xh.^2); plot(x,y,'r+',xh,yh,'b*') 2.若在Matlab工作目录下已经有如下两个函数文件,写一个割线法程序,求出这两个函数 10 的近似根,并写出调用方式: 精度为10 解: >> edit gexianfa.m function [x iter]=gexianfa(f,x0,x1,tol) iter=0; while(norm(x1-x0)>tol) iter=iter+1; x=x1-feval(f,x1).*(x1-x0)./(feval(f,x1)-feval(f,x0)); x0=x1;x1=x; end >> edit f.m function v=f(x) v=x.*log(x)-1; >> edit g.m function z=g(y) z=y.^5+y-1; >> [x1 iter1]=gexianfa('f',1,3,1e-10) x1 = 1.7632 iter1 = 6 >> [x2 iter2]=gexianfa('g',0,1,1e-10) x2 = 0.7549 iter2 = 8 实验一 MATLAB语言平台及基本运算 一、实验目的 1、熟悉MATLAB基本的操作界面。 2、掌握MATLAB中变量、数组、向量等对象的生成方法。 3、掌握矩阵的生成和基本运算方法。 4、掌握MATLAB中的常用绘图命令使用方法 二、实验设备 计算机,MATLAB语言环境 三、实验指导原理 1、常见数学函数 如:输入 x=[-4.85 -2.3 -0.2 1.3 4.56 6.75],则 ceil(x)= -4 -2 0 2 5 7 fix(x) = -4 -2 0 1 4 6 floor(x) = -5 -3 -1 1 4 6 round(x) = -5 -2 0 1 5 7 系统的在线帮助 (1) help 命令: 1).当不知系统有何帮助内容时,可直接输入 help以寻求帮助: >> help(回车) 2).当想了解某一主题的内容时,如输入: >> help syntax (了解 Matlab 的语法规定) 3).当想了解某一具体的函数或命令的帮助信息时,如输入: >> help sqrt (了解函数 sqrt 的相关信息) (2) lookfor 命令 现需要完成某一具体操作,不知有何命令或函数可以完成,如输入: >> lookfor line (查找与直线、线性问题有关的函数) 3、常量与变量 系统的变量命名规则:变量名区分字母大小写;变量名必须以字母打头,其后 可以是任意字母,数字,或下划线的组合。此外,系统内部预先定义了几个有特殊意义和用途的变量,见下表: (1)数值型向量(矩阵)的输入 1).任何矩阵(向量),可以直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔;行与行之间用分号(;)分隔。所有元素处于一方括号([ ]内;例1: >> Time = [11 12 1 2 3 4 5 6 7 8 9 10] >> X_Data = [2.32 3.43;4.37 5.98] 2).系统中提供了多个命令用于输入特殊的矩阵: 上面函数的具体用法,可以用帮助命令 help 得到。如:help zeros ZEROS Zeros array. ZEROS(N) is an N-by-N matrix of zeros. ZEROS(M,N) or ZEROS([M,N]) is an M-by-N matrix of zeros.等等 4、数组(矩阵)的点运算 运算符:+(加)、-(减)、./(右除)、.\(左除)、.^(乘方), 例4: >> g = [1 2 3 4];h = [4 3 2 1]; >> s1 = g + h, s2 = g.*h, s3 = g.^h, s4 = g.^2, s5 = 2.^h 5、矩阵的运算 MATLAB基础及应用实验指导书 MATLAB基础及应用课程实验指导书 实验一软件环境和基本操作熟悉 一、实验目的 ①熟悉MATLAB 主界面,并学会简单的菜单操作。 ②学会简单的矩阵输入与信号输入。 ③掌握部分绘图函数。 二、实验内容 熟悉MATLAB操作环境,通过简单操作熟悉MATLAB的基本使用方法。 三、实验要求与步骤 1、用户第一次使用MATLAB 时,建议首先在屏幕上键入demo 命令,它将启动MATLAB 的演试程序,用户可在此演示程序中领略MATLAB 所提供的强大的运算与绘图功能。也可以键入help 进行进一步了解。 MATLAB 启动界面如图所示: MATLAB 语言最基本的赋值语句结构为:变量名列表= 表达式。表达式由操作符或其它字符,函数和变量名组成,表达式的结果为一个矩阵,显示在屏幕上,同时输送到一个变量中并存放于工作空间中以备调用。如果变量名和“= ”省略,则ans 变量将自动建立,例如键入:1900/81 ,得到输出结果:ans =23.4568 。 MATLAB 中变量命名的原则要求必须以英文字母开头,文件夹名字中可以 还包括、下划线和数字,不要使用其他的字符,更不要单纯使用数字或者中文名命名,有时在运行MATLAB 中一些莫名的错误可能就是不规范的命名引起的。这种规则包括将来为自己编写的脚本文件、函数文件命名以及为使用的变量命名也应遵循这个规则。 2、用户工作目录和当前目录的建立和设置 1)为管理方便,每个用户在使用MATLAB 前,尽量为自己建立一个专门的工作目录,即“用户目录”,用来存放自己创建应用文件。例如首先打开资源管理器,在E 驱动器下可以根据自己喜好建立一个新文件夹,但应注意:该文件夹必须以英文开头,文件夹名字中可以包括字母、下划线和数字,不要使用其他的字符,更不要单纯使用数字或者中文名命名,有时在运行MATLAB 中一些莫名的错误可能就是不规范的命名引起的,这与MATLAB 中为变量和文件名命名原则是一致的。尽管MATLAB\work 允许用户存放用户文件,但最好把它仅作为临时工作目录来使用。 2)为了用户运行方便,在开始工作前可把用户定义的目录设置为当前目录,方法是可直接在MATLAB 命令窗口桌面上方通过目录设置栏来实现。 3)把自己的工作目录加到MATLAB 搜索路径上,这样可以在任何情况下方便地调用自己的编写文件。MATLAB 工作时,基本搜索过程为:首先在工作空间,即MATLAB 内存中进行检查,看输入的指令是不是变量;如不是,则检查输入指令是不是内建函数(比如sin 函数等);如不是,则在当前目录上,检查是否有与输入指令相同的M 文件存在;如还没有,则在MATLAB 定义的搜索路径其他目录中,检查是否有该M 文件存在。设置方法是通过File 菜单下设置路径对话框进行。 3、熟悉简单的矩阵输入 1)从屏幕上输入矩阵A=[1 2 3 ;4 5 6;7 8 9] 回车 A=[1,2,3;4,5,6;7,8,9] 回车 观察输出结果。 2)试用回车代替分号,观察输出结果。 3)输入size(A) ,观察结果。 4)输入矩阵B=[9,8,7;6,5,4;3,2,1];回车 输入矩阵C=[4,5,6;7,8,9;1,2,3];回车,然后分别键入 A B C 回车观察结果。 5)选择File | new 菜单中的M-file ,输入B=[9,8,7;6,5,4;3,2,1] ;保存为 腹有诗书气自华 《数值计算方法与Matlab 》 样卷答案 一.填空题:(每空3分,共42分) 1. 8,6105.0-? 。 2.)(3)1(2)1(1)(3)1(2)1(1)(3)1(3)(3)(2)1(1)(3)(2)1(1)(2)1(2)(3)(2)(1)(3)(2)(1)(1)1(1)1(22)22()1()1(222)1()222(k k k k k k k k k k k k k k k k k k k k k k k k x x x x x x x x x x x x x x x x x x x x x x x x ωωωωωωωωωω ωωωω-+--=---?+=+--+-=---?+=++--=+--?+=+++++++++, )2,1(∈ω。 3.],[1b a C S m -∈。4. 1e 2e ---x ,???==-=?--? ,3,2,1,0;0,e 1d )(e 110k k x x g k x ,正交投影。 5. 2阶,6阶。 6.10.6658,10.9521,10.9501。 7. 4002.2)00.1(=ε,4030.2)01.1(=ε。 二.解下列各题:(每题9分,共36分) 1.解:令)1(2 3+=t x , (2分) 则??-+++=+1123 02 dt )1(25.21)1(49d 1t t x x x ???++++???++-+-≈22)6.01(25.21)6.01(9525.219 8)6.01(25.21)6.01(9549 (8分) 210631.10≈ (9分) 2.解:记系数矩阵为A, 对增广矩阵[]b A |作初等行运算, ??????????--401533933112??????????--==5.55.115 .35.405.75.401125.1,5.11,31,2l l ??????????---=45.114005.75.4011212,3l , 所以13-=x ,2)5.75.1(5.4112=-=x x ,1)1(2 1321=-+-=x x x ,即方程组的解为 [1,2,-1]T . (4分) 故系数矩阵A 的LU 分解为???? ??????--???????????---=4005.75.40112115.1015.1001A 。 (6分) 实验报告 课程名称:MATLAB基础 授课班级: 学号: 姓名: 指导老师: MATLAB实验一:MATLAB语言基本概念实验 一、实验目的: 1. 熟悉MATLAB语言及使用环境; 2.掌握MATLAB的常用命令; 3.掌握MATLAB的工作空间的使用; 4.掌握MATLAB的获得帮助的途径。 5. 掌握科学计算的有关方法,熟悉MATLAB语言及其在科学计算中的运用; 6.掌握MATLAB的命令运行方式和M文件运行方式; 7.掌握矩阵在MATLAB中的运用。 二、实验方案分析及设计: 本次实验主要目的是了解MATLAB的使用环境,以及常用的一些命令的使用;了解矩阵在MATLAB实验中的具体运用,以及相关的一些符号命令的使用。 三、实验器材: 电脑一台,MATLAB软件 四、实验步骤: 打开MATLAB程序,将实验内容中的题目依次输入MATLAB中,运行得到并记录结果,最后再对所得结果进行验证。 五、实验内容及要求: 1. 熟悉MATLAB工作空间的功能,将工作空间中的变量保存为M文件,并提取该文件中的变量。(该题只需在MATLAB环境中操作,不用在实验报告中写结果) 2.熟悉MATLAB获取帮助的途径,将所有plot开头的函数列出来,并详细给出plotfis 函数的使用方法。(该题只需在MATLAB环境中操作,不用在实验报告中写结果) 3. 输入 A=[7 1 5;2 5 6;3 1 5],B=[1 1 1; 2 2 2;3 3 3], 在命令窗口中执行下列表达式,写出实验结果并掌握其含义: A(2, 3) A(:,2) A(3,:) A(:,1:2:3) A(:,3).*B(:,2) A(:,3)*B(2,:) A*B A.*B A^2 A.^2 B/A B./A 4.输入 C=1:2:20,则 C(i)表示什么(写出实验结果)?其中i=1,2,3, (10) matlab实验指导书 实验一 MATLAB运算基础及矩阵分析与处理 一实验目的 1.熟悉启动和退出MATLAB的方法。 2.熟悉MATLAB 命令窗口的组成。 3.掌握建立矩阵的方法。 4.掌握MATLAB各种表达式的书写规则以及常用函数的使用。 5. 掌握生成特殊矩阵的方法。 6. 掌握矩阵分析的方法。 7. 用矩阵求逆解线性方程组。二实验仪器和设备装有以上计算机一台三实验原理 MATLAB 是以复杂矩阵作为基本编程单元的一种程序设计语言。它提供了各种矩阵的运算与操作,并有较强的绘图功能。基本规则 一般MATLAB命令格式为 [输出参数1,输出参数2,……]= 输出参数用方括号,输入参数用圆括号如果输出参数只有一个可不使用括号。 %后面的任意内容都将被忽略,而不作为命令执行,一般用于为代码加注 释。 可用↑、↓键来重现已输入的数据或命令。用←、→键来移动光标进行修改。所有MATLAB命令都用小写字母。 大写字母和小写字母分别表示不同的 变量。 常用预定义变量,如pi 、Inf、NaN、ans 矩阵的输入要一行一行的进行,每行各元素用空格或“,”分开,每行用 “;”分开。如 123 A456789 MATLAB书写格式为A=[1 2 3 ;4 5 6 ;7 8 9] 在MATLABZ中运行如下程序可得到A 矩阵 a=[1 2 3;4 5 6;7 8 9] a = 1 2 3 4 5 6 7 8 9 需要显示命令的计算结果时,则语句后面不加“;”号,否则要加“;”号。运行下面两种格式可以看出它 们的区别: a=[1 2 3;4 5 6;7 8 9] a=[1 2 3;4 5 6;7 8 9]; a= 1 2 3 不显示结果 4 5 6 7 8 9 当输入语句过长需要换行时,应加上“…”后再回车,则可续行输入。文件管理常用命令帮助命令 MATLAB有很多命令,因此很不容易记忆。使用HELP命 令可以得到有关命令的屏幕帮助信息。 如在MATLAB环境下直接运行HELP命令就会在屏幕上 《数字信号处理》MATLAB实验指导 实验一:离散时间信号和离散时间系统 一、 实验目的: 1、 以MA TLAB 为工具学习离散时间信号的图形表示; 2、 以课本提供的例程,练习、理解典型离散信号及其基本运算; 3、 通过MATLAB 仿真简单的离散时间系统,研究其时域特性; 4、 加深对离散系统的差分方程、冲激响应和卷积分析方法的理解。 二、 实验内容: 1、 典型序列的产生与显示; 2、 序列的简单运算; 3、 复合和复杂信号的产生与显示; 4、 离散时间系统的仿真:线性和非线性系统、时变和非时变系统的仿真; 5、 线性时不变离散时间系统:系统冲激响应、卷积运算、系统的级联、系统的稳 定性; 三、实验例程: 1、 参照课本例程产生下列序列,并用plot 、stem 好人subplot 命令绘出其图形: ①单位取样序列()n δ;②单位阶跃序列()n μ;③矩形序列RN(n),④斜变序列()n n μ。 所需输入的数据是产生序列的长度L 和抽样频率F T 。 % Program P1_1 % Generation of a Unit Sample Sequence clf; % Generate a vector from -10 to 20 n = -10:20; % Generate the unit sample sequence u = [zeros(1,10) 1 zeros(1,20)]; % Plot the unit sample sequence stem(n,u); xlabel('Time index n');ylabel('Amplitude'); title('Unit Sample Sequence'); axis([-10 20 0 1.2]); 2、 编写MATLAB 实指数序列程序, % Program P1_3 % Generation of a real exponential sequence clf; n = 0:35; a = 1.2; K = 0.2; x = K*a.^n;Matlab实验指导书
数值计算方法实验指导(Matlab版)
MATLAB实验指导书
数值分析Matlab作业
《MATLAB应用技术》实验指导书
数值分析第一章绪论习题答案
数值分析的matlab实现
第2讲 matlab的数值分析
数值分析的MATLAB程序
昆明理工大学MATLAB实验指导书(第二次实验)
数值计算方法第一章
同济大学数值分析matlab编程题汇编
MATLAB实验指导书(学生定稿)
MATLAB基础及应用实验指导书
数值计算方法与Matlab样卷答案
MATLAB实验指导
matlab实验指导书
matlab实验指导