当前位置:文档之家› 数值分析中直接三角分解法matlab程序

数值分析中直接三角分解法matlab程序

%直接三角分解法(1)

function [x,y,L,U]=nalu(a,b)

n=length(a);

x=zeros(n,1);y=zeros(n,1);

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:k-1,k))/U(k,k);

end

for i=2:n

y(1,1)=b(1,1);

y(i,1)=b(i,1)-L(i,1:i-1)*y(1:i-1,1); end

y(:,1);

for i=n-1:-1:1

x(n,1)=y(n,1)/U(n,n);

x(i,1)=(y(i,1)-U(i,i+1:n)*x(i+1:n,1))/U (i,i);

end

x(:,1);

clear all;

clc;

A=[1,2,3;2,5,2;3,1,5];

b=[14;18;20];

[x,y,L,U]=nalu(A,b);

function [x,y,L,U]=sanjiao(a,b)

n=length(a);

x=zeros(n,1);

y=zeros(n,1);

L=eye(n,n);

U=zeros(n,n);

%L,U·Ö½â

U(1,:)=a(1,:);

L(2:n,1)=a(2:n,1)/U(1,1);

for j=2:n

U(j,j:n)=a(j,j:n)-L(j,1:j-1)*U(1:j-1,j: n);

L(j+1:n,j)=(a(j+1:n,j)-L(j+1:n,1:j-1)*U (1:j-1,j))/U(j,j);

end

%Çó½â£¬ÁíUx=y,Ly=b

y(1,1)=b(1,1);

for i=2:n

y(i,1)=b(i,1)-L(i,1:i-1)*y(1:i-1,1); end

x(n,1)=y(n,1)/U(n,n);

for i=n-1:-1:1

x(i,1)=(y(i,1)-U(i,i+1:n)*x(i+1:n,1))/U (i,i);

end

clear all;

a=[1,2,3;2,5,2;3,1,5];

b=[14;18;20];

[x,y,L,U]=sanjiao(a,b);

x

y

MATLAB数值计算功能(向量、矩阵、数组、稀疏矩阵)

数值计算功能 向量及其运算 1、向量生成 (1)、直接输入 向量元素用“[ ]”括起来,用空格或逗号生成行向量,用分号生成列向量 a1=[11 14 17 18] a2=[11,14,17,18] a2=[11;14;17;18] %列向量 用“’”可以进行向量转置 a1=[11 14 17 18] a4=a1' %a1行向量,a4列向量 也可以用组合方法: A=[1 2 3]; B=[7 8 9]; C=[A 4 ones(1,2) B] (2)、等差元素向量生成 冒号生成法:Vec=Vec0:n:Vecn,其中Vec表示生成的向量,Vec0表示第一个元素,n表示步长,Vecn表示最后一个元素 使用linespace函数:Vec=linespace(Vec0,n,Vecn),其中Vec表示生成的向量,Vec0表示第一个元素,n表示生成向量元素个数(默认n=100),Vecn表示最后一个元素 vec1=10:5:50 vec2=50:-5:10 vec3=linspace(10,50,6) 2、向量的基本运算 (1)、向量与数的四则运算 向量中每个元素与数的加减乘除运算(除法运算时,向量只能作为被除数,数只能作为除数)vec1=linspace(10,50,6) vec1+100 vec2=logspace(0,10,6) %对数等分向量 vec2/100 (2)、向量与向量之间的加减运算 向量中的每个元素与另一个向量中相对应的元素的加减运算 vec1=linspace(10,50,6) vec2=logspace(0,2,6) vec3=vec1+vec2 (3)、点积、叉积和混合机 点积:dot函数,注意向量维数的一致性 x1=[11 22 33 44] x2=[1 2 3 4]

非周期信号(方波,锯齿波,三角波)的合成分解以及频谱分析的MATLAB实现

连续周期信号的傅立叶级数分析及其MATLAB实现 摘要 现在,MATLAB已经发展成为适合多学科的大型软件,在世界各高校,MALAB已经成为线性代数、数值分析、数理统计、优化方法、自动控制、数字信号处理、动态系统仿真等高级课程的基本应用工具。本次课程设计则在深入研究连续时间信号傅里叶级数分析理论知识的基础上,利用MATLAB强大的图形处理功能、符号运算功能以及数值计算功能,通过MATLAB编程进行图形功能仿真,从而实现连续时间周期信号频域分析的仿真波形,包括以下内容:用MATLAB实现周期信号的傅里叶级数分解与综合的波形;用MATLAB实现周期信号的单边频谱及双边频谱的波形与分析;用MATLAB 实现典型周期信号的频谱的波形。 关键词:MATLAB;图形处理;傅里叶级数;周期信号;频谱

