MATLAB实践作业m函数

合集下载

MATLABM文件与M函数

MATLABM文件与M函数

M文件与M函数Matlab输入命令的常用方式有两种:一种是直接在Matlab的命令窗门中逐条输入Matlab 命令;二是m文件工作方式。

当命令行很简单时,使用逐条输入方式还是比较方便的。

但当命令行很多时(比如说几十行乃至全成百上千行命令),显然再使用这种方式输入MATLAB 命令,就会显得杂乱无章,不易于把握程序的具体走向,并且给程序的修改和维护带来了很大的麻烦。

这时,建议采用Matlab命令的第二种输入形式m文件工作方式。

m文件工作方式,指的是将要执行的命令全部写在一个文本文件中,这样既能使程序显得简洁明了,又便于对程序的修改与维护。

m文件直接采用Matlab命令编写,就像在Matlab的命令窗口直接输入命令一样,因此调试起来也十分方便,并且增强了程序的交互性。

m文件与其他文本文件一样,可以在任何文本编辑器中进打编辑、存储、修改和读取。

利用m文件还可以根据白己的需要编写一些函数,这些函数也可以橡Matlab提供的函数一样进行调用。

从某种意义上说,这也是对MA TLAB的二次开发。

m文件有两种形式:一种是命令方式或称脚本方式;另一种就是函数文件形式。

两种形式的文件扩展名均是.m。

1、M文件当遇到输入命令较多以及要重复输入命令的情况时,利用命令文件就显得很方便了。

将所有要执行的命令按顺序放到一个扩展名为.m的文本文件中,每次运行时只需在MATLAB 的命令窗口输入m文件的文件名就可以了。

需要注意的是,m文件最好直接放在Matlab的默认搜索路径下(一般是Matlab安装目录的子目录work中),这样就不用设置m文件的路径了,否则应当用路径操作指令path重新设置路径。

另外,m文件名不应该与Matlab的内置函数名以及工具箱中的函数重名,以免发生执行错误命令的现象。

Matlab对命令文件的执行等价于从命令窗口中顺序执行文件中的所有指令。

命令文件可以访问Matlab工作空间里的任何变量及数据。

命令文件运行过程中产生的所有变量都等价于从Matlab工作空间中创建这些变量。

【良心出品】MATLAB实验五《M文件和函数句柄》

【良心出品】MATLAB实验五《M文件和函数句柄》

【良心出品】MATLAB实验五《M文件和函数句柄》实验五 M 文件和函数句柄一、实验目的1、掌握M 文件的编写方法。

2、熟练掌握MATLAB 的五种程序控制流结构。

3、掌握M 函数文件的一般结构。

4、了解函数句柄的创建、观察及基本使用方法。

二、实验主要仪器与设备装配有MA TLAB7.6软件的计算机三、预习要求做实验前必须认真复习第六章M 文件和函数句柄。

四、实验内容及实验步骤1、已知函数??≤<≤--<=+-x e x xx xy x 111113,编写能对任意一组输入x 值求相应y 值的程序,并验证运行结果。

(1)编写M 函数文件function y=exm060101(x)% y=exm060101(x) Function calculate of example n=length(x); for k=1:n if x(k)<-1 y(k)=x(k); elseif x(k)>=1 y(k)=exp(1-x(k)); elsey(k)=x(k)^3; endend(2)把文件exm060101.m 放置在搜索路径上(3)运行以下指令x=[-2,-1,-1.2,-0.4,0.8,1,6] y=exm060101(x) 运行结果: x =-2.0000 -1.2000 -0.4000 0.8000 1.0000 6.0000y =-2.0000 -1.2000 -0.0640 0.5120 1.0000 0.00672、已知学生的名字和百分制分数。

要求根据学生的百分制分数,分别采用“满分”、“优秀”、“良好”、“及格”、“不及格”等表示学生的学习成绩。

试用switch结构编程实现。

clear;%定义分数段:满分(100),优秀(90-99),良好(80-89),及格(60-79),不及格(<60)。

for k=1:10a(k)={89+k};b(k)={79+k};c(k)={69+k};d(k)={59+k};end;c=[d,c]; %输入学生的名字和分数A= cell(3,5) ;A(1,:)={'Jack','Marry','Peter','Rose','T om'};A(2,:)={72,83,56,94,100};for k=1:5switch A{2,k}case 100r='满分';case ar='优秀';case br='良好';case cr='及格';otherwiser='不及格';endA(3,k)={r};endA运行结果:A ='Jack' 'Marry' 'Peter' 'Rose' 'Tom'[ 72] [ 83] [ 56] [ 94] [ 100]'及格' '良好' '不及格' '优秀' '满分'3、试用for 循环结构创建Hilbert 矩阵。

matlab课件 M函数文件

matlab课件 M函数文件

