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

合集下载

《应用计算方法教程》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 的。

(完整word版)含答案《MATLAB实用教程》

(完整word版)含答案《MATLAB实用教程》

第二章 MATLAB 语言及应用实验项目实验一 MATLAB 数值计算三、实验内容与步骤1.创建矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=987654321a(1(2)用(3)用(42.矩阵的运算(1)利用矩阵除法解线性方程组。

⎪⎪⎩⎪⎪⎨⎧=+++=-+-=+++=+-12224732258232432143214321421x x x x x x x x x x x x x x x 将方程表示为AX=B ,计算X=A\B 。

(2)利用矩阵的基本运算求解矩阵方程。

已知矩阵A 和B 满足关系式A -1BA=6A+BA ,计算矩阵B 。

其中⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=7/10004/10003/1A ,Ps: format rata=[1/3 0 0;0 1/4 0;0 0 1/7];b=inv(a)*inv(inv(a)-eye(3))*6*a(3)计算矩阵的特征值和特征向量。

已知矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=1104152021X ,计算其特征值和特征向量。

(4)Page:322利用数学函数进行矩阵运算。

已知传递函数G(s)=1/(2s+1),计算幅频特性Lw=-20lg(1)2(2w )和相频特性Fw=-arctan(2w),w 的范围为[0.01,10],按对数均匀分布。

3.多项式的运算(1)多项式的运算。

已知表达式G(x)=(x-4)(x+5)(x 2-6x+9),展开多项式形式,并计算当x 在[0,20]内变化时G(x)的值,计算出G(x)=0的根。

Page 324(2)多项式的拟合与插值。

将多项式G(x)=x 4-5x 3-17x 2+129x-180,当x 在[0,20]多项式的值上下加上随机数的偏差构成y1,对y1进行拟合。

对G(x)和y1分别进行插值,计算在5.5处的值。

Page 325 四、思考练习题1.使用logspace 函数创建0~4π的行向量,有20个元素,查看其元素分布情况。

Ps: logspace(log10(0),log10(4*pi),20) (2) sort(c,2) %顺序排列 3.1多项式1)f(x)=2x 2+3x+5x+8用向量表示该多项式,并计算f(10)值. 2)根据多项式的根[-0.5 -3+4i -3-4i]创建多项式。

matlab课程设计大作业

matlab课程设计大作业

matlab课程设计大作业一、教学目标本课程的教学目标是使学生掌握MATLAB基本语法、编程技巧以及MATLAB 在工程计算和数据分析中的应用。

通过本课程的学习,学生将能够熟练使用MATLAB进行简单数学计算、线性方程组求解、函数图像绘制等。

1.掌握MATLAB基本语法和编程结构。

2.了解MATLAB在工程计算和数据分析中的应用。

3.熟悉MATLAB的函数库和工具箱。

4.能够使用MATLAB进行简单数学计算。

5.能够使用MATLAB求解线性方程组。

6.能够使用MATLAB绘制函数图像。

7.能够利用MATLAB进行数据分析和处理。

情感态度价值观目标:1.培养学生对计算机辅助设计的兴趣和认识。

2.培养学生团队合作和自主学习的能力。

二、教学内容本课程的教学内容主要包括MATLAB基本语法、编程技巧以及MATLAB在工程计算和数据分析中的应用。

1.MATLAB基本语法:介绍MATLAB的工作环境、基本数据类型、运算符、编程结构等。

2.MATLAB编程技巧:讲解MATLAB的函数调用、脚本编写、函数文件编写等编程技巧。

3.MATLAB在工程计算中的应用:介绍MATLAB在数值计算、线性方程组求解、图像处理等方面的应用。

4.MATLAB在数据分析中的应用:讲解MATLAB在数据采集、数据分析、数据可视化等方面的应用。

三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合的方式进行教学。

1.讲授法:通过讲解MATLAB的基本语法、编程技巧以及应用案例,使学生掌握MATLAB的基本知识和技能。

2.案例分析法:通过分析实际工程案例,使学生了解MATLAB在工程计算和数据分析中的应用。

3.实验法:安排上机实验,使学生在实际操作中巩固所学知识,提高实际编程能力。

四、教学资源本课程的教学资源包括教材、实验设备、多媒体资料等。

1.教材:选用《MATLAB教程》作为主要教材,辅助以相关参考书籍。