目录 摘要................................................... I 1 MATLAB. (1) 1.1简介 (1) 1.2 主要功能 (1) 1.3 特点 (2) 2连续周期信号的傅立叶级数 (3) 2.1 连续时间周期信号的分解 (3) 1.1.1三角形式的傅里叶级数 (3) 2.1.2指数形式的傅里叶级数 (4) 2.1.3狄里赫里条件 (4) 3连续周期信号的傅里叶级数分解与合成的MATLAB实现 3.1 方波 (5) 3.2锯齿波 (6) 3.3 三角波 (8) 3.4吉布斯现象 (11) 4连续周期信号的频谱分析的MATLAB实现 (13) 参考文献 (17) 附录 (18)

1 MATLAB 1.1简介 MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 MATLAB是一种科学计算软件,主要适用于矩阵计算及控制和信息处理领域的分析设计。它使用方便,输入简捷,运算效率高,内容丰富,并且很容易由用户自行扩展。Matlab当前已成为美国和其他发达国家在大学教学和科学研究中最常用而必不可少的工具 MATLAB需要较多的高等数学的知识,要随着年级的增加,随着matlab 在专业技术上应用才能逐渐深入掌握 MATLAB在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 1.2 主要功能 1.数值分析 2.数值和符号计算 3.工程与科学绘图 4.控制系统的设计与仿真 5.数字图像处理 6.数字信号处理 7.通讯系统设计与仿真 8.财务与金融工程

数值计算方法程序

数值分析[第二版] MATLAB调试报告(2015/2016学年第二学期) 教师:许松林 学号:1411111110 姓名:王云峰 班级:14信计

目录 第一章绪论 (3) 例1.22 M脚本文件与M函数文件(P17) (3) 例1.23 for...end循环结构(P19) (3) 例1.24 while...end循环结构(P20) .. (4) 例1.25 if...else...end条件结构(P20).. (4) 例1.26 switch...case条件结构(P21) (4) 例1.27 try...catch...end(P22) .. (5) 例1.28 鸭兔同笼问题(P23) (5) 例1.29 M函数文件求和(P23) (5) 例1.30 return命令(P24) (6) 例1.31 M文件执行过程(P25) (6) 例1.32 多个子图窗口的建立(P26) (7) 例1.33 二维曲线的绘制(P27) (8) 例1.34 极坐标作图(P28) (8) 例1.35 符号函数图形(P29) (9) 例1.36 fplot命令(P30) (10) 例1.37 ezpolar命令(P31) (10) 例1.38 坐标轴与文字标(P33) (11) 例1.39 空间曲线绘制(P35) (12) 例1.40 三维网格图形与曲面图(P36) (12) 例1.41 带等高线网格图(P38) (13) 例1.42 带等高线表面图(P38) (13) 例1.43 空间曲线符号作图(P40) (14) 例1.44 方程微分(P40) (14) 例1.45 方程积分(P41) (15) 例1.46 求解常微分方程(P42) (15) 例1.47 求非线性方程实根(P43) (15) 例1.48 内建函数作图(P43) (16) 例1.49 多项式求根(P44) (16) 例1.50 线性代数方程组求解(P45) (17) 第二章解线性方程租的直接法 (18) 例2.17高斯消去法(P84) (18) 例2.18列主元素法(P86) (19) 第三章解线性方程组的迭代法 (20) 例3.8雅可比迭代法(P107) (20) 例3.9高斯-赛德尔迭代法(P109) (21) 第四章非线性方程求根 (23) 例4.12 方程求根的一般方法(P129) (23)

数值计算方法实验报告

数值分析实验报告 实验一、解线性方程组的直接方法——梯形电阻电路问题 利用追赶法求解三对角方程组的方法,解决梯形电阻电路问题: 电路中的各个电流{1i ,2i ,…,8i }须满足下列线性方程组: R V i i =- 22 21 0 252321=-+-i i i 0 252 432=-+-i i i 0 252 543=-+-i i i 0 252 654=-+-i i i 0 252 765=-+-i i i 0 252 876=-+-i i i 052 87=+-i i 设V 220=V ,Ω=27R ,运用追赶法,求各段电路的电流量。 问题分析: 上述方程组可用矩阵表示为: ???? ?????? ??? ? ????????????= ????????????????????????????????????????????????????--------------00 00 00 01481.852 25200000025200000025200000025200000025200000025200000022 87654321i i i i i i i i