6.1.1
if-else-end 条件控制
if-else-end 指令为程序流提供了一种分支控制,它最常见的使用方式见表 6.1-1。
单分支 if expr
(commands) end
Expr—关系、逻辑 运算构成表达式或 一般表达式,标量 逻辑值(1/0)或逻 辑数组(全 1 控制 分支才执行)
当 expr 给出“逻辑
n=length(x); for k=1:n
if x(k)<-1 y(k)=x(k);
elseif x(k)>=1
1
y(k)=exp(1-x(k)); else
y(k)=x(k)^3; end end
(2)用 exm060101 命名 M 程序并存放在当前目录下 (3) x=[-2,-1.2,-0.4,0.8,1,6] y=exm060101(x) x=
(commands)
end
1/2
1/3
1/4
1/5
1/6
3
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,通系电1,力过根保管据护线生高0不产中仅工资2艺料22高试2可中卷以资配解料置决试技吊卷术顶要是层求指配,机置对组不电在规气进范设行高备继中进电资行保料空护试载高卷与中问带资题负料2荷试2,下卷而高总且中体可资配保料置障试时2卷,32调需3各控要类试在管验最路;大习对限题设度到备内位进来。行确在调保管整机路使组敷其高设在中过正资程常料1工试中况卷,下安要与全加过,强度并看工且25作尽52下可22都能护可地1关以缩于正小管常故路工障高作高中;中资对资料于料试继试卷电卷连保破接护坏管进范口行围处整,理核或高对者中定对资值某料,些试审异卷核常弯与高扁校中度对资固图料定纸试盒,卷位编工置写况.复进保杂行护设自层备动防与处腐装理跨置,接高尤地中其线资要弯料避曲试免半卷错径调误标试高方中等案资,,料要编试求5写、卷技重电保术要气护交设设装底备备置。4高调、动管中试电作线资高气,敷料中课并设3试资件且、技卷料中拒管术试试调绝路中验卷试动敷包方技作设含案术,技线以来术槽及避、系免管统不架启必等动要多方高项案中方;资式对料,整试为套卷解启突决动然高过停中程机语中。文高因电中此气资,课料电件试力中卷高管电中壁气资薄设料、备试接进卷口行保不调护严试装等工置问作调题并试,且技合进术理行,利过要用关求管运电线行力敷高保设中护技资装术料置。试做线卷到缆技准敷术确设指灵原导活则。。:对对在于于分调差线试动盒过保处程护,中装当高置不中高同资中电料资压试料回卷试路技卷交术调叉问试时题技,,术应作是采为指用调发金试电属人机隔员一板,变进需压行要器隔在组开事在处前发理掌生;握内同图部一纸故线资障槽料时内、,设需强备要电制进回造行路厂外须家部同出电时具源切高高断中中习资资题料料电试试源卷卷,试切线验除缆报从敷告而设与采完相用毕关高,技中要术资进资料行料试检,卷查并主和且要检了保测解护处现装理场置。设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

实验四 m函数程序设计

实验四 m函数程序设计

出其对应的大写字母;若为数字字符则输出其对应的数值,若为其他字符则原样输出。 c=input('请输入一个字符','s'); if c>='A' & c<='Z' disp(setstr(abs(c)+abs('a')‐abs('A'))); elseif c>='a'& c<='z' disp(setstr(abs(c)‐ abs('a')+abs('A'))); elseif c>='0'& c<='9' disp(abs(c)‐abs('0')); else disp(c); end (3)自己编写程序:某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用 price 来表示): price<200 没有折扣 200≤price<500 3%折扣 500≤price<1000 5%折扣 1000≤price<2500 8%折扣 2500≤price<5000 10%折扣 5000≤price 14%折扣 输入所售商品的价格,求其实际销售价格。 4. 体会 switch 语句 switch 语句根据表达式的取值不同,分别执行不同的语句,其语句格式为: switch 表达式 case 表达式 1 语句组 1 case 表达式 2 语句组 2 …… case 表达式 m 语句组 m otherwise 语句组 n end 2 循环结构 2.1 for 语句的格式为: for 循环变量=表达式 1:表达式 2:表达式 3 循环体语句 end (1)一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花 数。 程序如下: for m=100:999 m1=fix(m/100); %求 m 的百位数字

Matlab系列之Matlab_M函数

Matlab系列之Matlab_M函数

