《应用计算方法教程》matlab作业二
《应用计算方法教程》MatLab作业

6-1 试验目的 计算特征值,实现算法试验内容:随机产生一个10阶整数矩阵,各数均在-5和5之间。
(1) 用MATLAB 函数“eig”求矩阵全部特征值。
(2) 用幂法求A 的主特征值及对应的特征向量。
(3) 用基本QR 算法求全部特征值(可用MATLAB 函数“qr ”实现矩阵的QR 分解)。
原理幂法:设矩阵A 的特征值为12n ||>||||λλλ≥⋅⋅⋅≥并设A 有完全的特征向量系12,,,n χχχ⋅⋅⋅(它们线性无关),则对任意一个非零向量0n V R ∈所构造的向量序列1k k V AV -=有11()lim ()k j k k jV V λ→∞-=,其中()k j V 表示向量的第j 个分量。
为避免逐次迭代向量k V 不为零的分量变得很大(1||1λ> 时)或很小(1||1λ< 时),将每一步的k V 按其模最大的元素进行归一化。
具体过程如下:选择初始向量0V ,令1max(),,,1kk k k k k kV m V U V AU k m +===≥,当k 充分大时1111,max()max()k k U V χλχ+≈≈。
QR 法求全部特征值:11111222111,1,2,3,k k k k k A A Q R R Q A Q R k R Q A Q R +++==⋅⎧⎪⋅==⋅⎪=⋅⋅⋅⎨⋅⋅⋅⎪⎪⋅==⋅⎩ 由于此题的矩阵是10阶的,上述算法计算时间过长,考虑采用改进算法——移位加速。
迭代格式:1k k k kk k k k A q I Q R A R Q q I +-=⎧⎨=+⎩ 计算k A 右下角的二阶矩阵()()1,11,()(),1,k k nn n n k k n n n n a a a a ----⎛⎫ ⎪ ⎪⎝⎭的特征值()()1,k k n n λλ-,当()()1,k k n n λλ-为实数时,选k q 为()()1,k k n n λλ-中最接近(),k n n a 的。
matlab课后习题解答第二章doc

f=A*((1+t/tao)*(heaviside(t+tao)-heaviside(t))+(1-t/tao)*(heaviside(t)-heaviside(t-tao)));
(2)数值计算复验
xx=-10*pi:pi/100:1.7*pi;
sn=trapz(exp(-abs(xx)).*abs(sin(xx)))*pi/100
sn =
1.0877
110
〖目的〗
变上限二重积分的符号计算法。
〖解答〗
syms x y
f=x^2+y^2;
r=int(int(f,y,1,x^2),x,1,2)
d =
1/(a11*a22*a33 - a11*a23*a32 - a12*a21*a33 + a12*a23*a31 + a13*a21*a32 - a13*a22*a31)
16
〖目的〗
symsum, subs的应用。
从实例中,感受指令所给出的关于 符号解的含义。
〖解答〗
symsx k
f=x^(k);
y3d =
1.2935547796148951782413405453553
113
〖目的〗
符号离散卷积直接法和变换法。
〖解答〗
(1)直接法
syms a b kn
x=a^k;
h=b^k;
w=symsum(subs(h,k,n)*subs(x,k,k-n),n,0,k)%据定义
y1=simple(w)
w =
〖解答〗
syms x
syms n positive
matlab程序设计与应用第二版习题答案

matlab程序设计与应用第二版习题答案Matlab程序设计与应用第二版习题答案Matlab是一种强大的数学软件,广泛应用于科学计算、数据分析和工程设计等领域。
《Matlab程序设计与应用》是一本经典的教材,对于学习和掌握Matlab编程语言具有重要的意义。
本文将为大家提供《Matlab程序设计与应用第二版》中部分习题的答案,帮助读者更好地理解和应用Matlab。
第一章:Matlab基础1.1 基本操作1. a = 3; b = 4; c = sqrt(a^2 + b^2); disp(c);2. x = linspace(-pi, pi, 100); y = sin(x); plot(x, y);3. A = [1 2 3; 4 5 6; 7 8 9]; B = [9 8 7; 6 5 4; 3 2 1]; C = A + B; disp(C);1.2 控制结构1. for i = 1:10disp(i);end2. n = 0; sum = 0; while sum < 100n = n + 1;sum = sum + n;enddisp(n);3. x = 5; if x > 0disp('x is positive');elseif x < 0disp('x is negative');elsedisp('x is zero');end第二章:向量和矩阵运算2.1 向量运算1. A = [1 2 3]; B = [4 5 6]; C = A .* B; disp(C);2. A = [1 2 3]; B = [4 5 6]; C = A ./ B; disp(C);3. A = [1 2 3]; B = [4 5 6]; C = dot(A, B); disp(C);2.2 矩阵运算1. A = [1 2 3; 4 5 6]; B = [7 8; 9 10; 11 12]; C = A * B; disp(C);2. A = [1 2 3; 4 5 6]; B = [7 8; 9 10; 11 12]; C = B * A; disp(C);3. A = [1 2 3; 4 5 6]; B = [7 8; 9 10; 11 12]; C = A .* B; disp(C); 第三章:函数和脚本文件3.1 函数1. function y = myfunc(x)y = x^2 + 3*x + 2;end2. function [y1, y2] = myfunc(x1, x2)y1 = x1^2 + 3*x1 + 2;y2 = x2^2 + 3*x2 + 2;end3. function [y1, y2] = myfunc(x)y1 = x^2 + 3*x + 2;y2 = sin(x);end3.2 脚本文件1. x = linspace(0, 2*pi, 100); y = sin(x); plot(x, y);2. x = linspace(-10, 10, 100); y = x.^2 + 3*x + 2; plot(x, y);3. x = linspace(0, 2*pi, 100); y1 = sin(x); y2 = cos(x); plot(x, y1, x, y2);通过以上习题的答案,读者可以对Matlab程序设计的基本语法和常用函数有一个初步的了解。
MATLAB综合应用二:线性代数问题的计算机求解.ppt