问题转化为求解A x b =,8阶方阵A 满足顺序主子式(1,2...7)0i A i =≠,因此矩阵A 存在唯一的Doolittle 分解,可以采用解三对角矩阵的追赶法! 追赶法 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]; Matlab 程序 function x= zhuiganfa( a,b,c,d ) %追赶法实现要求:|b1|>|C1|>0,|bi|>=|ai|+|ci| n=length(b); u=ones(1,n); L=ones(1,n); y=ones(1,n); u(1)=b(1); y(1)=d(1); for i=2:n L(i)=a(i)/u(i-1); u(i)=b(i)-c(i-1)*L(i); y(i)=d(i)-y(i-1)*L(i); end x(n)=y(n)/u(n); for k=n-1:-1:1 x(k)=(y(k)-c(k)*x(k+1))/u(k); end end MATLAB 命令窗口输入: 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]; x= zhuiganfa(a,b,c,d ) 运行结果为: x = 8.1478 4.0737 2.0365 1.0175 0.5073 0.2506 0.1194 0.0477 存在问题 根据电路分析中的所讲到的回路电流法,可以列出8个以回路电流为独立变量的方程,课本上给出的第八个回路电流方程存在问题,正确的应该是78240i i -+=;或者可以根据电路并联分流的知识,同样可以确定78240i i -+=。正确的处理结果应为: x = 8.1481 4.0741 2.0370 1.0185 0.5093 0.2546 0.1273 0.0637

数值分析实验报告

《数值分析》 实验报告 学院:计算机科学与软件学院姓名:XXX 班级:计算机XX班 学号:XXXXXX

实验一:舍入误差与数值稳定性 实验目的: 1、 通过上机编程,复习巩固以前所学程序设计语言; 2、 通过上机计算,了解舍入误差所引起的数值不稳定性。 3、 通过上机计算,了解运算次序对计算结果的影响,从而尽量避免大数吃小数的现象。 实验内容:用两种不同的顺序计算644834.110000 12 ≈∑=-n n ,分析其误差 的变化。 实验流程图:

实验源程序: #include #include void main() { int i; float s1=0,s2=0,d1,d2; for (i=1;i<=10000;i++) s1=s1+1.0f/(i*i); for (i=10000;i>=1;i--) s2=s2+1.0f/(i*i); d1=(float)(fabs(1.644834-s1)); d2=(float)(fabs(1.644834-s2)); printf("正向求和结果为%f\n 误差为%f\n\n",s1,d1); printf("反向求和结果为%f\n 误差为%f\n\n",s2,d2); if(d1

实验结果: 实验分析:第一次做数值实验,又一次使用C语言编程,没有了刚学习C语言的艰难,能够将实验步骤转换成流程图并编写出完整的实验代码,在经过多次调试、改正后得到正确的程序和结果。这个实验较简单,计算误差时如果输入数据有误差,而在计算过程中舍入误差不增长,则称此算法是稳定的,否则称此算法是数值不稳定的,减少运算次数可以减小舍入误差。在运算中,如果参加运算的数的数量级相差很大,而计算机位数有限,如不注意运算次序就可能出现大数“吃掉”小数的现象,进而影响计算结果的可靠性,所以计算过程中要注意运算次序,避免出现这种现象。 实验二:拉格朗日插值法和牛顿插值法 实验目的:分别用拉格朗日差值和牛顿插值解决数学问题,并比较各方法的优略。 1、拉格朗日插值 实验内容: 按下列数据 -3.0 -1.0 1.0 2.0 3.0 x i 1.0 1.5 2.0 2.0 1.0 y i

数值分析