只有一种选择(1/2)
• if…end • 程序结构如下:
if 表达式 执行代码块 end
代码块
• 这是最简单的判断语句,只有一个判断语句,其 中的表达式为逻辑表达式,当表达式为真时,执 行相应的语句,否则,直接跳到下一段语句。
2013年8月12日
16 of 94 16
只有一种选择(2/2)
2013年8月12日
34 of 94 34
7.2.5 try…catch…end语句
• 判断语句 try…catch :可以包容程序运行中的错 误,并返回错误类型。 • 这种语句的结构为: try 运行代码块 catch 运行代码块 end
35 of 94 35
2013年8月12日
• 该语句首先从上到下依次执行; • 如果遇到程序错误则运行下一个 catch 中 的语句,依次向下进行。 • 如果程序运行成功,则退出该判断语句。 • 如果在 catch 和 end之间的程序运行出错, 则程序运行终止,或者如果存在其他的 try…catch 结构,则运行下一个 try…catch 结构。 • 可以利用 lasterr 命令查看发生错误的原因。
20 of 94 20
多于2种选择(1/2)
• if…elseif…else…end • 程序结构为: if 表达式1 执行代码块1 elseif 表达式2 执行代码块2 elseif ...... ...... ...... 代码块1 else 执行代码块 end
代码块2
代码块
2013年8月12日
注意这种格式,输入字符串时必须带单引号。
name=input(‘What’‘s your name?’,‘s’)
注意:输入的字符串不必带单引号; 提示信息中单引号的输出的格式

matlab中的m函数文件

matlab中的m函数文件

matlab中的m函数文件MATLAB中的M函数文件M函数文件是MATLAB中一种特殊的函数,用于在MATLAB环境中执行特定任务。

它们是用MATLAB语言写成的函数文件,它们不仅可以以M函数的形式进行编程,也可以以简单的命令行格式进行调用和使用,从而更快的实现某些功能。

有许多优点可以使用M函数文件,包括:1)M函数文件可以实现代码的重用,允许用户编写的代码可以在不同的应用场景中使用。

2)M函数文件可以显著减少编程时间,因为他们可以被独立地调用,从而降低编程复杂性。

3)M函数文件可以使用模块化的设计思想来实现代码的封装,从而使代码更易于维护和管理。

4)M函数文件可以使MATLAB代码更加高效,从而降低计算的复杂性。

M函数文件可以通过多种方式创建,包括编写源代码文件(*.m)、MATLAB函数文件和MATLAB工具箱中的函数编写器。

在将其编译成可执行文件(*.exe)之前,它们都被视为一种M函数文件。

对于一般用户来说,通过M函数文件可以更加容易地调用MATLAB 函数来实现相应的功能,并且可以实现特定任务的快速实现。

例如,用户可以利用其打印或计算的M函数文件来实现图像的快速处理,也可以利用其进行MATLAB编程任务的快速实现。

此外,MATLAB也提供了一些基本的M函数文件,以帮助用户进行更高效的编程和功能开发。

这些M函数文件包括:1)数学函数:用于计算数学表达式和数字的函数,如贝塞尔函数、Gaussian函数等。

2)图像处理函数:用于转换图像、进行图像增强和滤镜应用等操作的函数,如快速傅里叶变换(FFT)、核函数、形态学操作等。

3)统计函数:用于实现统计分析的函数,如线性回归、维度缩放分析(PCA)等。

4)信号处理函数:用于处理信号的函数,如卷积、变换和滤波器等。

5)系统函数:用于实现微机控制、系统计算和I/O操作的函数,如I2C、RS232等。

除了上述基本的M函数文件外,MATLAB还提供了多种更高级的M 函数文件,例如用于实现计算机视觉和图像处理的函数,用于实现机器学习和深度学习的函数,用于实现模拟及其他仿真应用的函数等。

MATLAB实验三Matlab的M文件编写

MATLAB实验三 Matlab的M文件编写
21、已知函数y=x,编写能对任意输入x值求相应的y值的程序,文件名规定为sy301。

并利用该程序求得当x=[1,3,5,7]数组时,对应的y数组?
,0.3t2、已知函数y=1-ey,1,ecos0.7t,编写能对任意输入t的范围,绘制出y的曲线图的程序,文件名规定为sy302。

要求:(1)显示分格线
(2)所控制的坐标轴刚好将图形包括在内。

(3)完善标注,坐标和标题
3、编写给予任意的圆点坐标(x0,y0)和半径r,绘制出圆的程序,文件名规定为sy303。

4、编写给予任意的圆点坐标(x0,y0)和半径r(r为一组数组如
[1,3,5]),绘制出圆组(年轮)的程序,文件名规定为sy304。

参考P179例5.2-1
5、计算1+3+5…+99 的值
6、编写M函数文件,将某班学生某门课的成绩为:60,75,85,96,52,36,86,56,94,84,77,用switch结构统计各分段的人数,并将各人数变为用优,良,中,及格和不及格
表示,统计人数和成绩变换都用子函数实现。

matlab中m函数

matlab中m函数MATLAB是一种用于数值计算和数据可视化的高级编程语言和环境。

它具有强大的矩阵处理能力,被广泛应用于科学、工程、经济学、金融学等领域。

在MATLAB中,M文件是一种包含MATLAB语句的脚本文件,也被称为M函数。

M函数是MATLAB中最常用的方式之一,用于封装一段可重复调用的代码。

一个M函数由一系列MATLAB语句组成,并且可以具有输入参数和输出结果。

创建M函数的主要目的是提高代码的可重用性和可维护性。