2020/4/7
高等应用数学问题的 MATLAB 求
30
解
【例4-10】
2020/4/7
高等应用数学问题的 MATLAB 求
31
解
4.2.1.4 矩阵范数
2020/4/7
高等应用数学问题的 MATLAB 求
32
解
2020/4/7
高等应用数学问题的 MATLAB 求
33
解
矩阵的范数定义:
2020/4/7
高等应用数学问题的 MATLAB 求
34
解
2020/4/7
高等应用数学问题的 MATLAB 求
35
解
2020/4/7
高等应用数学问题的 MATLAB 求
36
解
4.2.1.5 特征多项式
2020/4/7
高等应用数学问题的 MATLAB 求
37
解
【例4-11】
2020/4/7
高等应用数学问题的 MATLAB 求
3
解
4.1.1 数值矩阵的输入
4.1.1.1 零矩阵、幺矩阵及单位矩阵
2020/4/7
高等应用数学问题的 MATLAB 求
4
解
【例4-1】
2020/4/7
高等应用数学问题的 MATLAB 求
5
解
4.1.1.2 随机元素矩阵
2020/4/7
高等应用数学问题的 MATLAB 求
6
解
4.1.1.3 对角元素矩阵
42
解
【例4-16】
2020/4/7
高等应用数学问题的 MATLAB 求
43
解
【例4-17】
2020/4/7
计算方法作业2