2.实验设备:为学生提供计算机实验室,配备有MATLAB软件的计算机。

Matlab习题及答案

Matlab习题及答案

现代计算方法Matlab 作业答案1.绘出函数f(x)=sin x x ,在[0,4]上的图形解:在M 文件输入:x=0:pi/100:4;y=x.*sin(x);plot(y)运行2. 求3x +2x +5 = 0的根解:在命令窗口输入:>> solve('x^3+2*x+5=0')ans =((108^(1/2)*707^(1/2))/108 - 5/2)^(1/3) - 2/(3*((108^(1/2)*707^(1/2))/108 - 5/2)^(1/3))1/(3*((108^(1/2)*707^(1/2))/108 - 5/2)^(1/3)) - ((108^(1/2)*707^(1/2))/108 - 5/2)^(1/3)/2 -(3^(1/2)*i*(2/(3*((108^(1/2)*707^(1/2))/108 - 5/2)^(1/3)) + ((108^(1/2)*707^(1/2))/108 -5/2)^(1/3)))/21/(3*((108^(1/2)*707^(1/2))/108 - 5/2)^(1/3)) - ((108^(1/2)*707^(1/2))/108 - 5/2)^(1/3)/2 +(3^(1/2)*i*(2/(3*((108^(1/2)*707^(1/2))/108 - 5/2)^(1/3)) + ((108^(1/2)*707^(1/2))/108 -5/2)^(1/3)))/23.321436min x x x z ++=120..321=++x x x t s301≥x5002≤≤x203≥x解:运用单纯形法计算此题,首先把约束条件化成标准形式:,,,,,205030120654321635241321≥=-=+=-=++x x x x x x x x x x x x x x x(1)在M 文件输入SimpleMthd 函数:function [x,minf] = SimpleMthd(A,c,b,baseVector)sz = size(A);nVia = sz(2);n = sz(1);xx = 1:nVia;nobase = zeros(1,1);m = 1;for i=1:nViaif (isempty(find(baseVector == xx(i),1)))nobase(m) = i;m = m + 1;else;endendbCon = 1;M = 0;while bConnB = A(:,nobase);ncb = c(nobase);B = A(:,baseVector);cb = c(baseVector);xb = inv(B)*b;f = cb*xb;w = cb*inv(B);for i=1:length(nobase)sigma(i) = w*nB(:,i)-ncb(i);end[maxs,ind] = max(sigma);if maxs <= 0minf = cb*xb;vr = find(c~=0 ,1,'last');for l=1:vrele = find(baseVector == l,1);if (isempty(ele))x(l) = 0;elsex(l)=xb(ele);endendbCon = 0;elsey = inv(B)*A(:,nobase(ind));if y <= 0disp('不存在最优解!');x = NaN;minf = NaN;return;elseminb = inf;chagB = 0;for j=1:length(y)if y(j)>0bz = xb(j)/y(j);if bz<minbminb = bz;chagB = j;endendendtmp = baseVector(chagB);baseVector(chagB) = nobase(ind);nobase(ind) = tmp;endendM = M + 1;if (M == 1000000)disp('找不到最优解!');x = NaN;minf = NaN;return;endend(2)在命令窗口输入:clear allA=[1 1 1 0 0 0;1 0 0 -1 0 0;0 1 0 0 1 0;0 0 1 0 0 -1];c=[6 3 4 0 0 0];b=[120;30;50;20];[xm,mf]=SimpleMthd(A,c,b,[3 4 5 6])xm =0 50 70mf =4304.计算下面函数在区间(0,1)内的最小值。

matlab教程习题答案

matlab教程习题答案

matlab教程习题答案MATLAB教程习题答案MATLAB是一种广泛应用于科学计算和工程领域的高级编程语言和环境。

它的强大功能和灵活性使得许多人对其感兴趣,但对于初学者来说,掌握MATLAB 可能会有一些困难。

为了帮助大家更好地理解和掌握MATLAB,下面将给出一些常见的MATLAB教程习题的答案,希望能对大家有所帮助。

1. 编写一个MATLAB程序,计算1到100之间所有偶数的和。

答案:```matlabsum = 0;for i = 2:2:100sum = sum + i;enddisp(sum);```2. 编写一个MATLAB程序,生成一个10行10列的随机矩阵,并计算该矩阵的行和列的和。

