文档库 最新最全的文档下载
当前位置:文档库 › 计算方法及其MATLAB实现第一章作业

计算方法及其MATLAB实现第一章作业

计算方法及其MATLAB实现第一章作业
计算方法及其MATLAB实现第一章作业

计算方法作业(作者:夏云木子)

1、help linspace

type linspace

2、a1=[5 12 47;13 41 2;9 6 71];a2=[12 9;6 15;7 21];B=a1*a2, C=a1(:,1:2).*a2, D=a1.^2,

E=a1(:).^2

3、a1=[5 12 47;13 41 2;9 6 71];a2=[12 9;6 15;7 21];a1(4:5,1:3)=a2.';a1([4 5],:)=a1([5 4],:);b1=a1

c1=b1(4,1),c2=b1(5,3),D=b1(3:4,:)*a2

4、a1=[5 12 47;13 41 2;9 6 71]; E=eye(3,3); S = a1 + 5*a1' - E, S1=a1^3-rot90(a1)^2+6*E

5、a1=[5 12 47;13 41 2;9 6 71];s=5;A=s-a1,B=s*a1,C=s.*a1,D=s./a1,E=a1./s

6、c=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16];A=c^-4,B=(c^3)^-1,C=(3*c+5*c^-1)/5

7、a=[1 i 3;9i 2-i 8;7 4 8+i];A=a.'

8、abc=[-2.57 8.87;-0.57 3.2-5.5i];m1=sign(abc),m2=round(abc),m3=floor(abc)

Sign为符号函数,round表示四舍五入取整,floor表示舍去小数部分取整

9、x=[1 4 3 2 0 8 10 5]';y=[8 0 0 4 2 1 9 11]';A=dot(x,y)

10、a=[3.82 5.71 9.62];b=[7.31 6.42 2.48];A=dot(a,b),B=cross(a,b)

11、P=[5 7 8 0 1];Pf=poly(P);Px=poly2str(Pf,'x')

12、P=[3 0 9 60 0 -90];K1=polyval(P,45),K2=polyval(P,-123),K3=polyval(P,579)

13、P1=[13 55 0 -17 9];P2=[63 0 26 -85 0 105];PP=conv(P1,P2);P1P2=poly2str(PP,'x'),[Q,r]=deconv(P2,P1)

14、x=[0.01:0.1:pi/4].';s=' x cos(x) log(x) x.^3 sqrt(x)';disp(s),disp([x cos(x) log(x) x.^3 sqrt(x)])

15、f=inline('t.^5-3./t.^3+t.*exp(-t).*sin(t)-97');t=[0.5 3 exp(1) 1.2];ft=f(t)

16、syms x

a1=[sin(x)-cos(x) log(x^2); exp(2*x) x^2+5];a2=[cos(x) 1-log(x^2);exp(-x) -x^2];A=a1^(-1),B=a1+a2,C=a1*a2,D=a1/a2

17、syms x y

z=sin(x*cos(y));dzdx=diff(z),dzdy=diff(z,'y')

所以dz=cos(x*cos(y))*cos(y)*dx+-x*cos(x*cos(y))*sin(y)*dy

18、syms n

S=symsum(5^(n+1)/(n+1),n,1,5)

19、syms x a

>> F=taylor(log(x+a)),F1=taylor(log(x+a),x,3,'order',5)

20、clear

>> plot([-5 6],[0 0],[0 0],[-6 3])

21、x1=-6:6*pi;y1=x1-4;

x2=-6:6; y2=x2.^2;

subplot(2,1,1),plot(x1,y1,x2,y2)

legend('x-4','x.^2')

22、>> xt=@(t)3*cos(t);yt=@(t)3*sin(t);zt=@(t)3*t;fplot3(xt,yt,zt)

23、a1=[1 2 3;4 5 6;7 8 9];a2=5;a3=a1>=a2

24、a4=[1 0 -5 0 9;3 -2 0 6 0;0 0 5 7 8];A=~a4,B=xor(a4,0)

25、clear

x=input('ê?è?xμ??μ='); if x<1

fx=x^2;

elseif x>=1&x<10

fx=2*x^2-1;