创建M函数非常简单,只需使用MATLAB编辑器创建一个新的.m文件,并在其中编写代码即可。

M函数的文件名必须与函数名称相同。

例如,如果函数的名称是"myFunction",则M文件的文件名应为"myFunction.m"。

M函数的定义通常包含在文件的开头部分。

例如,下面是一个简单的M函数的例子:```function output = myFunction(input) % 这是一个简单的M函数例子output = input + 1;end```在这个例子中,我们定义了一个名为"myFunction"的M函数,它有一个输入参数"input"和一个输出结果"output"。

在函数体内部,我们对输入参数进行加一操作,并将结果赋给输出参数。

调用M函数非常简单。

只需在MATLAB命令窗口中输入函数名和相应的参数即可。

例如,我们可以这样调用上面定义的M函数:```result = myFunction(2);disp(result);```这段代码将输出结果"3",因为我们将输入参数"2"加一后得到了输出结果"3"。

除了输入参数和输出结果,M函数还可以具有局部变量。

局部变量只在函数体内部有效,并且在函数外部是不可见的。

这种封装性使得M函数更加模块化和可维护。

Matlab实验报告(四)M文件的编写

Matlab实验报告(四)M文件的编写实验目的1.学习MATLAB中的关系运算和逻辑运算,掌握它们的表达形式和用法。

2.掌握MATLAB中的选择结构和循环结构。

3.学会用MATLAB进行M文件的编写和调用。

一、预备知识1.关系和逻辑运算关系运算符用来完成关系运算,在控制程序流程方面有着极为重要的作用。

MATLAB常用的关系符有:<、>、<=小于或等于、>=大于或等于、==等于、~=不等于。

关系运算符可以用来比较两个数值,若所描述的关系成立,则结果为1,表示逻辑真,反之,若所描述的关系不成立,结果为0,表示逻辑假。

MATLAB中的逻辑运算符有&与、∣或、~非。

逻辑运算法则2.选择结构 if语句和switch语句 if语句的一般形式如下: if A1 %表达式1 B1 %命令1else if A2 %表达式2 B2 %命令2 else B3 %命令3 endswitch语句的一般结构如下:switch a %读入一个语句case A1 %情况1B1 %命令1case A2B2case .……other case %其余情况Bn %最后一个命令3.循环结构for语句一般用于循环次数已知的情况,而while语句一般用于循环次数未知的情况。

for语句的格式为:for 变量=表达式命令1命令2…endwhile语句的格式为:while 表达式命令end预备知识实验内容与步骤1.创建一个矩阵,用函数all和any作用于该矩阵,比较结果。

创建一个矩阵a=[1,2,0,3;2,0,1,4];b=all(a),c=any(a),d=all(b),e=any(b)比较结果b=1 0 0 1c=1 1 1 1d=0e=1编写一个switch语句,判断输入数的奇偶性。

n=input(‘n=’);switch mod(n,2);case 1A=‘奇’,case 0A=‘偶’,otherwiseA=‘空’,End3.编写一个程序画出下列分段函数所表示的曲面,并用M文件存储。

MATLAB数学实验课后答案