答案:```matlabmatrix = rand(10, 10);row_sum = sum(matrix, 2);col_sum = sum(matrix);disp(col_sum);```3. 编写一个MATLAB程序,计算斐波那契数列的前20个数。

答案:```matlabfibonacci = zeros(1, 20);fibonacci(1) = 1;fibonacci(2) = 1;for i = 3:20fibonacci(i) = fibonacci(i-1) + fibonacci(i-2);enddisp(fibonacci);```4. 编写一个MATLAB程序,计算一个正整数的阶乘。

答案:```matlabnum = input('请输入一个正整数:');factorial = 1;for i = 1:numfactorial = factorial * i;end```5. 编写一个MATLAB程序,求解一个二次方程的根。

假设二次方程的形式为ax^2 + bx + c = 0,其中a、b、c为用户输入的系数。

答案:```matlaba = input('请输入二次方程的系数a:');b = input('请输入二次方程的系数b:');c = input('请输入二次方程的系数c:');delta = b^2 - 4*a*c;if delta < 0disp('该二次方程无实根。

计算方法matlab

计算方法matlab

计算方法matlab计算方法matlab是一种非常有用的工具,可以用于解决各种计算问题,包括矩阵计算、符号运算、数值求解等。

在本文中,我们将分步骤阐述如何使用计算方法matlab进行计算。

1.安装matlab首先,你需要从官方网站上下载matlab,并安装到你的电脑中。

在安装过程中,你需要选择你的操作系统、硬件配置等信息。

安装完成后,你需要输入许可证号码才能使用matlab软件。

2.打开matlab在windows中,使用matlab可以直接在桌面上找到matlab的图标,双击即可打开软件。

在其他操作系统中,你可以在终端中输入matlab命令来打开软件。

3.使用matlab进行计算使用matlab进行计算的方法有很多种。

你可以使用matlab的命令行模式,直接在命令行中输入想要计算的式子,matlab会返回计算结果。

例如,输入"2+3",回车后,matlab会返回"5"这个结果。

你还可以使用matlab的脚本文件来进行计算。

脚本文件是可以存储若干行matlab命令的纯文本文件。

你可以打开一个脚本文件,把要计算的命令写到文件中,然后运行这个脚本文件,matlab会按照命令执行计算,并输出结果。

4.使用matlab进行矩阵计算matlab是一种非常强大的矩阵计算工具。

在matlab中,你可以使用矩阵运算符号"+"、"-"、"*"、"/"等来进行矩阵的加减乘除运算。

例如,你可以输入" A=[1 2;3 4]; B=[5 6;7 8]; C=A*B",将矩阵A和B相乘,matlab会返回结果矩阵C。

此外,matlab还提供了很多高级的矩阵计算函数,如行列式det()、逆矩阵inv()、特征值eig()、奇异值分解svd()等。

5.使用matlab进行符号计算除了数值计算,matlab还支持符号计算。

计算方法matlab实验报告

计算方法matlab实验报告

计算方法matlab实验报告计算方法MATLAB实验报告引言:计算方法是一门研究如何用计算机来解决数学问题的学科。

在计算方法的学习过程中,MATLAB作为一种强大的数值计算软件,被广泛应用于科学计算、工程计算、数据分析等领域。

本实验报告将介绍在计算方法课程中使用MATLAB 进行的实验内容和实验结果。

一、二分法求方程根在数值计算中,求解非线性方程是一个常见的问题。

二分法是一种简单而有效的求解非线性方程根的方法。

在MATLAB中,可以通过编写函数和使用循环结构来实现二分法求解方程根。

实验步骤:1. 编写函数f(x),表示待求解的非线性方程。

2. 设定初始区间[a, b],满足f(a) * f(b) < 0。

3. 利用二分法迭代求解方程根,直到满足精度要求或迭代次数达到预设值。

实验结果:通过在MATLAB中编写相应的函数和脚本,我们成功求解了多个非线性方程的根。

例如,对于方程f(x) = x^3 - 2x - 5,我们通过二分法迭代了5次,得到了方程的一个根x ≈ 2.0946。

二、高斯消元法解线性方程组线性方程组的求解是计算方法中的重要内容之一。

高斯消元法是一种常用的求解线性方程组的方法,它通过矩阵变换将线性方程组化为上三角矩阵,从而简化求解过程。

在MATLAB中,可以利用矩阵运算和循环结构来实现高斯消元法。

实验步骤:1. 构建线性方程组的系数矩阵A和常数向量b。

2. 利用高斯消元法将系数矩阵A化为上三角矩阵U,并相应地对常数向量b进行变换。

3. 利用回代法求解上三角矩阵U,得到线性方程组的解向量x。

实验结果:通过在MATLAB中编写相应的函数和脚本,我们成功求解了多个线性方程组。

例如,对于线性方程组:2x + 3y - z = 13x - 2y + 2z = -3-x + y + 3z = 7经过高斯消元法的计算,我们得到了方程组的解x = 1,y = -2,z = 3。

三、数值积分方法数值积分是计算方法中的重要内容之一,它用于计算函数在给定区间上的定积分。

应用MATLAB进行《计算方法》教学的一个案例

应用MATLAB进行《计算方法》教学的一个案例

Ke r : mp t t n l t o ; r ef t g M ATL y wo dsCo u i a me d Cu t n ; a o h v i i AB: a h n ae Te c i g c s
1 引 言
在 科 学 实 验 或 统 计 研 究 中 , 们 常 常 需 要 从 一 组 测 定 的 数 据 人 ( 如 N 个 点 (xy ) 求 得 自变 量 X和 因变 量 y的 一 个 近 似 解 例 (,. 去 ,)
A a hn s fCo p tt n l t o ig MATL Te c ig Ca e o m uai a o Meh d Usn AB

( p rme to ah ma c, u in r l iesy Ch xo g6 5 0 , ia De at n f te t s Ch xo gNoma v r t, u in 7 0 0Chn ) M i Un i
维普资讯
本 目 任 辑: 力 栏 责 编 王
・ ・ ・ ・ ・计算 机 教 育
应用 MA L B进行《 TA 计算方法》 教学的一个案例
唐 家德 ( 楚雄 师 范 学 院 数 学 系 , 南 楚雄 6 5 0 ) 云 7 0 0
摘 要 :计 算 方 法 》 培 养 学 生 算 法 意 识 和 能 力 的 基 本 课 程 , 能 靠 单 纯讲 授 来培 养 学 生 的科 学 计 算 能 力 , 须在 计 算 机环 境 下 通过 《 是 不 必 实验 来 完成 科 学 计 算 的 综 合 训 练 。本 文 结 合 自 己的教 学 实践 , 讨 了在 《 算 方 法》 中 应 用数 学软 件 MA L B进 行 “ 线拟 合” 学的 探 计 课 TA 曲 教

MATLAB数值计算方法与应用

MATLAB数值计算方法与应用

MATLAB数值计算方法与应用数值计算是一门利用数学方法和计算机技术解决实际问题的学科。

它广泛应用于各个领域,如物理学、工程学、金融学等。

而MATLAB作为一种强大的数值计算软件工具,具有丰富的数值计算库和易用的编程语言,能够方便地进行各种数值计算与分析。

一、MATLAB概述MATLAB是一种交互式数值计算环境和编程语言,由矩阵运算、绘图函数和大量实用工具箱组成。

它提供了广泛的数值计算功能,如线性代数、插值、数值积分、常微分方程求解等。

通过MATLAB,我们可以快速实现数学模型的建立与求解,并对结果进行可视化。

二、线性代数计算线性代数在数值计算中扮演着重要的角色。

MATLAB提供了丰富的线性代数函数,如矩阵求逆、矩阵分解、特征值计算等。

利用这些函数,我们可以方便地解决线性代数问题,如线性方程组求解、最小二乘拟合等。

三、插值与拟合在实际问题中,我们常常需要通过一些已知数据点插值或者拟合出一个函数。

MATLAB提供了多种插值和拟合函数,如线性插值、样条插值、多项式拟合等。

这些函数能够帮助我们利用已知数据点,预测或逼近未知数据点的函数值。

通过这些方法,我们可以更好地理解和分析实验数据。

四、数值积分数值积分是数值计算中的常见任务之一。

MATLAB提供了多种数值积分方法,如梯形法则、辛普森法则等。

利用这些方法,我们可以对函数进行数值积分,求取其面积、平均值等重要信息。

这些方法在物理学、工程学等领域中得到广泛应用。

五、常微分方程求解常微分方程是自然界中很多现象的数学描述,求解常微分方程对于我们了解现象的规律至关重要。

MATLAB提供了多种常微分方程求解方法,如欧拉法、龙格-库塔法等。

通过这些方法,我们可以数值求解常微分方程,研究其解的行为、相图等重要特性。

六、优化方法优化问题在实际应用中非常常见。

MATLAB提供了多种优化工具箱,如线性规划、非线性规划等。

通过这些工具箱,我们可以求解各种约束条件下的优化问题,如最小化/最大化目标函数、满足一系列约束条件等。

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

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

作业一1-1实验目的:寻求高效算法实验内容:设1x1nn n⎛⎫=+⎪⎝⎭,给出两个算法,求1023x,写出MATLAB程序,并统计计算法计算量。

若要计算量不超过20flop,应如何设计算法?算法一算法:令11tn=+,依次计算2481024,,,,t t t t⋅⋅⋅,最后用1024/t t。

界面:计算量:12flop算法二算法:直接计算t的1023次方。

程序:界面:计算量:1024flop若要计算量不超过20flop,采用第一种算法较合适。

作业二3-5 实验目的:应用不同迭代法求解代数方程实验内容:分别采用二分法、Newton法、Newton下山法、割线法求解方程4326005502002010x x x x-+--=在[0.1,1]中的根;精确到410-。

二分法算法:432()600550200201f x x x x x =-+--为连续函数,且由题意可知[0.1,1]为含根区间,令a=0.1,b=1,取p=(a+b)/2。

若f(p)=0则p 是方程f(x)=0的解;若f(a)f(p)<0则根在(a,p)内,取a 1=a,b 1=p ;否则根在区间(p,b)内,取a 1=p,b 1=b 。

重复上述过程直到达到精度要求为止。

程序:Newton 法 算法:建立牛顿迭代格式432132()600550200201()600*4*550*3*40020n n n n n n n n n n n n f p p p p p p p p f p p p p +-+--=-=-'-+- 直到1||n n p p +-小于精度要求时迭代结束,将1n p +作为结果输出。

Newton 下山法 算法:建立迭代格式432132()600550200201()600*4*550*3*40020n n n n n n n n n n n n f p p p p p p p p f p p p p λλ+-+--=-=-'-+- 其中λ是下山因子,在每步迭代中依次取1,1/2,1/4,…直到满足精度要求。

matlab-8章课后作业

matlab-8章课后作业
ans =
16530
>> c=uint8(87), d=uint8(190)
c =
87
d =
190
>> c+d
ans =
255
>> c-d
ans =
0
>> c*d
ans =
255
2.计算
(1)sin(60)
(2)e^3
(3)cos(3π/4)
>> sind(60)
ans =
0.8660
>> exp(3)
(4)a==d
(5)a|b>c
(6)~~d
>> a=39,b=58,c=3,d=7
a =
39
b =
58
c =
3
d =
7
>> a>b
ans =
0
>> a<c
ans =
0
>> a>b&&b>c
ans =
0
>> a==d
ans =
0
>> a|b>c
ans =
1
>> ~~d
ans =
1
7.编写脚本,计算上面第2题中的表达式。
(5)创建一个新的向量vecN,使其包含vec中所有等于2或4的元素的索引值.
(6)创建一个新的向量vecG,使其包含vec中去掉索引值为奇数且取值为2或4的元素后的所有元素.
>> vecR=vec'
vecR =
4
5
2

第7章 MATLAB在计算方法中的应用

第7章 MATLAB在计算方法中的应用

检查插值效果:plot(x,y,'r',x1,y1,'bo') 例2:x=[-5:1:5]; y=1./(1+x.^2);x0=[-5:0.1:5];
插值: y0=lagrange(x,y,x0);
精确值:
y1= 1./(1+x0.^2);
检查插值效果:plot(x0,y0,'--r',x0,y1,'-b')
>> x0=[0.3 0.32 0.35]; >> y0=[0.29552 0.31457 0.34290]; >> y1=[0.95534 0.94924 0.93937]; >> x=[0.3:0.005:0.35]; >> y=hermite(x0,y0,y1,x); >> plot(x,y,x0,y0) >>y= hermite (x0,y0,y1,0.34); >> y
例: 某实验对一根长10米的钢轨进行热源的温度传 播测试。用x表示测量点0:2.5:10(米),用h表示测 量时间0:30:60(秒),用T表示测试所得各点的温度 (℃)。试用线性插值求出在一分钟内每隔20秒、 钢轨每隔1米处的温度TI。 命令如下: x=0:2.5:10; h=[0:30:60]'; T=[95,14,0,0,0;88,48,32,12,6;67,64,54,48,41]; xi=[0:10]; hi=[0:20:60]'; TI=interp2(x,h,T,xi,hi);
x-xj ) xk-xj
将上述插值公式编写成M文件,取名 lagrange.m 句法结构: function y=lagrange(x0,y0,x) n=length(x0);m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n

高等应用数学问题的MATLAB求解_习题参考解答

高等应用数学问题的MATLAB求解_习题参考解答

【求解】 假设正三角形逆时针旋转 θ 度,则可以得出如图 2-2a 所示的示意图,三角形的三个 顶点为 (cos θ, sin θ), (cos(θ + 120◦ ), sin(θ + 120◦ )), (cos(θ + 240◦ ), sin(θ + 240◦ )),可以绘制出 其曲线,如图 2-2b 所示,试减小步距,如选择 ∆θ = 2, 1, 0.1,观察效果。 >> t=[0,120,240,0]*pi/180; xxx=[]; yyy=[]; for i=0:5:360 tt=i*pi/180; xxx=[xxx; cos(tt+t)]; yyy=[yyy; sin(tt+t)]; end
−1 −1
= A−1 − A−1 B C −1 + B T A−1 B
B T A−1
试根据上面的算法用 MATLAB 语句编写一个函数对矩阵 M 进行求逆,并通过一个小例子来 检验该程序,并和直接求逆方法进行精度上的比较。 【求解】 编写这个函数 function Minv=part_inv(A,B,C) Minv=inv(A)-inv(A)*B*inv(inv(C)+B’*inv(A)*B)*B’*inv(A);
>> M1=sym(M); iM0=inv(M1) >> norm(double(iM0)-iM) % 直接求解的误差范数 >> norm(double(iM0)-iM1) % 间接求解的误差范数 可见,用间接方法得出的逆矩阵误差更大,因为在这里新编写的函数中 inv() 函数使用 了多次,由此产生很大的传递误差。由此可以得出结论:如果某问题存在直接解,则尽量别 使用间接方法,以加大传递误差。 11 下面给出了一个迭代模型 xk+1 = 1 + yk − 1.4x2 k yk+1 = 0.3xk 写出求解该模型的 M-函数,如果取迭代初值为 x0 = 0,y0 = 0,那么请进行 30000 次迭代求出 一组 x 和 y 向量,然后在所有的 xk 和 yk 坐标处点亮一个点 (注意不要连线),最后绘制出所 需的图形。提示 这样绘制出的图形又称为 Henon 引力线图,它将迭代出来的随机点吸引到一 起,最后得出貌似连贯的引力线图。 【求解】 用循环形式解决此问题,可以得出如图 2-1 所示的 Henon 引力线图。 >> x=0; y=0; for i=1:29999 x(i+1)=1+y(i)-1.4*x(i)^2; y(i+1)=0.3*x(i); end plot(x,y,’.’) 上述的算法由于动态定义 x 和 y ,所以每循环一步需要重新定维,这样做是很消耗时间 的,所以为加快速度,可以考虑预先定义这两个变量,如给出 x=zeros(1,30000)。 12 用 MATLAB 语言的基本语句显然可以立即绘制一个正三角形,试结合循环结构,编写一个 小程序,在同一个坐标系下绘制出该正三角形绕其中心旋转后得出的一系列三角形,还可以 调整旋转步距观察效果。

计算方法书中的MATLAB实例

计算方法书中的MATLAB实例

求解例题得
一次插值和 二次插值 如右图所示:
用Matlab实现最小二乘拟合
在Matlab程序编辑器中输入:
function p=nafit(x,y,m) % x,y为数据;m为拟合多项 式次数 A=zeros(m+1,m+1); % zeros()生成零矩阵 for i=0:m for j=0:m A(i+1,j+1)=sum(x.^(i+j)); end b(i+1)=sum(x.^i.*y); end a=A\b'; p=fliplr(a'); % fliplr()为矩阵左右翻转
在Matlab程序编辑器中输入: function [L,U]=nalu(a) % a为可逆方阵;L返回单位下 三角矩阵;U返回上三角矩阵 n=length(a); U=zeros(n,n);L=eye(n,n); U(1,:)=a(1,:);L(2:n,1)=a(2:n,1)/U(1,1); for k=2:n U(k,k:n)=a(k,k:n)-L(k,1:k-1)*U(1:k-1,k:n); L(k+1:n,k)=(a(k+1:n,k)-L(k+1:n,1:k-1)*U(1:k1,k))/U(k,k); end
a((k+1):n,(k+1):(n+1))=a((k+1):n,(k+1):(n+1))a((k+1):n,k)/a(k,k)*a(k,(k+1):(n+1)); a((k+1):n,k)=zeros(n-k,1); if flag==0,a,end end
% 回代 x=zeros(n,1); x(n)=a(n,n+1)/a(n,n); for k=n-1:-1:1 x(k,:)=(a(k,n+1)a(k,(k+1):n)*x((k+1):n))/a(k,k); end

计算方法matlab实验指导

计算方法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,插值(1) lagrange 插值 直接调用lagrange 插值函数 langrange ()例 给出()ln f x x =的数值表,用lagrange 插值计算ln(0.54)的近似值x=[0.4:0.1:0.8];y=[-0.916291 -0.693147 -0.510826 -0.357765 -0.223144];lagrange (x,y,0.54)(2)runge 现象的产生.例.对21()1f x x=+在区间[-5,5]上,取10个节点用lagrange 插值(?) x=[-5:1:5];y=1./(1+x.^2);x0=[-5:0.1:5];y0=lagrange(x,y,x0);y1=1./(1+x.^2);plot(x0,y0,’--r ’)hold onplot(x0,y1,’-b ’) 原曲线(3)分段线性插值调用内部函数 : interp1 一维线性插值 yi=interp1(x,y,xi) yi=interp1(y,xi) (默认x=1:n,n 为y 的元素个数) yi=interp1(x,y,xi,’method ’) (method : (nearest 线性最近项插值),(linear 线性插值),(spline 三次样条插值),(cubic 三次插值))例 正弦函数插值x=[0:0.1:10];y=sin(x);xi=[0:.25:10];yi=interp1(x,y,xi);plot(x,y,’o ’,xi,yi)同理有二维线性插值 interp2 三次线性插值 interp3(4)三次样条插值调用函数spline 调用格式 yy=spline(x,y,xx) pp=spline(x,y)x=0:10;y=sin(x);xx=0:.25:10;yy=spline(x,y,xx);plot(x,y,’o ’,xx,yy)(5)最小二乘拟合调用函数 polyfit 调用格式 polyfit(x,y,n) (n 为多项式阶数)x=[0.5:0.5:3.0];y=[1.75 2.45 3.81 4.80 8.00 8.60];a=polyfit(x,y,2);x1=[0.5:0.05:3.0];y1=a(3)+a(2)*x1+a(1)*x1.^2;plot(x,y,’*’)hold onplot(x1,y1,’-r ’)(6)快速fourier 变换调用函数 fft (快速离散fourier 变换) 调用格式 fft(x) fft(x,n)fft2 (二维快速离散fourier 变换)fftn (n 维快速离散fourier 变换)ifft (快速离散fourier 逆变换)例 给出一张记录{k x }=[4 3 2 1 0 1 2 3],用fft 算法求{k x },离散频谱{k c },为了更好了解fft 算法的性质,再加入一对应记录{k y }=[1 1 1 1 1 1 1 1],求两记录的线性卷积运算.a 原题的计算x=[4 3 2 1 0 1 2 3];fft(x)b 卷积运算x=[4 3 2 1 0 1 2 3];y=[1 1 1 1 1 1 1 1];fx=fft(x,19)fy=fft(y,19)xy=conv(x,y)yx=ifft(fx.*fy)real(yx)2 积分和微分(1)矩形求积公式 调用函数 cumsum 调用格式 cumsum(x), cumsum(x,dim)(dim 指明求和是从第dim 维开始的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 +
=


⎪=++

⎪⎪
=++


=++


⎪=++++
⎪⎩
程序
界面。

相关文档
最新文档