elseif x>10

fx=3*x^2;

end;fx

数值计算方法实验指导(Matlab版)

《数值计算方法》实验指导 (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课后答案完整版

ones表示1矩阵 zeros表示0矩阵 ones(4)表示4x4的1矩阵 zeros(4)表示4x4的0矩阵 zeros(4,5)表示4x5的矩阵 eye(10,10)表示10x10的单位矩阵rand(4,5)表示4x5的伴随矩阵 det(a)表示计算a的行列式 inv(a)表示计算a的逆矩阵 Jordan(a)表示求a矩阵的约当标准块rank(a)表示求矩阵a的秩 [v,d]=eig(a)对角矩阵 b=a’表示求a矩阵的转置矩阵 sqrt表示求平方根 exp表示自然指数函数 log自然对数函数 abs绝对值 第一章 一、5(1) b=[97 67 34 10;-78 75 65 5;32 5 -23 -59]; >> c=[97 67;-78 75;32 5;0 -12]; >> d=[65 5;-23 -59;54 7]; >> e=b*c e = 5271 11574 -11336 664 1978 3112 (2)a=50:1:100 二、1 、x=-74; y=-27; z=(sin(x.^2+y.^2))/(sqrt(tan(abs(x+y)))+pi) z = 2、a=::; >> b=exp*a).*sin(a+ 3、x=[2 4; 5]; y=log(x+sqrt(1+x.^2))/2 y =4、a*b表示a矩阵和b矩阵相乘 a.*b表示a矩阵和b矩阵单个元素相乘A(m,n)表示取a矩阵第m行,第n列 A(m,:)表示取a矩阵第m行的全部元素 A(:,n)表示取a矩阵的第n列全部元素 A./B表示a矩阵除以b矩阵的对应元素, B.\A等价于A./B A.^B表示两个矩阵对应元素进行乘方运算A.^2表示a中的每个元素的平方 A^2表示A*A 例:x=[1,2,3]; y=[4,5,6]; z=x.^y z= 1 3 2 729 指数可以是标量(如y=2).底数也可以是标量(如x=2) 5、a=1+2i; >> b=3+4i; >> c=exp((pi*i)/6) c = + d=c+a*b/(a+b) d = + 第二章 二、4、(1) y=0;k=0; >> while y<3 k=k+1; y=y+1/(2*k-1); end >> display([k-1,y-1/(2*k-1)]) ans = 第三章 二1(1)

MATLAB第一章作业答案

第一章 M A T L A B 概况与基本操作 1.选择题(每题2分,共20分): (1)最初的MATLAB 核心程序是采用D 语言编写的。 (2)即将于2011年9月发布的MATLAB 新版本的编号为C 。 2011Ra 2011Rb R2011b R2011a (3)在默认设置中,MATLAB 中的注释语句显示的颜色是B 。 A.黑色 B.绿色 C.红色 D.蓝色 (4)如果要以科学计数法显示15位有效数字,使用的命令是A 。 long e long long g long d (5)在命令窗口新建变量a 、b ,如果只查看变量a 的详细信息,使用的命令为A 。 a a (6)如果要清除工作空间的所有变量,使用的命令为C 。 all C.两者都可 D.两者都不可 (7)在创建变量时,如果不想立即在命令窗口中输出结果,可以在命令后加上B 。 A.冒号 B.分号 C.空格 D.逗号 (8)如果要重新执行以前输入的命令,可以使用D 键。 A.下箭头↓ B.右箭头→ C.左箭头← D.上箭头↑ (9)如果要查询函数det 的功能和用法,并显示在命令窗口,应使用命令C 。 D.三者均可 (10)如果要启动Notebook 文档,下列D 操作是可行的。 A.在命令窗口输入notebook 命令 B.在命令窗口输入notebook filename 命令 C.在Word 中启动M-book 文档 D.三者均可 2.填空题(每空1分,共20分): (1)MATLAB 是matrix 和laboratory 两个单词前三个字母的组合,意为“矩阵实验室”,它的创始人是Cleve Moler 和Jack Little 。 (2)在MATLAB 的默认设置中,关键字显示的字体为蓝色,命令、表达式、计算结果显示的字体为黑色,字符串显示的字体为褐红色,注释显示的字体为绿色,错误信息显示的字体为红色。 (3)在命令窗口中,输出结果显示为各行之间添加空行的命令为format loose ,各行之间不添加空行的命令为format compact 。 (4)在MATLAB 中,各种标点符号的作用是不同的。例如,空格的作用是分隔数组每行各个元素,逗号的作用是分隔数组每行各个元素或函数的各个输入参数,分号的作用是作为不显示命令结果的命令行的结尾或分隔数组各列,冒号的作用是生成一维数组或表示数组全部元素,百分号的作用是引导一行注释,…的作用是连接相邻两行,感叹号的作用是调用操作系统命令。 3.程序设计题(每题10分,共40分) (1)以25m/s 的初速度向正上方投球(g=s 2 ),计算到达最高点的时间tp 以及球从出发点到最高点的距离hp 。 解:根据物理学知识,物体上抛运动的速度与经过的时间之间的关系为0p p v v gt =-,因此所需要的时间为0p p v v t g -= 。而到达最高点时的速度0p v =,因此可根据此公式求出tp : v0=25;g=;vp=0; tp=(v0-vp)/g tp =

计算方法_全主元消去法_matlab程序

%求四阶线性方程组的MA TLAB程序 clear Ab=[0.001 2 1 5 1; 3 - 4 0.1 -2 2; 2 -1 2 0.01 3; 1.1 6 2.3 9 4];%增广矩阵 num=[1 2 3 4];%未知量x的对应序号 for i=1:3 A=abs(Ab(i:4,i:4));%系数矩阵取绝对值 [r,c]=find(A==max(A(:))); r=r+i-1;%最大值对应行号 c=c+i-1;%最大值对应列号 q=Ab(r,:),Ab(r,:)=Ab(i,:),Ab(i,:)=q;%行变换 w=Ab(:,c),Ab(:,c)=Ab(:,i),Ab(:,i)=w;%列变换 n=num(i),num(i)=num(c),num(c)=n;%列变换引起未知量x次序变化for j=i:3 Ab(j+1,:)=-Ab(j+1,i)*Ab(i,:)/Ab(i,i)+Ab(j+1,:);%消去过程 end end %最后得到系数矩阵为上三角矩阵 %回代算法求解上三角形方程组 x(4)=Ab(4,5)/Ab(4,4); x(3)=(Ab(3,5)-Ab(3,4)*x(4))/Ab(3,3); x(2)=(Ab(2,5)-Ab(2,3)*x(3)-Ab(2,4)*x(4))/Ab(2,2); x(1)=(Ab(1,5)-Ab(1,2)*x(2)-Ab(1,3)*x(3)-Ab(1,4)*x(4))/Ab(1,1); for s=1:4 fprintf('未知量x%g =%g\n',num(s),x(s)) end %验证如下 %A=[0.001 2 1 5 1; 3 -4 0.1 -2 2;2 -1 2 0.01 3; 1.1 6 2.3 9 4]; %b=[1 2 3 4]'; %x=A\b; %x1= 1.0308 %x2= 0.3144 %x3= 0.6267 %x4= -0.0513

数值分析Matlab作业

数值分析编程作业

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;

MATLAB基础教程 薛山第二版 课后习题答案

《MATLAB及应用》实验指导书《MATLAB及应用》实验指导书 班级:T1243-7 姓名:柏元强 学号:20120430724 总评成绩: 汽车工程学院 电测与汽车数字应用中心

目录 实验04051001 MATLAB语言基础 (1) 实验04051002 MATLAB科学计算及绘图 (18) 实验04051003 MATLAB综合实例编程 (31)

实验04051001 MATLAB语言基础 1实验目的 1)熟悉MATLAB的运行环境 2)掌握MATLAB的矩阵和数组的运算 3)掌握MATLAB符号表达式的创建 4)熟悉符号方程的求解 2实验内容 第二章 1.创建double的变量,并进行计算。 (1)a=87,b=190,计算 a+b、a-b、a*b。 clear,clc a=double(87); b=double(190); a+b,a-b,a*b (2)创建 uint8 类型的变量,数值与(1)中相同,进行相同的计算。 clear,clc a=uint8(87); b=uint8(190); a+b,a-b,a*b 2.计算:

(1) () sin 60 (2) e3 (3) 3cos 4??π ??? clear,clc a=sind(60) b=exp(3) c=cos(3*pi/4) 3.设2u =,3v =,计算: (1) 4 log uv v (2) () 2 2 e u v v u +- (3) clear,clc u=2;v=3; a=(4*u*v)/log(v) b=((exp(u)+v)^2)/(v^2-u) c=(sqrt(u-3*v))/(u*v) 4.计算如下表达式: (1) ()() 3542i i -+ (2) () sin 28i - clear,clc (3-5*i)*(4+2*i) sin(2-8*i)

数值分析的matlab实现

第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第八章

第8章M文件函数 使用MATLAB函数时,例如inv, abs, angle和sqrt,MATLAB获取传递给它的变量,利用所给的输入,计算所要求的结果。然后,把这些结果返回。由函数执行的命令,以及由这些命令所创建的中间变量,都是隐含的。所有可见的东西是输入和输出,也就是说函数是一个黑箱。 这些属性使得函数成为强有力的工具,用以计算命令。这些命令包括在求解一些大的问题时,经常出现的有用的数学函数或命令序列。由于这个强大的功能,MATLAB提供了一个创建用户函数的结构,并以M文件的文本形式存储在计算机上。MATLAB函数fliplr 是一个M文件函数良好的例子。 function y = fliplr(x) % FLIPLR Flip matrix in the left/right direction. % FLIPLR(X) returns X with row preserved and columns flipped % in the left/right direction. % % X = 1 2 3 becomes 3 2 1 % 4 5 6 6 5 4 % % See also FLIPUD, ROT90. % Copyright (c) 1984-94 by The MathWorks, Inc. [m, n] = size(x); y = x(: , n : -1 : 1); 一个函数M文件与脚本文件类似之处在于它们都是一个有.m扩展名的文本文件。如同脚本M文件一样,函数M文件不进入命令窗口,而是由文本编辑器所创建的外部文本文件。一个函数的M文件与脚本文件在通信方面是不同的。函数与MATLAB工作空间之间的通信,只通过传递给它的变量和通过它所创建的输出变量。在函数内中间变量不出现在MATLAB工作空间,或与MATLAB工作空间不交互。正如上面的例子所看到的,一个函数的M文件的第一行把M文件定义为一个函数,并指定它的名字。它与文件名相同,但没有.m扩展名。它也定义了它的输入和输出变量。接下来的注释行是所展示的文本,它与帮助命令:? help fliplr相对应。第一行帮助行称为H1 行,是由lookfor命令所搜索的行。最后,M文件的其余部分包含了MATLAB创建输出变量的命令。 8.1 规则和属性