《计算方法》上机指导书实验1 MATLAB 基本命令1.掌握MATLAB 的程序设计实验内容:对以下问题,编写M 文件。
(1) 生成一个5×5矩阵,编程求其最大值及其所处的位置。
(2) 编程求∑=201!n n 。
(3) 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。
求它在第10次落地时,共经过多少米?第10次反弹有多高?2.掌握MATLAB 的绘图命令实验内容:对于自变量x 的取值属于[0,3π],在同一图形窗口画出如下图形。
(1)1sin()cos()y x x =⋅;(2)212sin()cos()3y x x =-;实验2 插值方法与数值积分1. 研究人口数据的插值与预测实验内容:下表给出了从1940年到1990年的美国人口,用插值方法推测1930年、1965年、2010年人口的近似值。
美国人口数据1930年美国的人口大约是123,203千人,你认为你得到的1965年和2010年的人口数字精确度如何?2.最小二乘法拟合经验公式实验内容:某类疾病发病率为y ‰和年龄段x (每五年为一段,例如0~5岁为第一段,6~10岁为第二段……)之间有形如bx ae y =的经验关系,观测得到的数据表如下(1)用最小二乘法确定模型bx ae y =中的参数a 和b 。
(2)利用MATLAB 画出离散数据及拟合函数bx ae y =图形。
3. 复化求积公式实验内容:对于定积分⎰+=1024dx x xI 。
(1)分别取利用复化梯形公式计算,并与真值比较。
再画出计算误差与n 之间的曲线。
(2)取[0,1]上的9个点,分别用复化梯形公式和复化辛普森公式计算,并比较精度。
实验3 非线性方程与线性方程组1.矩阵的范数与条件数 实验内容:已知矩阵⎪⎪⎪⎪⎪⎭⎫⎝⎛------=1111111111111111A 求1A ,2A ,∞A 和)(2A cond 。
2.研究高斯消去法的数值稳定性 实验内容:设方程组b Ax =,其中(1)⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡--⨯=-11212592.1121130.6291.51314.59103.0151A ,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=2178.4617.591b (2)⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡----=201015152699990999999999.23107102A ,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=1500019000000000.582b 分别对以上两个方程组(1)计算矩阵的条件数,判断系数矩阵是良态的还是病态的? (2)用列主元消去法求得L 和U 及解向量421,R x x ∈;(3)用不选主元的高斯消去法求得L 和U 及解向量421~,~R x x ∈; (4)观察小主元并分析对计算结果的影响。
wodezuoye2

基于MA TLAB的数值分析编程上机作业(2)姓名:王其学号: S090020798班级:六班院系:石油与天然气工程任课老师:支丽霞编程任务:用MA TLAB 语言编写求解线性方程组Au=f 的算法程序,采用下列三种方法,并比较三种方法的计算速度。
一、用SOR 迭代法求解线性方程组Au=f,用试算法确定最佳松弛因子(1)基本原理松驰法是一种线性加速方法。
这种方法将前一步的结果)(k ix 与高斯――赛得尔方法的迭代值)1(~+k ix 适当进行线性组合,以构成一个收敛速度较快的近似解序列。
改进后的迭代方案是:迭代⎪⎪⎭⎫ ⎝⎛--=∑∑+=+-=+)(1)1(11)1(1~k j ni j ij k ji j ij i ii k i x a xa b a x 加速),,2,1(~)1(1)()1(n i x x x k ik ik i=+-=++ωω所以⎪⎪⎭⎫ ⎝⎛--+-=∑∑+=+-=+)(1)1(11)()1()1(k j ni j ij k ji j ij i ii k ik ix a xa b a xxωω(4.7)这种加速法就是松驰法。
其中系数ω称松驰因子。
可以证明,要保证迭代格式(4.7)收敛必须要求 20<<ω松驰法的矩阵形式的迭代格式为:ωωF xB xk k +=+)()1(其中 ()UIL I B ωωωω+--=-)1()(1bL I F 1)(--=ωωω当ω = 1时,即为高斯――赛得尔迭代法,为使收敛速度加快,通常取1>ω,即为超松驰法。
松驰因子的选取对迭代格式(4.7)的收敛速度影响极大。
实际计算时,可以根据系数矩阵的性质,结合经验通过反复计算来确定松驰因子ω。
(2)算法给出A,b,ω,允许误差界ε,最大迭代次数K,计算步骤如下:)(max(1) x(i)=0 (i=1,2,…,n)(2)对k =1,…,Kmax,循环计算到第(7)步(3)置ER=0对i=1,2,…,n,循环执行到第(6)步(4)sum=0()()j i a⨯sum,= (j=1,2,…,n)+jxsum(5)Dx=ω(b(i)-sum)/a(i,i)(6)如果ERER=Dx>则Dx()()Dx←x+iix如果εER,停机。
matelab作业2参考答案
matelab作业2参考答案Matlab作业2参考答案Matlab作业2是一项综合性的任务,要求学生运用Matlab编程语言解决一系列数学问题。
本文将为大家提供一份参考答案,帮助学生更好地理解和完成这项作业。
首先,我们将讨论作业的第一个问题,即给定一个矩阵A,求解其特征值和特征向量。
在Matlab中,可以使用eig函数来实现这一功能。
例如,假设我们有一个3×3的矩阵A,可以按照以下方式计算其特征值和特征向量:```A = [1 2 3; 4 5 6; 7 8 9];[eigenvectors, eigenvalues] = eig(A);```在上述代码中,变量eigenvectors将存储A的特征向量,而变量eigenvalues 将存储A的特征值。
通过打印这两个变量的值,我们可以得到矩阵A的特征值和特征向量。
接下来,我们将探讨作业的第二个问题,即求解线性方程组。
假设我们有一个3×3的系数矩阵A和一个3×1的常数向量b,我们需要求解方程组Ax=b。
在Matlab中,可以使用backslash运算符来求解线性方程组。
例如,假设我们有以下方程组:```A = [1 2 3; 4 5 6; 7 8 9];b = [10; 20; 30];x = A \ b;```在上述代码中,变量x将存储方程组的解。
通过打印变量x的值,我们可以得到方程组的解。
此外,作业的第三个问题要求学生使用Matlab绘制函数图像。
在Matlab中,可以使用plot函数来实现这一功能。
例如,假设我们要绘制函数y=sin(x),其中x的取值范围为0到2π,可以按照以下方式绘制函数图像:```x = 0:0.1:2*pi;y = sin(x);plot(x, y);```在上述代码中,变量x将存储x的取值范围,变量y将存储对应的函数值。
通过调用plot函数,我们可以将函数y=sin(x)的图像绘制出来。
数值计算方法matlab 第二章 求根
1第二章作业问题描述:不同温度的两种流体进入混合器混合,流出时具有相同的温度。
流体A 和B 的热容(单位:cal/(mol ·K))分别为:2623.381 1.80410 4.30010pA c T T --=+⨯-⨯ 1528.592 1.29010 4.07810pB c T T --=+⨯-⨯焓变(单位:cal/mol )为21T p T H c dT ∆=⎰。
A 进入混合器的温度为400℃,B 进入混合器的温度为700℃,A 的量(mol )是B 的量(mol )的两倍,试确定流体离开混合器的温度。
问题分析: 初始情况下,气体A 的温度比气体B 的温度低,故在混合过程中,气体A 温度升高,气体B 温度降低。
由于没有外界加热或者做功,混合气体整体的焓变应该为零。
设A 有2mol ,B 有1mol ,根据焓变公式计算得到:21-262400-22632= 6.762+3.608108.60010)6.762 1.80410 2.867105407.712T TA pA T H c dT T T dTT T T --∆=⨯-⨯=+⨯-⨯-⎰⎰(21-152700-1253=+1.29010 4.07810)0.64510 1.3591032958.030T TB pB T H c dT T T dTT T T --∆=⨯-⨯=+⨯-⨯-⎰⎰(8.5928.592而0A B H H ∆+∆=,故该问题最后变成求解方程2263()15.3548.2541016.4571038365.742f T T T T --=+⨯-⨯-的根的问题。
接下来将采用二分法、试位法以及牛顿法进行改方程的求解。
方程保存为f.m ,可在压缩文件中找到。
一、 二分法二分法的基本思想为,确定有根区间,然后不断将区间二等分,通过判断f(x)的符号,逐步将区间缩小,直到有根区间足够小,便可满足精度要求的近似根。
本例中,可以清楚的得到有根区间为(400,700)。
计算方法matlab实验指导
计算方法上机实验指导一、非线性方程求解(一)问题的指出 二分法 1.方法概要假定()f x 在[,]a b 上连续,()()0f a f b <且()f x 在(,)a b 内仅有一实根*x 取区间中点c ,若()0f c =,则c 恰为其根,否则,根据()()0f a f c <是否成立,可判断出根所属的新的有根子区间(,)a c 或(,)c b ,为节省内存,仍称其为(,)a b 。
运算重复进行,直到满足精度要求为止,即*||c x b a ε-<-<。
式中,a b 为新的有根子区间的端点。
2.计算框图Nowton 迭代法 1.方法概要0x 为初始猜测,则由递推关系1()()k k k k f x x x f x +=-' 产生逼近解*x 的迭代序列{}k x ,这个递推公式就是Newton 法。
当0x 距*x 较近时,{}k x 很快收敛于*x 。
但当0x 选择不当时,会导致{}k x 发散。
故我们事先规定迭代的最多次数。
若超过这个次数,还不收敛,则停止迭代另选初值。
2.计算框图(二)目的掌握二分法与牛顿法的基本原理及应用 (三)要求1.用二分法计算方程2sin 02x x -=在(1,2)内的根的近似值 2.用二分法计算方程310x x --=在(1,1.5)内的根的近似值5(0.510)ε-=⨯。
3.用牛顿法求下列非线性方程的近似根。
① 10x xe -= 00.5x = ② 310x x --= 01x =③ 2(1)(21)0x x --= 00.45x = 00.65x = 4.用改进的牛顿法12()()k k k k f x x x f x +=-'计算方程20(1)(21)00.55x x x --==的近似根,并与要求3.中的③的结果进行比较。
二、Gauuss 列主元消去法(一)问题的提出由地一般线性方程组在使用Gauss 消去法求解时,从求解过程中可以清楚地看到,若(1)0k kk a -=,必须施以行交换的手续,才能使消去过程继续下去。
Matlab编程与工程应用(第二版)习题解答(全)
Matlab编程与工程应用〔第二版习题解答第一章:MATLAB简介1.>> myage = 25;>> myage = myage - 1;>> myage = myage + 2;2.>> myage = 25;>> myage = myage - 1;>> myage = myage + 2;3.>> namelengthmaxans =634.>> format bank>> 1/3ans =0.335.>> format rat>> 5/6 + 2/7ans =47/426.25 19 4.3333 9 97.>> pounds = 100;>> kilos = 2.2 * poundskilos =220.00008.>> R1 = 20; R2 = 30; R3 = 40;>> RT = <R1\1 + R2\1 + R3\1>\1RT =9.23089.>> ftemp = 90;>> ctemp = <ftemp - 32> * 5 / 9ctemp =32.222210. 略11.>> sind<90>ans =112.>> sita = 2 * pi / 3;>> r = 2;>> x = r * cos<sita>x =-1.0000>> y = r * sin<sita>y =1.732113.>> t = 100;V = 50;>> wcf = 35.7 + 0.6 * t - 35.7 + 0.16 * V + 0.43 * t * 0.16 * Vwcf =41214.Fix<3.5> = 3; Floor<3.5> = 3;Fix<3.4> = 3; Fix<-3.4> = -3;Fix<3.2> = 3; Floor<3.2> = 3;Fix<-3.2> = -3; Floor<-3.2> = -4;Fix<-3.2> = -3; Ceil<-3.2> = -3;15.Sqrt<19>3 ^ 1.2Tan<pi>16.Intmin<‘int32’>; intmax<‘int32’>; intmin<‘int64’>;intmax<‘int64’>;17.Realmin<‘double’>; Realmax<‘double’>;18.>> DblNum = 33.8;>> int32Num = int32<DblNum>int32Num =3419.>> A1 = rand;A2 = 20*rand;A3 = 30 * rand + 20;A4 = round<rand * 10>;A5 = round<rand * 11>; /A6 = round<rand * 50> + 50;>> A4 = randi<10>;>> A5 = randi<11>;>> A6 = randi<50> + 50;20. 略21.Double〔‘A’ < Double<‘a’>; 所以大写在前,小写在后;22.>> CharNum = 'xyz';>> CharNum = char<CharNum - 2>CharNum =vwx23.>> vec = [3 : 1 : 6]vec =3 4 5 6>> vec2 = [1.0000:0.5000:3.0000]vec2 =1.0000 1.50002.0000 2.50003.0000>> vec3 = [5 : -1 :2]vec3 =5 4 3 224.>> vec1 = linspace<4,8,3>vec1 =4 6 8>> vec2 = linspace<-3,-15,5>vec2 =-3 -6 -9 -12 -15>> vec3 = linspace<9,5,3>vec3 =9 7 525.>> vec = [1 : 1 : 10]vec =1 2 3 4 5 6 7 8 9 10 >> vec = linspace<1,10,10>vec =1 2 3 4 5 6 7 8 9 10 >> vec2 = [2:5:12]vec2 =2 7 12>> vec = linspace<2,12,3>vec =2 7 12>> myend = randi<4> + 8;>> vec1 = [1 : 3 : myend]vec1 =1 4 7 1027.>> vec = [-1:0.2:1]'vec =-1.0000-0.8000-0.6000-0.4000-0.20000.20000.40000.60000.80001.000028.>> vec = [0 : 1 : 15];>> n = [1 : 2 : numel<vec> - 1];>> vec2 = vec<n>vec2 =0 2 4 6 8 10 12 14 29.function [a b] = PI_CONT<x>%UNTITLED Summary of this function goes here% Detailed explanation goes heren =1 : 1 : fix<numel<x> / 2>;a = x<n>;n = 1+fix<numel<x>/2> : 1 : numel<x>;b = x<n>;endrem<numel<vec>,2>30.rand<2,3>10*rand<2,3>5 + round<15 * rand<2,3>>randint<2,3,[5 15]>31.rows = randi<5>;cols = randi<5>;y = zeros<rows,cols>;>> mat = [ 7 8 9 1012 10 8 6];>> A1 = mat<1,3>>> A2 = mat<2,:>>> A3 = mat<:,1:2>33.>> mymat = [2 3 4;5 6 7]>> mymat1 = fliplr<mymat>>> mymat2 = flipud<mymat>>> mymat3 = rot90<mymat>34.>> mymatzero = zeros<4,2>>> mymatzero<2,:> = [3,6]35.>> x = linspace<-pi,pi,20>;>> y = sin<x>;36.>> randmat = randint<3,5,[-5 5]> >> sign<randmat>37.>> randmat = randint<4,6,[-5 5]>;>> randmat2 = abs<randmat> 38.>> randmat = rand<3,5>>> randmat<3,:> = []39.>> vec = 1 : 1:1000;>> vec<end>>> vec<numel<vec>>>> [a b ] = size<vec>;>> vec<a * b>40.同上41.>> mat = zeros<3,5>;>> mat<:,:,1> = zeros<3,5>;>> mat<:,:,2> = zeros<3,5>; 42.>> myc = clock>> today = myc<1:3>>> now = myc<4:6>>> now = fix<now>第二章 MATLAB程序设计概述1.ri = 2; % Radius internalro = 4; % Radius outerV = 4 * pi / 3 * <ro ^ 3 - ri ^ 3> % calculate volume2.% Calculate Atomic Weight H2O2Weight_O = 15.9994;Weight_H = 1.0079;AtomicWeight = Weight_O * 2 + Weight_H * 2 % Calculate H2O2 Atomic Weight 3.fprintf<'Length of The character string is : %d\n',…length<input<'Please input character string :\n','s'>>>;4.NewNumber = input<'please input a Number :\n'>;fprintf<'Number with 2 decimal is :%0.2f\n',NewNumber>;5.>> vec = input<'Enter a matrix: '>Enter a matrix: [1:1:10;1:1:10]6.>> fprintf<'OUTPUT : %f\n',12345.6789>OUTPUT : 12345.678900>> fprintf<'OUTPUT : %10.4f\n',12345.6789>OUTPUT : 12345.6789>> fprintf<'OUTPUT : %10.2f\n',12345.6789>OUTPUT : 12345.68>> fprintf<'OUTPUT : %6.4f\n',12345.6789>OUTPUT : 12345.6789>> fprintf<'OUTPUT : %2.4f\n',12345.6789>OUTPUT : 12345.67897.>> fprintf<'OUTPUT : %d\n',12345>OUTPUT : 12345>> fprintf<'OUTPUT : %5d\n',12345>OUTPUT : 12345>> fprintf<'OUTPUT : %8d\n',12345>OUTPUT : 12345>> fprintf<'OUTPUT : %3d\n',12345>OUTPUT : 123458.>> x = 12.34;>> y = 4.56;>> fprintf<'x is %.3f\n',x>x is 12.340>> fprintf<'x is %0.0f\n',x>x is 12>> fprintf<'y is %0.1f\n',y>y is 4.6>> fprintf<'y is %0.1f !\n',y>y is 4.6 !9.% Calculate Area of the squarenessfprintf<'The Area of The Squareness is %.2f',…<input<'Please input the Length of the Squareness \n'>> …* <input<'Please input the Width of the Squareness \n'>>>;10.NewName = input<'What is your name? ','s'>;fprintf<'Wow,your name is %s!\n',NewName>;11.NewString = input<'Enter your string : ','s'>;fprintf<'Your String was : ''%s''\n',NewString>;12.WaterSpeed = input<'Enter the folw in m^3/s : '>;WaterSpeedft = 0.028 \ WaterSpeed;fprintf<'A flow rate of %.3f meters per sec \n',WaterSpeed>;fprintf<'is equivalent to %.3f feet per sec\n',WaterSpeedft>;13.IncomeY = input<'Input your income every year?'>;FoodCostY= [IncomeY * 8 / 100 IncomeY*10 / 100];FoodCostM = 12\FoodCostY;fprintf<'Food Cost in every year is %.2f - %.2f\n',FoodCostY<1>,FoodCostY<2>>; fprintf<'Food Cost in every Month is %.2f - %.2f\n',FoodCostM<1>,FoodCostM<2>>;14.Weight = input<'Please input the Weight of the plan \n'>Area = input<'Please input the area of the plan wing \n'>fprintf<'Charge of Plan Win is %.2f \n',Weight / Area>15.x = 10;y = 10;plot<x,y,'g+'>;16.clfx = -2 : 0.1 : 2;y = exp<x>;plot<x,y,'g'>;xlabel<'X'>;ylabel<'Y'>;legend<'Exp<x>'>;Title<'Exp Example'>;17.clfx = 1 : 5 : 100;y = sqrt<x>;plot<x,y,'go'>;hold on;bar<x,y>;18.clfy = randint<1,100,[0 100]>;x = 1 : 1 : length<y>;plot<x,y,'ro'>;hold onplot<x,y,'g+'>;figure<2>;plot<x,y,'k'>;figure<3>;bar<x,y>19.clfx = linspace<0,pi,10>;y = sin<x>;plot<x,y,'r'>;figure<2>;x = linspace<0,pi,100>;y = sin<x>;plot<x,y,'b'>;20.load TimeTemp.datx = TimeTemp<:,1>';y = TimeTemp<:,2>';plot<x,y>;Xlabel<'Height'>;Ylabel<'Temperature'>;Title<'Height - Temperature'>;legend<'TEMP'>21.>> randint<3,6,[50 100]>;>> save RandInt.bat ans -ascii;>> randint<2,6,[50 100]>>> save RandInt.bat randint -ascii –append >> load RandInt.bat>> RandInt22.>> load testtan.bat>> tan<testtan>23.>> load hightemp.dat>> hightemp<:,1> = hightemp<:,1> .+ 1900>> save y2ktemp.dat hightemp –ascii24.function [ fn ] = fn< x >%Calculate y as a function of xfn = x^3 - 4 * x^2 + sin<x>;end25.function [ mwh] = mwh_to_gj<x>%convers from MWh to GJmwh = 3.6 * x;end26.function [ output_args ] = miletometer< x >%Conver mile to meterMile = input<'mile per hours number :'>;meter = Mile * 5280 * 0.3048 / 3600;output_args = meter;fprintf<'Meter of the mile is : % .2f',meter>; end27.function [ Tn ] = Interest< p,i,n >%UNTITLED4 Summary of this function goes hereTn = p * <1 + i> * n;end28.略29.function [ V ] = SpeedConv<pi,ps>%UNTITLED4 Summary of this function goes hereV = 1.016 * sqrt<pi - ps>end30. function [ THR ] =Cal_rate<A>%UNTITLED4 Summary of this function goes hereTHR = <220 - A> * 0.6;end31.function [ nJ ] =STL_calc<n>%UNTITLED4 Summary of this function goes herenJ = sqrt<2 * pi * n> * <n / exp<1>>^n;end32.function [ output_args ] = costn< n >%UNTITLED5 Summary of this function goes hereoutput_args = 5 * n ^ 2 - 44 * n + 11;endn = input<'Enter the number of units :'>;Cn = costn<n>;fprintf<'The cost for 100 units will be $%.2f\n',Cn>;33.略〔仿造32题34.function [ V ] = oblong< length >%UNTITLED8 Summary of this function goes hereV = 1/12*sqrt<2>*length^3;endfprintf<'The volume of oblong is : %.2f\n ',oblong<input<'Enter the length of the oblong:\n'>>>35.function [ y ] = pickone< x >%pickone<x> returns a random element from vector xn = length<x>;y = x<randi<n>>;end36.function [ y ] = vecout< x >%UNTITLED11 Summary of this function goes herey = x : 1 : x+5;end37.b = input<'Enter the first side :'>;c = input<'Enter the second side :'>afa = input<'Enter the angle between them :'>y = sqrt<b^2 + c^2 - 2*b*c*cos<afa *<pi/180>>>;fprintf<'The third side is %.3f\n',y>;38.略39.load floatnums.datfloatnums = round<floatnums>;floatnums = floatnums';save intnums.datfloatnums-ascii;40.load costssales.datn = length<costssales<:,1>>;fprintf<'There were %d quarters in the file ',n>;n = 1 : 1 : n;costs = costssales<:,1>;sales = costssales<:,1>;plot<n,costs,'ko'>;hold onplot<n,sales,'b*'>;legend<'COSTS','SALES'>;xlabel<'COST'>;ylabel<'SALE'>;title<'COST-SALE'>;costssales = costssales'costssales = flipud<costssales>;save newfile.datcostssales-ascii;第三章选择语句2. if <input<'please Enter a x :\n','s'> ~= 'x'>disp<'sorry the char not x'>;end3. function y = Test3<x>if <x == 12>y = 1;elsey = x + 1;end;4. disp<'The program will calculate the volume of a pyramid'>;a = input<'Enter the length of the base :'>;c = input<'Is that i or c?','s'>;if< c == 'c'>a = a/2.54;end;b = input<'Enter the width of the base :','s'>;c = input<'Is that i or c?'>;if< c == 'c'>b = b/2.54;end;d = input<'Enter the length of the base :','s'>;c = input<'Is that i or c?'>;if< c == 'c'>d = d/2.54;end;fprintf<'The Volume of the Pyramid is %.3f cubic inches.',a * b * d / 3>;5.if<input<'Are you an engineer?<Y/N>','s'> == 'Y'>disp<'You are the best!'>;elsedisp<'oh~ soga'>;end;6.Fenzi = input<'Please input enter the FENZI: '>;Fenmu = input<'Please input enter the FENMU: '>;if<Fenmu == 0>disp<'Sorry The Fenmu can not be zero!'>;elsefprintf<'The result is %.2f.\n',Fenzi/Fenmu>;end;7.function Result = Test3_Func< a,b >%TEST3_FUNC Summary of this function goes here% Detailed explanation goes hereResult = sqrt<1 - b^2/a>;EndFunction:a = input<'Please Enter the a : '>;b = input<'Please Enter the b : '>;if <a == 0>disp<'Error 0001'>;elsefprintf<'The Result is %.2f \n',Test3_Func<a,b>>;end;8.a = input<'Please Enter the Shousuo : '>;b = input<'Please Enter the Shuzhang : '>;if <a<120 && b<80>disp<'you are the best choice !'>;elsedisp<'Sorry you can not do this!'>;end;9.A1 = input<'Enter the First Area: '>;A2 = input<'Enter the Second Area: '>;if<A1 > A2>disp<'UP!'>;elseif <A1 < A2>disp<'Down!'>;elsedisp<'Keep!'>;en10.a = input<'Enter the PH number : '>;if <a < 7>disp<'Suan'>;elseif <a > 7>disp<'Jian'>;elsedisp<'Zhong'>;end;11.function Result = Test3_Func< a,b >%TEST3_FUNC Summary of this function goes here % Detailed explanation goes hereif <a < b>Result = a : 1 : b;elseResult = a : -1 : b;end12.function Result = Test3_Func< x >%TEST3_FUNC Summary of this function goes here % Detailed explanation goes here[a b] = size<x>;if <<a ~= 1 && b ~= 1> || <a == 1 && b == 1>> Result = x;elseif<a == 1>Result = fliplr<x>;elseResult = flipud<x>;end13.letter = input<'Enter your answer :','s'>;if <letter == 'Y' || letter == 'y'>disp<'OK,continuing'>;elseif<letter == 'N' || letter == 'n'>disp<'OK,halting'>;elsedisp<'Error'>;end14.switch lettercase {'Y''y'}disp<'OK,contining'>case {'N''n'}disp<'OK,halting'>otherwisedisp<'Error'>end15.Mahe = input<'Enter the Speed of Plan : '>/input<'Enter the Speed of Voice: '>; if<Mahe > 1>disp<'supersonic speed'>;elseif<Mahe < 1>disp<'subsonic speed'>;elsedisp<'transonic speed'>;end;16.X = input<'Enter the temp in degrees C : \n'>;switch <input<'Do you want F or K?','s'>>case'F'fprintf<'The temp in degrees F is %.1f',<9/5>*X + 32>;case'K'fprintf<'The temp in degrees K is %.1f',X + 273.15>;otherwisedisp<'Enter Error!'>;end;17.%function y = Test3<x>X = randi<100>;if rem<X,2> == 0fprintf<'%d ÊÇżÊý\n',X>;elsefprintf<'%d ÊÇÆæÊý\n',X>;end18.function y = Test3<x>switch rem<x,4>case 0y = true;otherwisey =false;end;19.function y = Test3<innum>if innum == int32<innum>y = true;elsey =false;end;20.function y = Test3<a,b,c>if a^2 == b^2 + c^2y = true;elsey =false;end;21.Re = input<'Enter the Re Value :\n'>;if Re <= 2300 disp<'Laminar region'>;elseif Re > 2300 && Re <= 4000 disp<'Transition region'>; else disp<'Turbulent region'>;end;22.d1 = input<'Enter d1 : \n'>;d2 = input<'Enter d2 : \n'>;if d1 <= 0 || d2 <= 0disp<'Error!'>;elsefprintf<'%.2f',Test3_Func<d1,d2>>;end;function y = Test3_Func<a,b>y = a * b / 2;23.V = input<'Enter the speed of the wing: '>;if V <= 38 disp<'tropical depression '>;elseif V >= 73 disp<'typhoon'>;else disp<'revolving storm'>;end;24.V = input<'Enter the speed of the wing :'>;if V >74 && V <= 95disp<'1 : 4-5'>;elseif V > 95 && V <= 110disp<'2 : 6-8'>;elseif V > 110 && V <= 130disp<'3 : 9-12'>;elseif V > 130 && V <= 155disp<'4 : 13-18'>;elseif V > 155disp<'5 : 18'>;elsedisp<'Error'>;end25.略26.H = input<'Enter the hight of the cloude :'>;if H < 6500 && H > 0disp<'Low'>;elseif H >= 6500 && H < 20000disp<'Middle'>;elsedisp<'High'>;27.if letter == 'x'disp<'Hello'>;elseif letter == 'y'||letter == 'Y'disp<'Yes'>;elseif letter == 'Q'disp<'Quit'>;elsedisp<'Error'>;end;28.switch numcase {0 1 2}f2<num>;case {-2 -1}f3<num>;case 3f4<num>;otherwisef1<num>;end;29.switch menu<'menu','1.Cylinder','2.Circle','3.Rectangle'>case 1R = input<'Please enter the radius of buttom circle:'>;H = input<'Enter the height of the Cylinder:'>;A = 2 * pi * R * H + 2 * pi * <R ^ 2>;fprintf<'The area is %.2f',A>;case 2R = input<'Please enter the radius of circle:'>;A = pi * <R ^ 2>;fprintf<'The area is %.2f',A>;case 3a = input<'Please enter the long of Rectangle:'>;b = input<'Please enter the with of Rectangle :'>;A = a * b;fprintf<'The area is %.2f',A>;end30.同2931.同2932.x = input<'Enter the Value X :'>;Y = menu<'Menue Choose','Sin','Cos','Tan'>;switch Ycase 1output = sin<x>;case 2output = cos<x>;case 3output = tan<x>;end;33.略34.function output = Test3_Func<x>Y = menu<'Menue Choose','ceil','round','sign'>;switch Ycase 1output = ceil<x>;case 2output = round<x>;case 3output = sign<x>;end;35.略36.略37.略第四章循环1.>> for i = 1.5:0.2:3.1i = iend2.function output = Test3_Func<x>x = x - <rem<x,2> == 0>;output = 0;for i = 1 : 2 : xoutput = output + i;end;3.function output = Test3_Func<x>x = x - <rem<x,2> == 0>;output = 1;for i = 1 : 2 : xoutput = output * i;end;4.5.>> for i = 32 : 1 : 255char<i>end;6.>> vec = [5.5 11 3.45];>> for i = 1 : length<vec>fprintf<'Element %d is %.2f .\n',i,vec<i>>;end;7.n = randi<4> + 1;sum = 0;for i = 1 : nsum = sum + input<'Enter the value'>;end;fprintf<'Sum = %.1f\n',sum>;8disp<'Please enter the threshold below which samples will be considered to be invalid :'>;Value1 = input<'Considered to be invalid :\n'>;Value2 = input<'Please enter the number of data samples to be entered :\n'>; Sum = 0;num = 0;for i = 1:Value2data = input<'Please enter a data sample :'>;if data > Value1Sum = Sum + data;num = num + 1;endendif num == 0disp<'Data Error !'>;elsefprintf<'The average of the %d valid data samples is %.2f volts.',num,Sum/num>; end9.load MaxTemp.mat[a b] = size<MaxTemp>;for i = 1 : a;Matix1 = zeros<size<MaxTemp>>;Matix1<i,:> = MaxTemp<i,:>end10.sum = 0;for i = 1 : length<pipe>sum = sum + <pipe<i,1> < 2.1 || pipe<i,1> > 2.3>;sum = sum + <pipe<i,2> < 10.3 || pipe<i,2> > 10.4>;endfprintf<'There were %d rejects.\n',sum>;11.略12.略13.x = randint<1,5,[-10,10]>;x2 = 0;for i = 1 : length<x>x1<1,i> = x<1,i> - 3;if x1<1,i> > 0x2 = x2 + 1;end;x3<1,i> = abs<x1<1,i>>;if i > 1x4 = max<x1<1,i>,x1<1,i-1>>;end;end16.17.略18.19.20.略22.略23.略24.10略略第五章向量化代码1.Mat.*2;2.Result = vec;3.cumprod<vec>;4.>> vec = randint<1,6,[0 20]>;>> maxvec = max<vec>;>> minvec = min<vec>;>> cumsumvec = cumsum<vec>5.Sum<vec>6.>> clear>> vec = randint<1,5,[-10 10]>;>> vec_3 = vec - 3;>> ZhengshuNum = length<find<vec > 0>>;>> vec_abs = abs<vec>;>> vec_max = max<vec>;7.max<vec,[],1>max<vec,[],2>max<max<vec>>;8.function output = Test3_Func<r,n>vec = [];for i = 0 : nvec = [vec r.^i];end;output = sum<vec>;>> vec1 = Vec<[1 3 5]>;>> vec2 = Vec<[2 4 6]>;>> CheckSum = vec1.*vec2;11.>> vec = 1 : 1 : 1000;>> Result = sum<1./<vec.^2>>;>> Check = pi.^2/6;>> diff = check – result13.略14.略15.clear;clf;vec_temp = 0 : 0.5 : 10;x1 = input<'Enter the number of level :'>;while<all<vec_temp - x1>>x1 = input<'Enter the number of level :'>;end;disp<x1>16.略17.ticif x==21disp<x>end;tocticswitch xcase 21disp <x>;end;toc18.Ones<3>19.If find<r > 0> == [] && fin<h > 0> == 0V = pi .*<r.^2>*hEnd;第六章 MATLAB 程序1~20 略21.function S = Test3_Func<n>P = 10000;i = 0.05;vec = 1 : 1 : n;S = P * <<1 + i>.^vec>;plot<vec,S>;n = input<'Enter the Year:'>;while ~<n >0 && int32<n> == n>n = input<'Enter the Year:'>;end;Test3_Func<n>;22.Function lenf = lenprompt<>;Lenf = input<‘Enter the length By inches: ’>; Function Leni = covert_f_to_i<lenf>Leni = …<英尺转英寸>Function printlens<lenf,leni>Disp<lenf>;Disp<leni>;23.略24.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6-1 试验目的计算特征值,实现算法
试验容:随机产生一个10阶整数矩阵,各数均在-5和5之间。
(1) 用MATLAB 函数“eig ”求矩阵全部特征值。
(2) 用幂法求A 的主特征值及对应的特征向量。
(3) 用基本QR 算法求全部特征值(可用MATLAB 函数“qr ”实现矩阵的QR 分解)。
原理
幂法:设矩阵A 的特征值为12n ||>||||λλλ≥⋅⋅⋅≥并设A 有完全的特征向量系12,,,n χχχ⋅⋅⋅(它们线性无关),则对任意一个非零向量0n V R ∈所构造的向量序列1k k V AV -=有11()lim ()k j k k j
V V λ→∞
-=,
其中()k j V 表示向量的第j 个分量。
为避免逐次迭代向量k V 不为零的分量变得很大(1||1λ>时)或很小(1||1λ<时),将每一步的k V 按其模最大的元素进行归一化。
具体过程如下:
选择初始向量0V ,令1max(),,,1k
k k k k k k
V m V U V AU k m +===≥,当k 充分大时1111,max()max()
k k U V χλχ+≈
≈。
QR 法求全部特征值:
111
11222
111
,1,2,3,k k k k k A A Q R R Q A Q R k R Q A Q R +++==⋅⎧⎪⋅==⋅⎪=⋅⋅⋅⎨
⋅⋅⋅⎪⎪⋅==⋅⎩ 由于此题的矩阵是10阶的,上述算法计算时间过长,考虑采用改进算法——移位加速。
迭
代格式如下:
1
k k k k
k k k k A q I Q R A R Q q I +-=⎧⎨
=+⎩ 计算k A 右下角的二阶矩阵()
()
1,1
1,()
(),1
,k k n
n n n k k n n n n a a a a ----⎛⎫ ⎪ ⎪⎝⎭
的特征值()()1,k k n n λλ-,当()()1,k k n n λλ-为实数时,选k q 为()()1,k k n n λλ-中最接近(),k n n a 的。
程序
界面(1)
(2)
(3)
作业七
7-1 试验目的:熟悉代数插值
试验容:已知在f(x)在7个点的函数值如下表所示,分别使用拉格朗日插值法和牛顿插值法
拉格朗日插值多项式:
01110011100()()()()()
()()()()()()()n
j j n n j
j j j j j j j j n n
n
i
j
j i j i
i j
x x x x x x x x x x L x y x x x x x x x x x x x x y x x -+=-+==≠-
-⋅⋅⋅
--⋅⋅⋅-=--⋅⋅⋅--⋅⋅⋅--=-∑
∑∏
牛顿插值多项式:
001001201001()()[,]()[,,]()()[,,]()()
n n n N x f x f x x x x f x x x x x x x f x x x x x x -=+-+--+⋅⋅⋅+⋅⋅⋅-⋅⋅⋅-
其中00011()
[,,]()()()()
k
j k j j j j j j j k f x f x x x x x x x x x x =-+⋅⋅⋅=-⋅⋅⋅--⋅⋅⋅-∑。
程序
界面
作业八
8-1 试验目的:熟悉最小二乘法拟合多项式 试验容:给定数据点(
x ,y ), 用3次最小二乘多项式拟合数据,并求平方误差。
原理
要作三次最小二乘拟合,令00112233()()()()(),()j j S x a x a x a x a x x x ϕϕϕϕϕ=+++=,计算法方程
Ga d =,其中000101011101(,)(,)(,)(,)(,)(,)(,)(,)(,)n n n n n n G ϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕϕ⋅⋅⋅⎛⎫ ⎪⋅⋅⋅ ⎪=
⎪⋅⋅⋅⋅⋅⋅⋅⋅⋅ ⎪⋅⋅⋅⎝⎭,01n a a a a ⎛⎫ ⎪ ⎪= ⎪⋅⋅⋅ ⎪⎝⎭,12n d d d d ⎛⎫ ⎪ ⎪= ⎪⋅⋅⋅ ⎪⎝⎭
,
0(,)()()(),(,0,1,,),()1(,)()()(),(0,1,,)
m j k i j i k i i i m
k k i i k i
i x x x j k n x d
f x f x x k n ϕϕωϕϕωϕωϕ==⎧==⋅⋅⋅⎪⎪=⎨⎪===⋅⋅⋅⎪⎩∑∑。
其平方误差为20
()[()()]m
i i i i s x S x f x ω==-∑。
程序
界面
作业九
9-1 试验目的:熟悉数值积分公式,掌握数值计算定积分的方法 试验容:采用不同方法数值计算积分
1
0ln(1)x dx x +⎰
编写复合梯形公式和复合Simpson 公式通用子程序,分别采用4,8,16,32,64等分区间计算。
原理
复合梯形公式:将区间[a,b]作n 等分,b a
h n
-=,结点(0)i x a ih i n =+≤≤,
1
1
101
[()()][()2()()]22n n n i i i i i h h
T f x f x f a f x f b --+===+=++∑∑
复合Simpson 公式:将区间[a,b]作2n 等分,记2b a
h n
-=
,
111
222122212001
[()4()()][()4()2()()]33n n n n i i i i i i i i h h
S f x f x f x f a f x f x f b ---+++====++=+++∑∑∑
作业十
10-1 试验目的:学会用Euler 法、改进Euler 法、经典的4阶Runge-Kutta 法求解常微分方程初值问题。
试验容:分别用
1) Euler 法(步长h=0.025) 2) 改进Euler 法(步长h=0.05) 3) 4阶Runge-Kutta (步长h=0.1) 求解下面的初值问题: (1)(3),02y y y x '=-++≤≤ 比较公共节点解的误差。
精确解为2132(1)x y e --=-++。
原理
Euler 法:令(,())()f x y x y x '=,1(,)n n n n y y hf x y +=+(b a
n h
-=
)。
改进Euler法(梯形公式):
1
21 112
(,)
(,)
()
2
n n
n n
n n
k f x y
k f x h y hk
h
y y k k
+
⎧
⎪=
⎪
=++
⎨
⎪
⎪=++
⎩
4阶Runge-Kutta:
1
21
32
43
11234
(,)
1
(,)
22
1
(,)
22
(,)
1
(22)
6
n n
n n
n n
n n
n n
k hf x y
h
k hf x y k
h
k hf x y k
k hf x h y k
y y k k k k +
=
⎧
⎪
⎪=++
⎪
⎪⎪
=++
⎨
⎪
=++
⎪
⎪
⎪=++++
⎪⎩
程序
界面。