数学实验MATLAB参考答案(重要部分)P20,ex1(5) 等于[exp(1),exp(2);exp(3),exp(4)](7) 3=1*3, 8=2*4(8) a为各列最小值,b为最小值所在的行号(10) 1>=4,false, 2>=3,false, 3>=2, ture, 4>=1,ture(11) 答案表明:编址第2元素满足不等式(30>=20)和编址第4元素满足不等式(40>=10)(12) 答案表明:编址第2行第1列元素满足不等式(30>=20)和编址第2行第2列元素满足不等式(40>=10)P20, ex2(1)a, b, c的值尽管都是1,但数据类型分别为数值,字符,逻辑,注意a 与c相等,但他们不等于b(2)double(fun)输出的分别是字符a,b,s,(,x,)的ASCII码P20,ex3>> r=2;p=0.5;n=12;>> T=log(r)/n/log(1+0.01*p)T =11.5813P20,ex4>> x=-2:0.05:2;f=x.^4-2.^x;>> [fmin,min_index]=min(f)fmin =-1.3907 %最小值min_index =54 %最小值点编址>> x(min_index)ans =0.6500 %最小值点>> [f1,x1_index]=min(abs(f)) %求近似根--绝对值最小的点f1 =0.0328x1_index =24>> x(x1_index)ans =-0.8500>> x(x1_index)=[];f=x.^4-2.^x; %删去绝对值最小的点以求函数绝对值次小的点>> [f2,x2_index]=min(abs(f)) %求另一近似根--函数绝对值次小的点f2 =0.0630x2_index =65>> x(x2_index)ans =1.2500P20,ex5>> z=magic(10)z =92 99 1 8 15 67 74 51 58 4098 80 7 14 16 73 55 57 64 414 81 88 20 22 54 56 63 70 4785 87 19 21 3 60 62 69 71 2886 93 25 2 9 61 68 75 52 3417 24 76 83 90 42 49 26 33 6579 6 13 95 97 29 31 38 45 7210 12 94 96 78 35 37 44 46 5311 18 100 77 84 36 43 50 27 59>> sum(z)ans =505 505 505 505 505 505 505 505 505 505 >> sum(diag(z))ans =505>> z(:,2)/sqrt(3)ans =57.157746.188046.765450.229553.693613.85642.88683.46416.928210.3923>> z(8,:)=z(8,:)+z(3,:)z =92 99 1 8 15 67 74 51 58 4098 80 7 14 16 73 55 57 64 414 81 88 20 22 54 56 63 70 4785 87 19 21 3 60 62 69 71 2886 93 25 2 9 61 68 75 52 3423 5 82 89 91 48 30 32 39 6683 87 101 115 119 83 87 101 115 11910 12 94 96 78 35 37 44 46 5311 18 100 77 84 36 43 50 27 59P 40 ex1先在编辑器窗口写下列M函数,保存为eg2_1.m function [xbar,s]=ex2_1(x)n=length(x);xbar=sum(x)/n;s=sqrt((sum(x.^2)-n*xbar^2)/(n-1));例如>>x=[81 70 65 51 76 66 90 87 61 77];>>[xbar,s]=ex2_1(x)xbar =72.4000s =12.1124P 40 ex2s=log(1);n=0;while s<=100n=n+1;s=s+log(1+n);endm=n计算结果m=37clear;F(1)=1;F(2)=1;k=2;x=0;e=1e-8; a=(1+sqrt(5))/2;while abs(x-a)>ek=k+1;F(k)=F(k-1)+F(k-2); x=F(k)/F(k-1); enda,x,k计算至k=21可满足精度P 40 ex4clear;tic;s=0;for i=1:1000000s=s+sqrt(3)/2^i;ends,toctic;s=0;i=1;while i<=1000000s=s+sqrt(3)/2^i;i=i+1;ends,toctic;s=0;i=1:1000000;s=sqrt(3)*sum(1./2.^i);s,tocP 40 ex5c=[15 14 14 14 14 15 16 18 20 22 23 25 28 ...31 32 31 29 27 25 24 22 20 18 17 16];plot(t,c)P 40 ex6(1)clear;fplot('x^2*sin(x^2-x-2)',[-2,2])x=-2:0.1:2;y=x.^2.*sin(x.^2-x-2);plot(x,y)y=inline('x^2*sin(x^2-x-2)');fplot(y,[-2 2])(2)参数方法t=linspace(0,2*pi,100);x=2*cos(t);y=3*sin(t); plot(x,y)(3)x=-3:0.1:3;y=x;[x,y]=meshgrid(x,y);z=x.^2+y.^2;surf(x,y,z)(4)x=-3:0.1:3;y=-3:0.1:13;[x,y]=meshgrid(x,y);z=x.^4+3*x.^2+y.^2-2*x-2*y-2*x.^2.*y+6;surf(x,y,z)(5)t=0:0.01:2*pi;x=sin(t);y=cos(t);z=cos(2*t);plot3(x,y,z)(6)theta=linspace(0,2*pi,50);fai=linspace(0,pi/2,20);[theta,fai]=meshgrid(theta,fai); x=2*sin(fai).*cos(theta);y=2*sin(fai).*sin(theta);z=2*cos(fai);surf(x,y,z)(7)x=linspace(0,pi,100);y1=sin(x);y2=sin(x).*sin(10*x);y3=-sin(x);plot(x,y1,x,y2,x,y3)page41, ex7x=-1.5:0.05:1.5;y=1.1*(x>1.1)+x.*(x<=1.1).*(x>=-1.1)-1.1*(x<-1.1);plot(x,y)page41,ex8分别使用which trapz, type trapz, dir C:\MATLAB7\toolbox\matlab\datafun\ page41,ex9clear;close;x=-2:0.1:2;y=x;[x,y]=meshgrid(x,y);a=0.5457;b=0.7575;p=a*exp(-0.75*y.^2-3.75*x.^2-1.5*x).*(x+y>1);p=p+b*exp(-y.^2-6*x.^2).*(x+y>-1).*(x+y<=1);p=p+a*exp(-0.75*y.^2-3.75*x.^2+1.5*x).*(x+y<=-1);mesh(x,y,p)page41, ex10lookfor lyapunovhelp lyap>> A=[1 2 3;4 5 6;7 8 0];C=[2 -5 -22;-5 -24 -56;-22 -56 -16];>> X=lyap(A,C)X =1.0000 -1.0000 -0.0000 -1.00002.0000 1.0000 -0.0000 1.0000 7.0000Chapter 3%Exercise 1>> a=[1,2,3];b=[2,4,3];a./b,a.\b,a/b,a\bans =0.5000 0.5000 1.0000ans =2 2 1ans =0.6552 %一元方程组x[2,4,3]=[1,2,3]的近似解ans =0 0 00 0 00.6667 1.3333 1.0000%矩阵方程[1,2,3][x11,x12,x13;x21,x22,x23;x31,x32,x33]=[2,4,3]的特解Exercise 2(1)>> A=[4 1 -1;3 2 -6;1 -5 3];b=[9;-2;1];>> rank(A), rank([A,b]) %[A,b]为增广矩阵ans =3ans =3 %可见方程组唯一解>> x=A\bx =2.38301.48942.0213Exercise 2(2)>> A=[4 -3 3;3 2 -6;1 -5 3];b=[-1;-2;1];>> rank(A), rank([A,b]) ans =3ans =3 %可见方程组唯一解>> x=A\bx =-0.4706-0.2941Exercise 2(3)>> A=[4 1;3 2;1 -5];b=[1;1;1];>> rank(A), rank([A,b])ans =2ans =3 %可见方程组无解>> x=A\bx =0.3311-0.1219 %最小二乘近似解Exercise 2(4)>> a=[2,1,-1,1;1,2,1,-1;1,1,2,1];b=[1 2 3]';%注意b的写法>> rank(a),rank([a,b])ans =3ans =3 %rank(a)==rank([a,b])<4说明有无穷多解>> a\bans =110 %一个特解Exercise 3>> a=[2,1,-1,1;1,2,1,-1;1,1,2,1];b=[1,2,3]';>> x=null(a),x0=a\bx =-0.62550.6255-0.20850.4170x0 =11%通解kx+x0 Exercise 4>> x0=[0.2 0.8]';a=[0.99 0.05;0.01 0.95];>> x1=a*x, x2=a^2*x, x10=a^10*x>> x=x0;for i=1:1000,x=a*x;end,xx =0.83330.1667>> x0=[0.8 0.2]';>> x=x0;for i=1:1000,x=a*x;end,xx =0.83330.1667>> [v,e]=eig(a)v =0.9806 -0.70710.1961 0.7071e =1.0000 00 0.9400>> v(:,1)./xans =1.17671.1767 %成比例,说明x是最大特征值对应的特征向量Exercise 5%用到公式(3.11)(3.12)>> B=[6,2,1;2.25,1,0.2;3,0.2,1.8];x=[25 5 20]'; >> C=B/diag(x)C =0.2400 0.4000 0.05000.0900 0.2000 0.0100 0.1200 0.0400 0.0900 >> A=eye(3,3)-CA =0.7600 -0.4000 -0.0500 -0.0900 0.8000 -0.0100 -0.1200 -0.0400 0.9100 >> D=[17 17 17]';x=A\D x =37.569625.786224.7690%Exercise 6(1)>> a=[4 1 -1;3 2 -6;1 -5 3];det(a),inv(a),[v,d]=eig(a) ans =-94ans =0.2553 -0.0213 0.04260.1596 -0.1383 -0.22340.1809 -0.2234 -0.0532v =0.0185 -0.9009 -0.3066-0.7693 -0.1240 -0.7248-0.6386 -0.4158 0.6170d =-3.0527 0 00 3.6760 00 0 8.3766%Exercise 6(2)>> a=[1 1 -1;0 2 -1;-1 2 0];det(a),inv(a),[v,d]=eig(a) ans =1ans =2.0000 -2.0000 1.00001.0000 -1.0000 1.00002.0000 -3.0000 2.0000v =-0.5773 0.5774 + 0.0000i 0.5774 - 0.0000i-0.5773 0.5774 0.5774-0.5774 0.5773 - 0.0000i 0.5773 + 0.0000id =1.0000 0 00 1.0000 + 0.0000i 00 0 1.0000 - 0.0000i%Exercise 6(3)>> A=[5 7 6 5;7 10 8 7;6 8 10 9;5 7 9 10]A =5 76 57 10 8 76 8 10 95 7 9 10>> det(A),inv(A), [v,d]=eig(A)ans =1ans =68.0000 -41.0000 -17.0000 10.0000-41.0000 25.0000 10.0000 -6.0000-17.0000 10.0000 5.0000 -3.000010.0000 -6.0000 -3.0000 2.0000v =0.8304 0.0933 0.3963 0.3803-0.5016 -0.3017 0.6149 0.5286-0.2086 0.7603 -0.2716 0.55200.1237 -0.5676 -0.6254 0.5209d =0.0102 0 0 00 0.8431 0 00 0 3.8581 00 0 0 30.2887%Exercise 6(4)、(以n=5为例)%关键是矩阵的定义%方法一(三个for)n=5;for i=1:n, a(i,i)=5;endfor i=1:(n-1),a(i,i+1)=6;endfor i=1:(n-1),a(i+1,i)=1;enda%方法二(一个for)n=5;a=zeros(n,n);a(1,1:2)=[5 6];for i=2:(n-1),a(i,[i-1,i,i+1])=[1 5 6];enda(n,[n-1 n])=[1 5];a%方法三(不用for)n=5;a=diag(5*ones(n,1));b=diag(6*ones(n-1,1));c=diag(ones(n-1,1));a=a+[zeros(n-1,1),b;zeros(1,n)]+[zeros(1,n);c,zeros(n-1,1)] %下列计算>> det(a)ans =665>> inv(a)ans =0.3173 -0.5865 1.0286 -1.6241 1.9489-0.0977 0.4887 -0.8571 1.3534 -1.62410.0286 -0.1429 0.5429 -0.8571 1.0286-0.0075 0.0376 -0.1429 0.4887 -0.5865 0.0015 -0.0075 0.0286 -0.0977 0.3173 >> [v,d]=eig(a)v =-0.7843 -0.7843 -0.9237 0.9860 -0.9237 0.5546 -0.5546 -0.3771 -0.0000 0.3771-0.2614 -0.2614 0.0000 -0.1643 0.0000 0.0924 -0.0924 0.0628 -0.0000 -0.0628-0.0218 -0.0218 0.0257 0.0274 0.0257d =0.7574 0 0 0 00 9.2426 0 0 00 0 7.4495 0 00 0 0 5.0000 00 0 0 0 2.5505%Exercise 7(1)>> a=[4 1 -1;3 2 -6;1 -5 3];[v,d]=eig(a) v =0.0185 -0.9009 -0.3066-0.7693 -0.1240 -0.7248-0.6386 -0.4158 0.6170d =-3.0527 0 00 3.6760 00 0 8.3766>> det(v)ans =-0.9255 %v行列式正常, 特征向量线性相关,可对角化>> inv(v)*a*v %验算ans =-3.0527 0.0000 -0.00000.0000 3.6760 -0.0000-0.0000 -0.0000 8.3766>> [v2,d2]=jordan(a) %也可用jordanv2 =0.0798 0.0076 0.91270.1886 -0.3141 0.1256-0.1605 -0.2607 0.4213 %特征向量不同d2 =8.3766 0 00 -3.0527 - 0.0000i 00 0 3.6760 + 0.0000i>> v2\a*v2ans =8.3766 0 0.00000.0000 -3.0527 0.00000.0000 0.0000 3.6760>> v(:,1)./v2(:,2) %对应相同特征值的特征向量成比例ans =2.44912.44912.4491%Exercise 7(2)>> a=[1 1 -1;0 2 -1;-1 2 0];[v,d]=eig(a)v =-0.5773 0.5774 + 0.0000i 0.5774 - 0.0000i-0.5773 0.5774 0.5774-0.5774 0.5773 - 0.0000i 0.5773 + 0.0000id =1.0000 0 00 1.0000 + 0.0000i 00 0 1.0000 - 0.0000i>> det(v)ans =-5.0566e-028 -5.1918e-017i %v的行列式接近0, 特征向量线性相关,不可对角化>> [v,d]=jordan(a)v =1 0 11 -1 0d =1 1 00 1 10 0 1 %jordan标准形不是对角的,所以不可对角化%Exercise 7(3)>> A=[5 7 6 5;7 10 8 7;6 8 10 9;5 7 9 10]A =5 76 57 10 8 76 8 10 95 7 9 10>> [v,d]=eig(A)0.8304 0.0933 0.3963 0.3803-0.5016 -0.3017 0.6149 0.5286-0.2086 0.7603 -0.2716 0.55200.1237 -0.5676 -0.6254 0.5209d =0.0102 0 0 00 0.8431 0 00 0 3.8581 00 0 0 30.2887>> inv(v)*A*vans =0.0102 0.0000 -0.0000 0.00000.0000 0.8431 -0.0000 -0.0000-0.0000 0.0000 3.8581 -0.0000-0.0000 -0.0000 0 30.2887%本题用jordan不行, 原因未知%Exercise 7(4)参考6(4)和7(1), 略%Exercise 8 只有(3)对称, 且特征值全部大于零, 所以是正定矩阵. %Exercise 9(1)>> a=[4 -3 1 3;2 -1 3 5;1 -1 -1 -1;3 -2 3 4;7 -6 -7 0]>> rank(a)ans =3>> rank(a(1:3,:))ans =2>> rank(a([1 2 4],:)) %1,2,4行为最大无关组3>> b=a([1 2 4],:)';c=a([3 5],:)'; >> b\c %线性表示的系数ans =0.5000 5.0000-0.5000 1.00000 -5.0000%Exercise 10>> a=[1 -2 2;-2 -2 4;2 4 -2]>> [v,d]=eig(a)0.3333 0.9339 -0.12930.6667 -0.3304 -0.6681-0.6667 0.1365 -0.7327d =-7.0000 0 00 2.0000 00 0 2.0000>> v'*vans =1.0000 0.0000 0.00000.0000 1.0000 00.0000 0 1.0000 %v确实是正交矩阵%Exercise 11%设经过6个电阻的电流分别为i1, ..., i6. 列方程组如下%20-2i1=a; 5-3i2=c; a-3i3=c; a-4i4=b; c-5i5=b; b-3i6=0; %i1=i3+i4;i5=i2+i3;i6=i4+i5;%计算如下>> A=[1 0 0 2 0 0 0 0 0;0 0 1 0 3 0 0 0 0;1 0 -1 0 0 -3 0 0 0;1 -1 0 0 0 0 -4 0 0;0 -1 1 0 0 0 0 -5 0;0 1 0 0 0 0 0 0 -3;0 0 0 1 0 -1 -1 0 0;0 0 0 0 -1 -1 0 1 0;0 0 0 0 0 0 -1 -1 1];>>b=[20 5 0 0 0 0 0 0 0]'; A\bans =13.34536.44018.54203.3274-1.18071.60111.72630.42042.1467%Exercise 12>> A=[1 2 3;4 5 6;7 8 0];>> left=sum(eig(A)), right=sum(trace(A))left =6.0000right =6>> left=prod(eig(A)), right=det(A) %原题有错, (-1)^n应删去left =27.0000right =27>> fA=(A-p(1)*eye(3,3))*(A-p(2)*eye(3,3))*(A-p(3)*eye(3,3))fA =1.0e-012 *0.0853 0.1421 0.02840.1421 0.1421 0-0.0568 -0.1137 0.1705>> norm(fA) %f(A)范数接近0ans =2.9536e-013%Exercise 1(1)roots([1 1 1])%Exercise 1(2)roots([3 0 -4 0 2 -1])%Exercise 1(3)p=zeros(1,24);p([1 17 18 22])=[5 -6 8 -5];roots(p)%Exercise 1(4)p1=[2 3];p2=conv(p1, p1);p3=conv(p1, p2);p3(end)=p3(end)-4; %原p3最后一个分量-4roots(p3)%Exercise 2fun=inline('x*log(sqrt(x^2-1)+x)-sqrt(x^2-1)-0.5*x'); fzero(fun,2)】%Exercise 3fun=inline('x^4-2^x');fplot(fun,[-2 2]);grid on;fzero(fun,-1),fzero(fun,1),fminbnd(fun,0.5,1.5)%Exercise 4fun=inline('x*sin(1/x)','x');fplot(fun, [-0.1 0.1]);x=zeros(1,10);for i=1:10, x(i)=fzero(fun,(i-0.5)*0.01);end;x=[x,-x]%Exercise 5fun=inline('[9*x(1)^2+36*x(2)^2+4*x(3)^2-36;x(1)^2-2*x(2)^2-20*x(3);16*x(1)-x(1)^3-2*x(2)^2-16*x(3)^2]','x');[a,b,c]=fsolve(fun,[0 0 0])%Exercise 6fun=@(x)[x(1)-0.7*sin(x(1))-0.2*cos(x(2)),x(2)-0.7*cos(x(1))+0.2*sin(x(2))];[a,b,c]=fsolve(fun,[0.5 0.5])%Exercise 7clear; close; t=0:pi/100:2*pi; x1=2+sqrt(5)*cos(t); y1=3-2*x1+sqrt(5)*sin(t);x2=3+sqrt(2)*cos(t); y2=6*sin(t);plot(x1,y1,x2,y2); grid on; %作图发现4个解的大致位置,然后分别求解y1=fsolve('[(x(1)-2)^2+(x(2)-3+2*x(1))^2-5,2*(x(1)-3)^2+(x(2)/3)^2-4]',[1.5,2])y2=fsolve('[(x(1)-2)^2+(x(2)-3+2*x(1))^2-5,2*(x(1)-3)^2+(x(2)/3)^2-4]',[1.8,-2])y3=fsolve('[(x(1)-2)^2+(x(2)-3+2*x(1))^2-5,2*(x(1)-3)^2+(x(2)/3)^2-4]',[3.5,-5])y4=fsolve('[(x(1)-2)^2+(x(2)-3+2*x(1))^2-5,2*(x(1)-3)^2+(x(2)/3)^2-4]',[4,-4])%Exercise 8(1)clear;fun=inline('x.^2.*sin(x.^2-x-2)');fplot(fun,[-2 2]);grid on; %作图观察x(1)=-2;x(3)=fminbnd(fun,-1,-0.5);x(5)=fminbnd(fun,1,2);fun2=inline('-x.^2.*sin(x.^2-x-2)');x(2)=fminbnd(fun2,-2,-1);x(4)=fminbnd(fun2,-0.5,0.5);x(6)=2feval(fun,x)%答案: 以上x(1)(3)(5)是局部极小,x(2)(4)(6)是局部极大,从最后一句知道x(1)全局最小, x(2)最大。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档