Matlab习题

习题 1 1. 执行下列指令,观察其运算结果, 理解其意义: (1) [1 2;3 4]+10-2i (2) [1 2; 3 4].*[0.1 0.2; 0.3 0.4] (3) [1 2; 3 4].\[20 10;9 2] (4) [1 2; 3 4].^2 (5) exp([1 2; 3 4]) (6)log([1 10 100]) (7)prod([1 2;3 4]) (8)[a,b]=min([10 20;30 40]) (9)abs([1 2;3 4]-pi) (10) [1 2;3 4]>=[4,3;2 1] (11)find([10 20;30 40]>=[40,30;20 10]) (12) [a,b]=find([10 20;30 40]>=[40,30;20 10]) (提示:a 为行号,b 为列号) (13) all([1 2;3 4]>1) (14) any([1 2;3 4]>1) (15) linspace(3,4,5) (16) A=[1 2;3 4];A(:,2) 2. 执行下列指令,观察其运算结果、变量类型和字节数,理解其意义: (1) clear; a=1,b=num2str(a),c=a>0, a= =b, a= =c, b= =c (2) clear; fun='abs(x)',x=-2,eval(fun),double(fun) 3. 本金K 以每年n 次,每次p %的增值率(n 与p 的乘积为每年增值额的百分比)增加,当增加到rK 时所花费的时间为 ) 01.01ln(ln p n r T += (单位:年) 用MA TLAB 表达式写出该公式并用下列数据计算:r =2, p =0.5, n =12. 4.已知函数f (x )=x 4 -2x 在(-2, 2)内有两个根。取步长h =0.05, 通过计算函数值求得函数的最小值点和两个根的近似解。(提示:求近似根等价于求函数绝对值的最小值点) ? 5. (1) 用z=magic(10)得到10阶魔方矩阵; (2) 求z 的各列元素之和; (3) 求z 的对角线元素之和(提示:先用diag(z)提取z 的对角线); (4) 将z 的第二列除以3;

第2讲 matlab的数值分析

第二讲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= =>

数值分析的MATLAB程序

列主元法 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实现课后代码

第一章插值方法 1.1Lagrange插值 1.2逐步插值 1.3分段三次Hermite插值 1.4分段三次样条插值 第二章数值积分 2.1 Simpson公式 2.2 变步长梯形法 2.3 Romberg加速算法 2.4 三点Gauss公式 第三章常微分方程德差分方法 3.1 改进的Euler方法 3.2 四阶Runge-Kutta方法 3.3 二阶Adams预报校正系统 3.4 改进的四阶Adams预报校正系统 第四章方程求根 4.1 二分法 4.2 开方法 4.3 Newton下山法 4.4 快速弦截法 第五章线性方程组的迭代法 5.1 Jacobi迭代 5.2 Gauss-Seidel迭代 5.3 超松弛迭代 5.4 对称超松弛迭代 第六章线性方程组的直接法 6.1 追赶法 6.2 Cholesky方法 6.3 矩阵分解方法 6.4 Gauss列主元消去法

第一章插值方法 1.1Lagrange插值 计算Lagrange插值多项式在x=x0处的值. MATLAB文件:(文件名:Lagrange_eval.m)function [y0,N]= Lagrange_eval(X,Y,x0) %X,Y是已知插值点坐标 %x0是插值点 %y0是Lagrange插值多项式在x0处的值 %N是Lagrange插值函数的权系数 m=length(X); N=zeros(m,1); y0=0; for i=1:m N(i)=1; for j=1:m if j~=i; N(i)=N(i)*(x0-X(j))/(X(i)-X(j)); end end y0=y0+Y(i)*N(i); end 用法》X=[…];Y=[…]; 》x0= ; 》[y0,N]= Lagrange_eval(X,Y,x0) 1.2逐步插值 计算逐步插值多项式在x=x0处的值. MATLAB文件:(文件名:Neville_eval.m)function y0=Neville_eval(X,Y,x0) %X,Y是已知插值点坐标 %x0是插值点 %y0是Neville逐步插值多项式在x0处的值 m=length(X); P=zeros(m,1); P1=zeros(m,1); P=Y; for i=1:m P1=P; k=1; for j=i+1:m k=k+1;

(整理)matlab16常用计算方法.

常用计算方法 1.超越方程的求解 一超越方程为 x (2ln x – 3) -100 = 0 求超越方程的解。 [算法]方法一:用迭代算法。将方程改为 01002ln()3 x x =- 其中x 0是一个初始值,由此计算终值x 。取最大误差为e = 10-4,当| x - x 0| > e 时,就用x 的值换成x 0的值,重新进行计算;否则| x - x 0| < e 为止。 [程序]P1_1abs.m 如下。 %超越方程的迭代算法 clear %清除变量 x0=30; %初始值 xx=[]; %空向量 while 1 %无限循环 x=100/(2*log(x0)-3); %迭代运算 xx=[xx,x]; %连接结果 if length(xx)>1000,break ,end %如果项数太多则退出循环(暗示发散) if abs(x0-x)<1e-4,break ,end %当精度足够高时退出循环 x0=x; %替换初值 end %结束循环 figure %创建图形窗口 plot(xx,'.-','LineWidth',2,'MarkerSize',12)%画迭代线'.-'表示每个点用.来表示,再用线连接 grid on %加网格 fs=16; %字体大小 title('超越方程的迭代折线','fontsize',fs)%标题 xlabel('\itn','fontsize',fs) %x 标签 ylabel('\itx','fontsize',fs) %y 标签 text(length(xx),xx(end),num2str(xx(end)),'fontsize',fs)%显示结果 [图示]用下标作为自变量画迭代的折线。如P0_20_1图所示,当最大误差为10-4时,需要迭代19次才能达到精度,超越方程的解为27.539。 [算法]方法二:用求零函数和求解函数。将方程改为函数 100()2ln()3f x x x =-- MATLAB 求零函数为fzero ,fzero 函数的格式之一是 x = fzero(f,x0) 其中,f 表示求解的函数文件,x0是估计值。fzero 函数的格式之二是 x = fzero(f,[x1,x2])

同济大学数值分析matlab编程题汇编

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作业题

第一章 MATLAB环境 1、MATLAB通用操作界面窗口包括哪些?命令窗口、历史命令窗口、当前目录窗口、工作空间窗口各有哪些功能? 答:MATLAB通用操作界面窗口包括:命令窗口、历史命令窗口、当前目录浏览器窗口、工作空间窗口、变量编辑器窗口、M文件编辑/调试器窗口、程序性能剖析窗口、MATLAB 帮助。 命令窗口是MATLAB命令操作的最主要窗口,可以把命令窗口当做高级的“草稿纸”。 在命令窗口中可以输入各种MATLAB的命令、函数和表达式,并显示除图形外的所有运算结果。 历史命令窗口用来记录并显示已经运行过的命令、函数和表达式,并允许用户对它们进行选择、复制和重运行,用户可以方便地输入和修改命令,选择多行命令以产生M文件。 当前目录窗口用来设置当前目录,可以随时显示当前目录下的M、MKL等文件的信息,扬文件类型、文件名、最后个修改时间和文件的说明信息等,并可以复制、编辑和运行M 文件及装载MAT数据文件。 工作空间窗口用来显示所有MATLAB工作空间中的变量名、数据结构、类型、大小和字节数。 2、熟悉课本中表格1.4、1.5、1.6、1.7、1.8的内容。 3、如何生成数据文件?如何把数据文件中的相关内容输入到工作空间中,用实例进行操作。

4、在工作空间中可以通过哪些命令管理变量,写出每种语法的具体操作过程。 答:(1)把工作空间中的数据存放到MAT数据文件。 语法:save filename 变量1 变量2 ……参数。 (2)从数据文件中取出变量存放到工作空间。 语法: load filename 变量1 变量2 ……。 (3)查阅MATLAB内存变量名。 语法:who (4)、查阅MATLAB内存变量变量名、大小、类型和字节数。 语法:whos (5)、删除工作空间中的变量。 语法:clear (6)查询工作空间中是否存在某个变量。 语法:i=exist(‘X’) 5、MATLAB用户文件格式有几哪种?扩展名各是什么? 答:MATLAB的用户文件格式通常有以下几种: (1)程序文件,扩展名为.m。 (2)数据文件,扩展名为.mat。 (3)可执行文件,扩展名为.mex。 (4)图形文件,扩展名为.fig。 (5)模型文件,扩展名为.mdl。 6、熟悉文件管理命令的语法,特别是命令type 作用。 7、详细操作课本26页例题1.3。

matlab用于计算方法的源程序

1、Newdon迭代法求解非线性方程 function [x k t]=NewdonToEquation(f,df,x0,eps) %牛顿迭代法解线性方程 %[x k t]=NewdonToEquation(f,df,x0,eps) %x:近似解 %k:迭代次数 %t:运算时间 %f:原函数,定义为内联函数 ?:函数的倒数,定义为内联函数 %x0:初始值 %eps:误差限 % %应用举例: %f=inline('x^3+4*x^2-10'); ?=inline('3*x^2+8*x'); %x=NewdonToEquation(f,df,1,0.5e-6) %[x k]=NewdonToEquation(f,df,1,0.5e-6) %[x k t]=NewdonToEquation(f,df,1,0.5e-6) %函数的最后一个参数也可以不写。默认情况下,eps=0.5e-6 %[x k t]=NewdonToEquation(f,df,1) if nargin==3 eps="0".5e-6; end tic; k=0; while 1 x="x0-f"(x0)./df(x0); k="k"+1; if abs(x-x0) < eps || k >30 break; end x0=x; end t=toc; if k >= 30 disp('迭代次数太多。'); x="0"; t="0"; end

2、Newdon迭代法求解非线性方程组 function y="NewdonF"(x) %牛顿迭代法解非线性方程组的测试函数 %定义是必须定义为列向量 y(1,1)=x(1).^2-10*x(1)+x(2).^2+8; y(2,1)=x(1).*x(2).^2+x(1)-10*x(2)+8; return; function y="NewdonDF"(x) %牛顿迭代法解非线性方程组的测试函数的导数 y(1,1)=2*x(1)-10; y(1,2)=2*x(2); y(2,1)=x(2).^+1; y(2,2)=2*x(1).*x(2)-10; return; 以上两个函数仅供下面程序的测试 function [x k t]=NewdonToEquations(f,df,x0,eps) %牛顿迭代法解非线性方程组 %[x k t]=NewdonToEquations(f,df,x0,eps) %x:近似解 %k:迭代次数 %t:运算时间 %f:方程组(事先定义) ?:方程组的导数(事先定义) %x0:初始值 %eps:误差限 % %说明:由于虚参f和df的类型都是函数,使用前需要事先在当前目录下采用函数M文件定义% 另外在使用此函数求解非线性方程组时,需要在函数名前加符号“@”,如下所示 % %应用举例: %x0=[0,0];eps=0.5e-6; %x=NewdonToEquations(@NewdonF,@NewdonDF,x0,eps) %[x k]=NewdonToEquations(@NewdonF,@NewdonDF,x0,eps) %[x k t]=NewdonToEquations(@NewdonF,@NewdonDF,x0,eps) %函数的最后一个参数也可以不写。默认情况下,eps=0.5e-6 %[x k t]=NewdonToEquations(@NewdonF,@NewdonDF,x0,eps)

数值计算方法与Matlab样卷答案

腹有诗书气自华 《数值计算方法与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分)