二 数值分析 (一) 数值分析的背景 随着计算机技术的发展和科学技术的进步, 计算数学的理论与基本方法已影响到许多学科, 并在生产、管理以及科学研究中得到了广泛应用。数值分析作为计算数学的主要部分, 它是研究用计算机求解各种数学问题的数值计算方法及其理论与软件实现, 是一门与计算机使用密切结合的实用性和实践性很强的数学课程, 是应用数学专业、信息与计算科学专业及很多理工科专业的核心课程。数值分析除了具备数学高度抽象性与严密科学性的特点外, 有其自身的特点, 其理论体系构建、算法设计等的思维方式具有鲜明特征, 与其它数学课程相比, 更加注重方法和解决实际问题的工程思想, 特别注意在方法的精确性和有效性之间平衡。[11] (二)误差来源 利用数值方法求解得到的数值解是解析解的近似结果,因而误差是不可避免的。误差的来源是多方面的,产生误差的原因主要有以下几个方面: 1.模型误差:数学模型——对实际问题的仅是刻画:基于对实际问题近似描述的数学模型进行数值计算,例如利用函数的n 阶Taylor 展式 ()()()()()() () () () ( ) 2 00000000 2! ! n n n f x f x f x f x f x x x x x x x x x n ο '''=+-+ -++ -+- 计算函数值; 2.观测误差:数学模型或计算公式中通常包含若干参数,这些参数往往是通过观测或实验得到的,这样得到的参数与其真值之间有一定的差异即所谓的观测误

差,例如描述弹簧受迫振动的二阶线性常系数微分方程() 2 2 d x dx m kx f t dt dt ω ++=中的质量m 、阻尼系数ω和弹性系数k 等。更一般地:对物体的长宽高、电压、温度、速度的量测等。 3.截断误差:许多数学运算是通过极限过程定义的,如微分、积分以及无穷级数求和等,由于计算机只能完成有限的算术预算和逻辑运算,所以在利用计算机进行计算是需要把无限的计算过程用有限的计算过程代替,由此产生的误差成为截断误差; 4.舍入误差:实际计算时只能按有限位进行,特别是里用计算机计算,由于计算机的有限位的限制,对参与运算的数据以及运算结果往往要进行舍入,例如利用公式2A R π= 计算圆的面积时,π需用有限的小数代替,由此产生的误差成为舍入误差。 (三)计算的基本准则 1.尽量减少计算步骤,简化计算; 2.尽量避免两个相近的数减,例:7 1.23456789 1.23456788 0.0000000110 0.1 a b a b -=?? =?? -==? 原始数据有9位有效数字,运算结果只有1位有效数字。 3.尽量避免较大的数和较小的数相加,例:510000100.100000.10000 10000.110000 a b a b ?==?? =?? +== 较小的数被较大的数“吃”掉了。 4.尽量避免绝对值较小的数做除数,例:当x 较大时 , 1000 =+ 。

数值分析几十个程序

第一题 关于舍入误差累计的效果模拟。x*是在(0,1)上服从均匀分布的随机数,对x*取5位有效数字得到x,将产生的k (比如取为10000)个x*(x )相加得到X*(X ),研究X*-X 的分布情况以及X*-X 和k 的关系。将得到的结果用图形表示出来。 0102030405060708090100 -4-2024681012 -5 100 200 300 400 500 600 700 800 900 1000 -12 K 值 误差 k=1;

kk=ones(1,1000); xc=ones(1,1000); whil e k<=1000 r=rand(1,k); v=vpa(r,5); x0=sum(r); x1=sum(v); cha=x0-x1; xc(k)=cha; kk(k)=k; k=k+1; end; pl ot(kk,xc,'rh') 可以看出随着处理的数据的增大误差也越来越大,但是还分布在横轴的两侧 第二题研究产生各种特定矩阵的方法(阶数在10-100),比如对称阵,三对角阵,正定矩阵,正交阵,对角占优矩阵,说明如何生成。(1)生成对称矩阵 k=10; a=rand(10,10); for i=1:k %先生成一个下三角矩阵; for j=1:k if j>i a(i,j)=0; end; end; end; aa=a'; %加上他本身的转置; g=a+aa g = 1.9760 0.0377 0.8852 0.9133 0.7962 0.0987 0.2619 0.3354 0.6797 0.1366 0.0377 0.2135 0.6538 0.4942 0.7791 0.7150 0.9037 0.8909 0.3342 0.6987 0.8852 0.6538 1.4881 0.5000 0.4799 0.9047 0.6099 0.6177 0.8594 0.8055 0.9133 0.4942 0.5000 1.7730 0.0287 0.4899 0.1679 0.9787 0.7127 0.5005 0.7962 0.7791 0.4799 0.0287 0.1429 0.5216 0.0967 0.8181 0.8175 0.7224 0.0987 0.7150 0.9047 0.4899 0.5216 1.6007 0.4538 0.4324 0.8253 0.0835

清华大学研究生高等数值分析计算实验奇异值分解SVD以及图像压缩matlab源程序代码

第1部分方法介绍 奇异值分解(SVD )定理: 设m n A R ?∈,则存在正交矩阵m m V R ?∈和n n U R ?∈,使得 T O A V U O O ∑??=?? ?? 其中12(,,,)r diag σσσ∑= ,而且120r σσσ≥≥≥> ,(1,2,,)i i r σ= 称为A 的奇异值,V 的第i 列称为A 的左奇异向量,U 的第i 列称为A 的右奇异向量。 注:不失一般性,可以假设m n ≥,(对于m n <的情况,可以先对A 转置,然后进行SVD 分解,最后对所得的SVD 分解式进行转置,就可以得到原来的SVD 分解式) 方法1:传统的SVD 算法 主要思想: 设()m n A R m n ?∈≥,先将A 二对角化,即构造正交矩阵1U 和1V 使得 110T B n U AV m n ??=?? -??其中12 00 n n B δγγδ???? ??=?????? 然后,对三角矩阵T T B B =进行带Wilkinson 位移的对称QR 迭代得到:T B P BQ =。 当某个0i γ=时,B 具有形状1 2B O B O B ?? =? ??? ,此时可以将B 的奇异值问题分解为两个低阶二对角阵的奇异值分解问题;而当某个0i δ=时,可以适当选取'Given s 变换,使得第i 行元素全为零的二对角阵,因此,此时也可以将B 约化为两个低 阶二对角阵的奇异值分解问题。 在实际计算时,当i B δε∞≤或者() 1j j j γεδδ-≤+(这里ε是一个略大于机器精度的正数)时,就将i δ或者i γ视作零,就可以将B 分解为两个低阶二对角阵的奇异值分解问题。

《Matlab程序设计》课程教学大纲

Matlab程序设计 Matlab Program Design 一、课程基本情况课程类别:专业任选课课程学分:2学分课程总学时:32学时,其中讲课:24学时,实验(含上机):8学时课程性质:选修开课学期:第4学期先修课程:计算机基础,高等数学,线形代数适用专业:电子科学与技术 教材:MATLAB程序设计教程,中国水利水电出版社,刘卫国,2010,第2版开课单位:电子与信息工程学院电子科学与技术系二、课程性质、教学目标和任务 MATLAB程序设计是电子与电气信息类相关专业的专业任选课程之一。MATLAB是由MathWorks 公司1985 年推出的一种面向科学与工程的计算软件,它具有极强的数值计算、图形文字处理、数据分析、动态仿真、信号处理等功能,涉及了数值分析、自动控制、信号处理、图像处理等十几个领域的计算和图形显示,功能强大。因此,将MATLAB引入教学,强化应用能力培养,学生在学习专业基础课程时,增加工程应用背景,在打好专业基础的同时,提高学生的应用、创新意识。通过本课程的学习,使学生学习和掌握如何利用MATLAB对所学理论、原理和方法进行计算机仿真,通过仿真,加深对所学知识的理解和掌握,解决学习相关课程中遇到的抽象问题,为后续专业课程的学习奠定基础。通过工程软件在电气类专业基础课程的应用,提高学生动手能力、分析问题与解决问题的能力,到达对学生的工程意识培养的目的。 三、教学内容和要求第1章MATLAB系统环境(2学时) (1 )了解MATLAB的影响及其开展历史和MATLAB 7.0的主要功能;(2)理解MATLAB 7.0的运行环境与安装过程,熟悉菜单栏、工具栏的使用; ( 3)掌握命令窗口、历史记录窗口、当前目录窗口的使用方法;重点:命令窗口、历史记录窗口、当前目录窗口的使用方法;难点:MATLAB 7.0的辅助局部和MATLAB的数学函数库。第2章MATLAB数据及其运算(2学时)(1 )了解元胞数组、结构与结构数组; ( 2)理解一、二维数组的创立方法;( 3)掌握数值表示、变量表达式、矩阵的表示、字符串矩阵的算术运算、数组运算;重点:矩阵线性运算;创立数组、数组的算术运算;难点:数组运算。 第3章MATLAB矩阵分析与处理(2学时)(1)了解矩阵分解:矩阵的三角分解、矩阵的正交分解、矩阵的平方根分解、稀疏矩阵; ( 2)理解矩阵的初等变换;( 3)掌握矩阵分析:矩阵结构变换、矩阵的逆与伪逆、方阵的行列式; 重点:矩阵线性运算:矩阵的特征值、矩阵的正交基、矩阵的二次型和秩;创立数组、数组的算术运算;难点:矩阵线性运算。 第4章MATLAB程序设计(4学时)(1)了解程序的调试、良好的编程习惯;

第06章_MATLAB数值计算_例题源程序汇总

第6章 MATLAB 数值计算 例6.1 求矩阵A 的每行及每列的最大和最小元素,并求整个矩阵的最大和最小元素。 1356 78256323578255631 01-⎡⎤⎢⎥ -⎢ ⎥=⎢⎥⎢⎥ -⎣⎦A A=[13,-56,78;25,63,-235;78,25,563;1,0,-1]; max(A,[],2) %求每行最大元素 min(A,[],2) %求每行最小元素 max(A) %求每列最大元素 min(A) %求每列最小元素 max(max(A)) %求整个矩阵的最大元素。也可使用命令:max(A(:)) min(min(A)) %求整个矩阵的最小元素。也可使用命令:min(A(:)) 例6.2 求矩阵A 的每行元素的乘积和全部元素的乘积。 A=[1,2,3,4;5,6,7,8;9,10,11,12]; S=prod(A,2) prod(S) %求A 的全部元素的乘积。也可以使用命令prod(A(:)) 例6.3 求向量X =(1!,2!,3!,…,10!)。 X=cumprod(1:10) 例6.4 对二维矩阵x ,从不同维方向求出其标准方差。 x=[4,5,6;1,4,8] %产生一个二维矩阵x y1=std(x,0,1) y2=std(x,1,1) y3=std(x,0,2) y4=std(x,1,2) 例6.5 生成满足正态分布的10000×5随机矩阵,然后求各列元素的均值和标准方差,再求这5列随机数据的相关系数矩阵。 X=randn(10000,5); M=mean(X) D=std(X) R=corrcoef(X)

例6.6 对下列矩阵做各种排序。 185412613713-⎡⎤ ⎢⎥=⎢⎥ ⎢⎥-⎣⎦ A A=[1,-8,5;4,12,6;13,7,-13]; sort(A) %对A 的每列按升序排序 -sort(-A,2) %对A 的每行按降序排序 [X,I]=sort(A) %对A 按列排序,并将每个元素所在行号送矩阵I 例6.7 给出概率积分 2 (d x x f x x -⎰ e 的数据表如表6.1所示,用不同的插值方法计算f (0.472)。 x=0.46:0.01:0.49; %给出x ,f(x) f=[0.4846555,0.4937542,0.5027498,0.5116683]; format long interp1(x,f,0.472) %用默认方法,即线性插值方法计算f(x) interp1(x,f,0.472,'nearest') %用最近点插值方法计算f(x) interp1(x,f,0.472,'spline') %用3次样条插值方法计算f(x) interp1(x,f,0.472,'cubic') %用3次多项式插值方法计算f(x) format short 例6.8 某检测参数f 随时间t 的采样结果如表6.2,用数据插值法计算t =2,7,12,17,22,17,32,37,42,47,52,57时的f 值。 T=0:5:65; X=2:5:57;

lu分解迭代求精法matlab

LU分解迭代求精法是一种经典的数值计算方法,在MATLAB中的应 用也非常广泛。LU分解迭代求精法的核心思想是将矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积,并通过迭代逐步求解线性方程组,从而得到更加精确的解。在这篇文章中,我将以从简到繁、由浅入深 的方式来探讨LU分解迭代求精法在MATLAB中的应用,以便读者能 够更深入地理解这一经典的数值计算方法。 让我们来了解一下LU分解迭代求精法的基本原理。LU分解是将一个 矩阵分解为一个下三角矩阵L和一个上三角矩阵U的乘积,即A=LU。在MATLAB中,可以通过lu函数来实现LU分解,具体的语法是[L,U]=lu(A)。得到L和U之后,就可以通过迭代的方式逐步求解线性方程组Ax=b,从而得到精确的解。在MATLAB中,可以使用迭代法来求解线性方程组,常见的迭代方法包括雅可比法、高斯-赛德尔法等。 接下来,让我们来看一个简单的例子,来说明LU分解迭代求精法在MATLAB中的应用。假设有一个线性方程组Ax=b,其中矩阵A是一个3x3的矩阵,向量b是一个3维的列向量。我们可以先通过lu函数将矩阵A分解为下三角矩阵L和上三角矩阵U,然后利用迭代方法逐 步求解线性方程组。这样就可以得到精确的解x。 在实际应用中,LU分解迭代求精法在MATLAB中的应用非常广泛。 它不仅可以用于求解线性方程组,还可以用于求解矩阵的逆、计算行 列式等。由于MATLAB自带了丰富的数值计算函数和工具箱,因此可

以非常方便地实现LU分解迭代求精法,并得到高精度的数值结果。 LU分解迭代求精法是一种经典的数值计算方法,在MATLAB中有着广泛的应用。通过对矩阵进行LU分解,然后利用迭代方法逐步求解线性方程组,可以得到更加精确的数值解。在实际应用中,我们可以利用MATLAB提供的丰富函数和工具箱,非常方便地实现LU分解迭代求精法,并得到高精度的数值计算结果。 对于个人而言,我认为掌握LU分解迭代求精法在MATLAB中的应用是非常重要的。它不仅可以帮助我们更好地理解和掌握数值计算的基本原理,还可以为我们在实际工程和科学计算中提供强大的数值计算工具。我强烈建议大家在学习MATLAB的过程中,多加练习和应用LU分解迭代求精法,从而提升自己的数值计算能力。 通过本文的探讨,相信大家对LU分解迭代求精法在MATLAB中的应用有了更深入的理解。我也希望大家能够在实际应用中多加练习,并发掘LU分解迭代求精法的更多潜力和应用价值。希望本文对大家有所帮助,谢谢阅读! 至此,我们对LU分解迭代求精法在MATLAB中的应用进行了全面的探讨和分析,希期对您有所帮助。LU分解是一种十分重要的矩阵分解方法,可以将一个矩阵分解为一个下三角矩阵L和一个上三角矩阵U 的乘积。这种分解方法在数值计算中有着广泛的应用,尤其在求解线

数值分析韩旭里答案

数值分析韩旭里答案 【篇一:数值分析上机题目】 >1631110xxxx 材料科学与工程学院 一.第2章插值法 l2.7 给定数据表2-15.用newton插值公式计算3次插值多项式 n3(x). 表2-15 x f(x) 1 1.25 1.5 2.50 0 1.00 2 5.50 a. matlab代码如下,two.m, %第二章,p45,练习题2第七题 clear(); x=[1,1.5,0,2]; y(:,1)=[1.25,2.50,1.00,5.50];%已知点集合x和y syms t w; w(1)=1; %计算基函数序列w和差商表y,以及函数序列的权数diag(y),计 算的牛顿三次多项式表述为t的函数 for j=2:length(x) for i=j:length(x) y(i,j)=(y(i,j-1)-y(i-1,j-1))/(x(i)-x(i-j+1)); i=i+1; end w(j)=prod(t-x(1:j-1)); j=j+1; end disp(三次牛顿插值多项式为); disp(collect(w*diag(y))); plot(x,y(:,1),*); hold on; fplot(collect(w*diag(y)),[-0.5,2.5]); legend({已知点集,三次牛顿插值多项式函 数},location,northwest,fontsize,14); xlabel(x,fontsize,16); ylabel(y,fontsize,16); hold off; b. 计算结果如下: 二.第3章函数逼近与数据拟合 a. matlab代码,three.m, %第三章函数逼近与数据拟合,p68练习题,第2题 clear(); syms x; %所使用的非线性基函数序列,用符号表示 y=abs(x);%被逼近函数f=[1,x^2,x^4]; %求解法方程的系数矩阵a*gn=b,其中a和b均为行向量 gn=ones(length(f),length(f)); for i=1:length(f) for j=1:length(f) gn(i,j)=int(f(i)*f(j),-1,1);j=j+1; end

数值分析中直接三角分解法matlab程序

%直接三角分解法(1) function [x,y,L,U]=nalu(a,b) n=length(a); x=zeros(n,1);y=zeros(n,1); 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:k-1,k))/U(k,k); end for i=2:n y(1,1)=b(1,1); y(i,1)=b(i,1)-L(i,1:i-1)*y(1:i-1,1); end y(:,1); for i=n-1:-1:1 x(n,1)=y(n,1)/U(n,n); x(i,1)=(y(i,1)-U(i,i+1:n)*x(i+1:n,1))/U (i,i); end x(:,1); clear all;

clc; A=[1,2,3;2,5,2;3,1,5]; b=[14;18;20]; [x,y,L,U]=nalu(A,b); function [x,y,L,U]=sanjiao(a,b) n=length(a); x=zeros(n,1); y=zeros(n,1); L=eye(n,n); U=zeros(n,n); %L,U·Ö½â U(1,:)=a(1,:); L(2:n,1)=a(2:n,1)/U(1,1); for j=2:n U(j,j:n)=a(j,j:n)-L(j,1:j-1)*U(1:j-1,j: n); L(j+1:n,j)=(a(j+1:n,j)-L(j+1:n,1:j-1)*U (1:j-1,j))/U(j,j); end %Çó½â£¬ÁíUx=y,Ly=b y(1,1)=b(1,1); for i=2:n y(i,1)=b(i,1)-L(i,1:i-1)*y(1:i-1,1); end

数值计算与MATLAB方法课后答案

第一章习题 1. 序列满足递推关系,取 及 试分别计算,从而说明递推公式对于计算是不稳定的。 n 1 1 0.01 0.0001 2 0.01 0.0001 0.000001 3 0.0001 0.000001 0.00000001 4 0.000001 0.0000000 1 10-10 5 0.00000001 10-10 n 1 1.000001 0.01 0.000099 2 0.01 0.000099 -0.00009901 3 0.000099 -0.0000990 1 -0.01000099 4 -0.0000990 1 -0.0100009 9 -1.0001 5 -0.0100009 9 -1.0001 初始相差不大,而却相差那么远,计算是不稳定的。

2. 取y0=28,按递推公式,去计算y100,若取 (五位有效数字),试问计算y100将有多大误差?y100中尚留有几位有效数字? 解:每递推一次有误差 因此,尚留有二位有效数字。 3.函数,求f(30)的值。若开方用六位函数表,问求对数时误差有多大?若改用另一等价公式 计算,求对数时误差有多大? 设z=ln(30-y), ,y*, |E(y)| 10-4 z*=ln(30-y*)=ln(0.0167)=-4.09235 若改用等价公式

设z=-ln(30+y), ,y*, |E(y)|⨯10-4 z*=-ln(30+y*)=-ln(59.9833)=-4.09407 4.下列各数都按有效数字给出,试估计f的绝对误差限和相对误差限。 1)f=sin[(3.14)(2.685)] 设f=sin xy x*=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-2

MATLAB软件简介

1 MATLAB软件简介 1.1 概述 MATLAB是美国Math Works 公司开发的大型数学计算软件,它具有强大的 矩阵处理功能和绘图功能,已经广泛地应用于科学研究和工程技术的各个领域 在科学研究和工程应用中,往往要进行大量的数学计算,其中包括矩阵运算。这些运算一般来说难以用手工精确和快捷地进行,而要借助计算机编制相应的程序做近似计算。MATLAB的主要功能具体包括:一般数值分析、矩阵运算、数字信号处理、建模和系统控制和优化等应用程序,并集应用程序和图形于一便于使用的集成环境中。在此环境下所解问题的Matlab语言表述形式和其数学表达形式相同,不需要按传统的方法编程。MATLAB语言的这一特点大大降低了对使用者的数学基础和计算机语言知识的要求,而且使编程效率和计算效率极高,还可在计算机上直接输出结果和精美的图形拷贝。综上所述,Matlab语言有如下特点:1.编程语言接近人的思维方式,编程效率高,易学易懂

它是一种面向科学与工程计算的高级语言,允许用数学形式的语言编写程序,且比其他计算机语言更加接近我们书写计算公式的思维方式,用Matlab编写程序犹如在演算纸上排列出公式与求解问题。因此,Matlab语言也可通俗地称为演算纸式科学算法语言由于它编写简单,所以编程效率高,易学易懂。 2.程序调试方便灵活, Matlab语言是一种解释执行的语言,它灵活、方便,其调试程序手段丰富,调试速度快,需要学习时间少。Matlab语言与其它语言相比,省去了编辑、编译、连接以及执行和调试四个步骤。它把编辑、编译、连接和执行融为一体。它能在同一画面上进行灵活操作快速排除输入程序中的书写错误、语法错误以至语意错误,从而加快了用户编写、修改和调试程序的速度。 Mat1ab语言不仅是一种语言,广义上讲是一种该语言开发系统,即语言调试系统。 3.源程序开放,库函数丰富,扩展能力强 高版本的Matlab语言有丰富的库函数,在进行复杂的数学运算时可以直接调用,而且Matlab的库函数同用户文件在形成上一样,所以用户文件也可作为Matlab的库函数来调用。因而,用户可以根据自己的需要方便地建立和扩充新的库函数,以便提高Matlab

数值分析作业-matlab上机作业

数值分析 ———Matlab上机作业 学院: 班级: 老师: 姓名: 学号:

第二章解线性方程组的直接解法 第14题 【解】 1、编写一个追赶法的函数 输入a,b,c,d输出结果x,均为数组形式 function x=Zhuiganfa(a,b,c,d) %首先说明:追赶法是适用于三对角矩阵的线性方程组求解的方法,并不适用于其他类型矩阵。%定义三对角矩阵A的各组成单元。方程为Ax=d %b为A的对角线元素(1~n),a为-1对角线元素(2~n),c为+1对角线元素(1~n-1)。 % A=[2 -1 0 0 % -1 3 -2 0 % 0 -2 4 -3 % 0 0 -3 5] % a=[-1 -2 -3];c=[-1 -2 -3];b=[2 3 4 5];d=[6 1 -2 1]; n=length(b); u(1)=b(1); y(1)=d(1); for i=2:n l(i)=a(i-1)/u(i-1);%先求l(i) u(i)=b(i)-c(i-1)*l(i);%再求u(i) %A=LU,Ax=LUx=d,y=Ux, %Ly=d,由于L是下三角矩阵,对角线均为1,所以可求y(i) y(i)=d(i)-l(i)*y(i-1); end x(n)=y(n)/u(n); for i=(n-1):-1:1 %Ux=y,由于U是上三角矩阵,所以可求x(i) x(i)=(y(i)-c(i)*x(i+1))/u(i); end 2、输入已知参数 >>a=[2 2 2 2 2 2 2]; >>b=[2 5 5 5 5 5 5 5]; >>c=[2 2 2 2 2 2 2]; >>d=[220/27 0 0 0 0 0 0 0];

相关主题
文本预览
相关文档 最新文档