0计算方法及MATLAB实现简明讲义课件PPS8-1欧拉龙格法

第8章 常微分方程初值问题数值解法 8.1 引言 8.2 欧拉方法 8.3 龙格-库塔方法 8.4 单步法的收敛性与稳定性 8.5 线性多步法

8.1 引 言 考虑一阶常微分方程的初值问题 00(,),[,],(). y f x y x a b y x y '=∈=(1.1) (1.2) 如果存在实数 ,使得 121212(,)(,).,R f x y f x y L y y y y -≤-?∈(1.3) 则称 关于 满足李普希茨(Lipschitz )条件, 称为 的李普希茨常数(简称Lips.常数). 0>L f y L f (参阅教材386页)

计算方法及MATLAB 实现 所谓数值解法,就是寻求解 在一系列离散节点 )(x y <<<<<+121n n x x x x 上的近似值 . ,,,,,121+n n y y y y 相邻两个节点的间距 称为步长. n n n x x h -=+1 如不特别说明,总是假定 为定数, ),2,1( ==i h h i 这时节点为 . ) ,2,1,0(0 =+=i nh x x n 初值问题(1.1),(1.2)的数值解法的基本特点是采取 “步进式”. 即求解过程顺着节点排列的次序一步一步地向前推进. 00(,),[,], (). y f x y x a b y x y '=∈=

描述这类算法,只要给出用已知信息 ,,,21--n n n y y y 计算 的递推公式. 1+n y 一类是计算 时只用到前一点的值 ,称为单步法. 1+n y n y 另一类是用到 前面 点的值 , 1+n y k 11,,,+--k n n n y y y 称为 步法. k 其次,要研究公式的局部截断误差和阶,数值解 与 精确解 的误差估计及收敛性,还有递推公式的计算 稳定性等问题. n y )(n x y 首先对方程 离散化,建立求数值解的递推 公式. ),(y x f y ='

相关文档