MATLAB+考试试题
![MATLAB+考试试题](https://img.360docs.net/img7b/03poxnh4i8xbrhmog07j-b1.webp)
![MATLAB+考试试题](https://img.360docs.net/img7b/03poxnh4i8xbrhmog07j-c2.webp)
A B 把
B
A
.
r
. .
年
.
H
至
H 在
年
产生一个1x1的随机矩阵,大小位于(-5 5),并且按照从大到小的顺序排列好!(注:要程 序和运行结果的截屏)
答案:
a=10*rand(1,10)-5;
b=sort (a,'descend')
1.请产生一个100*5的矩阵,矩阵的每一行都是[1 2 3 4 5]
2. 已知变量:A=’il ov e matlab ’;B=’matla b ’, 请找出:
( ) B 在A 中的位置。
( )
放在 后面,形成C=‘ilov e matl abmatlab ’
3 请修改下面的程序,让他们没有fo 循环语句!
A=[1 2 3; 4 5 6; 7 8 9];
[r c]=size(A);
for i=1:1:r
for j=1:1:c
if (A(i,j)>8 | A(i,j)<2)
A(i,j)=0;
end
end
end
4
请把变量A=[1 2 3; 4 5 6; 7 8 9]写到文件里(out put.xls),写完后文件看起来是这样 的
1 2 3 4 5 6 7 8 9
5试从Yahoo 网站上获得微软公司股票的2008 9月的每日收盘价。
6编写M 文件,从Yahoo 网站批量读取60000.S 600005.S 2008 9月份的每日收盘 价(提示:使用字符串函数)。
1
PDF created with pdfFactory Pro trial version https://www.360docs.net/doc/7f14182956.html,
1、求下列联立方程的解
3x+4y-7z-12w=4
5x-7y+4z+2w=-3
x +8z- 5w=9
-6x+5y-2z+10w=-8
求系数矩阵的秩;
求出方程组的解。
解:(1)
>> a=[3 4 -7 -12];
5 -7 4 2 ;
1 0 8 -5;
-6 5 -2 10];
c=[4; -3; 9;-8];
b=rank(a)
b = 4
(2)>> d=a\c
d = -1.4841, -0.6816, 0.5337,-1.2429
即:x=-1.4841;y= -0.6816;z= 0.5337;w=-1.2429
2、设y=cos[0.5+((3sinx)/(1+x^2))] 把x=0~2π间分为101点,画出以x为横坐标,y为纵坐标的曲线;
解:>>x=linspace(0,2*pi,101);
y=cos(0.5+3.*sin(x)./(1+x.*x));
plot(x,y)
2
PDF created with pdfFactory Pro trial version https://www.360docs.net/doc/7f14182956.html,
3、设f(x)=x^5-4x^4+3x^2-2x+6
(1)取x=[-2,8]之间函数的值(取100个点),画出曲线,看它有几个零点。
(提示:用polyval 函数)
解:>>p=[1-4 3-2 6];
x=linspace(-2,8,100);
y=polyval(p,x); plot(x,y);
axis([-2,8,-200,2300]);
为了便于观察,在y=0处画直线,图如下所示:
与y=0直线交点有两个,有两个实根。
(2)用roots函数求此多项式的根
>>a=roots(p)
a= 3.0000,1.6956 , -0.3478 + 1.0289i , -0.3478 - 1.0289i
4、在[-10,10;-10,10]范围内画出函数的三维图形。
解:>>[X,Y]=meshgrid(-10 :0.5 :10);
a=sqrt(X.^2+Y.^2) +eps;
Z=sin(a)./a;
mesh(X,Y,Z);
PDF created with pdfFactory Pro trial version https://www.360docs.net/doc/7f14182956.html,
matlab试卷,求答案一、选择或填空
(每空2分,共20分)
1、标点符号()可以使命令行不显示运算结果,()用来表示该行为注释行。
2、下列变量名中()是合法的。
(A) char_1 ; (B) x*y ; (C) x\y ; (D) end
3、为~,步长为的向量,使用命令()创建。
4、输入矩阵,使用全下标方式用()取出元素“”,使用单下标方式用()取出元素“”。
5、符号表达式中独立的符号变量为()。
6、M脚本文件和M函数文件的主要区别是()和
)
。
7、在循环结构中跳出循环,但继续下次循环的命令为()。
(A) return; (B) break ; (C) continue ; (D) keyboad
二、(本题12分)利用MATLAB数值运算,求解线性方程组(将程序保存为test02.m文件)
三、(本题20分)利用MATALAB符号运算完成(将程序保存为test03.m文件):
(1)创建符号函数
(2)求该符号函数对的微分;
(3)对趋向于求该符号函数的极限;
(4)求该符号函数在区间上对的定积分;
(5)求符号方程的解。
四、(本题20分)编写MATALAB程序,完成下列任务(将程序保存为test04.m文件):(1)在区间上均匀地取20个点构成向量;
(2)分别计算函数与在向量处的函数值;
(3)在同一图形窗口绘制曲线与,要求曲线为黑色点画线,曲线为红色虚线圆圈;并在图中恰当位置标注两条曲线的图例;给图形加上标题“y1 and y2”。五、(本题15分)编写M函数文件,利用for循环或while循环完成计算函数的任务,并利用该函数计算时的和(将总程序保存为test05.m文件)。六、(本题13分)已知求解线性规划模型:
的MATLAB命令为
x=linprog(c,A,b,Aeq,beq,VLB,VUB)试编写MATLAB程序,求解如下线性规划
问题(将程序保存为test06.m文件):问题补充:
卷子的地址
看不见符号,能做就做了一些.
1、标点符号(; )可以使命令行不显示运算结果,(% )用来表示该行为注释
行。
2、下列变量名中( A )是合法的。
4
PDF created with pdfFactory Pro trial version https://www.360docs.net/doc/7f14182956.html,
(A) char_1 ; (B) x*y ; (C) x\y ; (D) end
3、为~,步长为的向量,使用命令(本题题意不清)创建。
4、输入矩阵,使用全下标方式用(本题题意不清)取出元素“”,使用单下标方式用(本题题意不清)取出元素“”。
5、符号表达式中独立的符号变量为()。
6、M脚本文件和M函数文件的主要区别是(变量生存期和可见性)和(函数返回值)。
7、在循环结构中跳出循环,但继续下次循环的命令为( C )。
(A) return; (B) break ; (C) continue ; (D) keyboad
二、(本题12分)利用MATLAB数值运算,求解线性方程组(将程序保存为test02.m文件)
三、(本题20分)利用MATALAB符号运算完成(将程序保存为test03.m文件):
(1)创建符号函数syms x
(2)求该符号函数对的微分;
(3)对趋向于求该符号函数的极限;
(4)求该符号函数在区间上对的定积分;
(5)求符号方程的解。
四、(本题20分)编写MATALAB程序,完成下列任务(将程序保存为test04.m文件):(1)在区间上均匀地取20个点构成向量;
(2)分别计算函数与在向量处的函数值;
(3)在同一图形窗口绘制曲线与,要求曲线为黑色点画线,曲线为红色虚线圆圈;并在图中恰当位置标注两条曲线的图例;给图形加上标题“y1 and y2”。五、(本题15分)编写M函数文件,利用for循环或while循环完成计算函数的任务,并利用该函数计算时的和(将总程序保存为test05.m文件)。六、(本题13分)已知求解线性规划模型:
的MATLAB命令为
x=linprog(c,A,b,Aeq,beq,VLB,VUB)试编写MATLAB程序,求解如下线性规划
问题(将程序保存为test06.m文件):
[例2.1]已知SISO系统的状态空间表达式为(2-3)式,求系统的传递函数。
A=[01 0;0 01;-4 -3 -2];B=[1;3;-6];C=[1 0 0];D=0;
[num,den]=ss2tf(a,b,c,d,u)
[num,den]=ss2tf(A,B,C,D,1)
5
PDF created with pdfFactory Pro trial version https://www.360docs.net/doc/7f14182956.html,
[例2.2]从系统的传递函数(2-4)式求状态空间表达式。
num=[1 53];
den=[1 234];
[A,B,C,D]=tf2ss(num,den)
[例2.3]对上述结果进行验证编程。
%将[例2.2]上述结果赋值给A、B、C、D阵;
A=[-2 -3 -4;1 00;010];B=[1;0;0];C =[1 53];D=0;
[num,den]=ss2tf(A,B,C,D,1)
[例2.4]给定系统,求系统的零极点增益模型和状态空间模型,并求其单位脉冲响应及单位阶跃响应。
解:
num=[1 2 1 3];den=[1 0.5 2 1];
sys=tf(num,den) %系统的传递函数模型
Transfer function:
s^3 + 2 s^2 + s + 3
-----------------------------
s^3 + 0.5 s^2 + 2 s + 1
sys1=tf2zp(num,den) %系统的零极点增益模型sys1 =
sys2=tf2ss(sys) %系统的状态空间模型模型;或用[a,b,c,d]=tf2ss(num,den)形式
impulse(sys2) %系统的单位脉冲响应
step(sys2) %系统的单位阶跃响应
[例3.1]对下面系统进行可控性、可观性分析。
解:
a=[-1 -2 2;0 -1 1;1 0-1];b=[201]';c=[1
20] Qc=ctrb(a,b) %生成能控性判别矩阵
rank(Qc) %求矩阵Qc的秩
ans=3%满秩,故系统能控
Qo=obsv(a,c)%生成能观测性判别矩阵
6
PDF created with pdfFactory Pro trial version https://www.360docs.net/doc/7f14182956.html,
rank(Qo) %求矩阵Qo的秩
ans=3%满秩,故系统能观测
[例3.2]已知系统状态空间方程描述如下:试判定其稳定性,并绘制出时间响应曲线来验证上述判断。解:
A=[-10 -35 -50 -24;1 00 0;0 100;0 010]; B=[1;0;0;0];C=[1 72424];D=[0];
[z,p,k]=ss2zp(A,B,C,D,1);
Flagz=0;
n=length(A);
for i=1:n
if real(p(i))>0
Flagz=1;
end
end
disp('系统的零极点模型为');z,p,k
系统的零极点模型为
if Flagz==1 disp('
系统不稳定');
else disp('系统是稳定的');
end 运行结果
为: 系统是稳
定的
7
PDF created with pdfFactory Pro trial version https://www.360docs.net/doc/7f14182956.html,
step(A,B,C,D) %系统的阶跃响应
资源与环境工程学院2008级硕士研究生《MatLab及其应用》试题
注意,每题的格式均须包含3个部分
a. 程序(含程序名及完整程序):
b. 运行过程:
c. 运行结果:
(1)求解线性规划问题:
问各x i分别取何值时,Z有何极小值。(10分)
答:fprintf('线性规划问题求解\n');
f = [-4;1;7];
A = [3,-1,1;1,1,-4;];
b = [4,-7]';
Aeq = [1,1,-1];
beq = [5]';
lb = [0,0,];
ub = [];
x = linprog(f,A,b,Aeq,beq,lb,ub);
x
z = f' * x;
fprintf('MIN z = %f \n' , z);
运行结果:线性规划问题求解
Optimization terminated successfully.
x =
2.2500
6.7500
4.0000
MIN z = 25.750000
(2)编写一个函数,使其能够产生如下的分段函数:
8
PDF created with pdfFactory Pro trial version https://www.360docs.net/doc/7f14182956.html,
并调用此函数,绘制。(10分)
答:function y=f(x)
if x<=2 y=0.5*x;
else if
x>6
y=0.5;
else y =1.5-0.25*x;
end
end
运行结果x=2
f(x)=1
x = 0:0.05:2;
y = diag(A2(x)'*A2(x+2));
plot(x,y);
xlabel('\bfx');
ylabel('\bfy');
(3) 将一个屏幕分4幅,选择合适的步长在右上幅与左下幅绘制出下列函数的图形。(10分)
①(曲线图);②
(曲面图)。
答:>> subplot(2,2,2)
>>ezplot('(cos(x))^(1/2)',[-pi/2pi/2])
>>ylabel('y')
9
PDF created with pdfFactory Pro trial version https://www.360docs.net/doc/7f14182956.html,
>>subplot(2,2,3)
>>x=-2:0.5:2;
>> y=-4:1:4;
>>ezsurfc('x^2/2^2+y^2/4^2')
(4) A 是一个維度m×n的矩阵. 写一段程序, 算出A中有多少个零元素(10分)
答:>> A= input ('请输入一个矩阵')
[m,n]= size(A);
sig=0;
for i=1:m
for j=1:n
if A(i,j)==0
sig = sig+1;
end
end
end
请输入一个矩阵[0 1 2;1 0 2; 0 0 0]
A =
012
102
000
>> sig
sig =
5
(5) 向量. 写一段程序, 找出A中的最小元素(10分)
答:A= input ('请输入一个向量')
[m,n]=sizeA
min =A(1,n);
for i=1:n
10
PDF created with pdfFactory Pro trial version https://www.360docs.net/doc/7f14182956.html,
if A(1,i) min=A(1,i) end end 请输入一个向量[1 2 3 -5 2 0] A = 1 2 3 -5 2 0 min = -5 B.应用题(50分)根据专业方向特色和相关科研工作需求,经过与导师商量 后,结合一个课题具体任务,编写一份Matlab应用工作报告。报告由:a课题任 务要求,b技术路线,c程序,d运行结果,e总结、等部分构成,完成的报告经 导师给出简单评语并签字后缴来。 a,课题任务:研究了一种生物质,油菜秸秆对水溶液中金属离子铜的吸附行为,分别从pH,用量,温度几个方面考察秸秆的吸附性,并对分析的最佳条件 进行了探讨。同时从吸附热力学和吸附动力学角度探讨吸附机理。结果表明, 100ml溶液pH=5.30,秸秆用量0.75g时,秸秆对铜的吸附量可达到6mg/g左右。 b,技术路线:通过实验,获得一系列的数据,然后通过Matlab来做各种关系图。从图中找到g各种关系式。c,程 序:x=[2.20 2.72 3.44 4.13 5.38] y=[2.39 3.83 6.07 6.39 6.84] plot(x,y); xlabel('pH'); ylabel('吸附量') 图1 11 PDF created with pdfFactory Pro trial version https://www.360docs.net/doc/7f14182956.html, x=[0.5 0.75 1.0 1.25 1.5 ] y=[6.05 6.19 5.33 4.69 4.02] plot(x,y); xlabel('秸秆用量g'); ylabel('吸附量') 图2 通过数据图,得到比较理想的实验条件pH 和秸秆用量,接下来做动力 学和等温线。 > x=[0.167 0.5 1 2 3 4 5 8 ] y=[0.033201 0.086059 0.169779 0.322061 0.480769 0.644122 0.809061 1.269841] plot(x,y); xlabel('时间t'); ylabel('时间/吸附量 ') 图3 x=[0.2363 0.15496 0.13619 0.12906 0.13373 0.13315] y=[0.25218 0.04707 0.02014 0.01267 0.00881 0.00706] plot(x,y); xlabel('1/吸附量'); ylabel('1/平衡浓度') 12 PDF created with pdfFactory Pro trial version https://www.360docs.net/doc/7f14182956.html, 图4 x=[0.62654 0.80977 0.86585 0.8892 0.87377 0.87564] y=[0.59829 1.3273 1.69589 1.89737 2.05503 2.15149] plot(x,y); xlabel('Lg吸附量'); ylabel('Lg平衡浓度') 图5 d,总结:从图1和图2,分析看可以得到比较理想的对于本次实验的pH和秸秆用量。后面实验是在前面的基础上得到的。图3是吸附动力学反应速率图,从图 中可以看到线性拟合程度很好,符合二级反应速率方程。图4和图5是吸附等温线 作图,看以看出图4的线性拟合较图5的好,说明符合Langmuir吸附等温模型。 [例2.1]已知SISO系统的状态空间表达式为(2-3)式,求系统的传递函数。 A=[01 0;0 01;-4 -3 -2];B=[1;3;-6];C=[1 0 0];D=0; [num,den]=ss2tf(a,b,c,d,u) [num,den]=ss2tf(A,B,C,D,1) [例2.2]从系统的传递函数(2-4)式求状态空间表达式。 num=[1 53]; den=[1 234]; 13 PDF created with pdfFactory Pro trial version https://www.360docs.net/doc/7f14182956.html, MatLab解线性方程组一文通 当齐次线性方程AX=0,rank(A)=r 解线性方程组的迭代法 1.rs里查森迭代法求线性方程组Ax=b的解 function[x,n]=rs(A,b,x0,eps,M) if(nargin==3) eps=1.0e-6;%eps表示迭代精度 M=10000;%M表示迭代步数的限制值elseif(nargin==4) M=10000; end I=eye(size(A)); n=0; x=x0; tol=1; %迭代过程 while(tol>eps) x=(I-A)*x0+b; n=n+1;%n为最终求出解时的迭代步数tol=norm(x-x0); x0=x; if(n>=M) disp('Warning:迭代次数太多,可能不收敛!'); return; end end 2.crs里查森参数迭代法求线性方程组Ax=b的解 function[x,n]=crs(A,b,x0,w,eps,M) if(nargin==4) eps=1.0e-6;%eps表示迭代精度 M=10000;%M表示迭代步数的限制值 elseif(nargin==5) M=10000; end I=eye(size(A)); n=0; x=x0; tol=1; %迭代过程 while(tol>eps) x=(I-w*A)*x0+w*b; n=n+1;%n为最终求出解时的迭代步数tol=norm(x-x0); x0=x; if(n>=M) disp('Warning:迭代次数太多,可能不收敛!'); return; end end 3.grs里查森迭代法求线性方程组Ax=b的解 function[x,n]=grs(A,b,x0,W,eps,M) if(nargin==4) eps=1.0e-6;%eps表示迭代精度 M=10000;%M表示迭代步数的限制值 elseif(nargin==5) M=10000; end I=eye(size(A)); n=0; x=x0; tol=1;%前后两次迭代结果误差 %迭代过程 while(tol>eps) x=(I-W*A)*x0+W*b;%迭代公式 n=n+1;%n为最终求出解时的迭代步数tol=norm(x-x0); x0=x; if(n>=M) disp('Warning:迭代次数太多,可能不收敛!'); return; end end 4.jacobi雅可比迭代法求线性方程组Ax=b的解 function[x,n]=jacobi(A,b,x0,eps,varargin) if nargin==3 eps=1.0e-6; M=200; elseif nargin<3 error return elseif nargin==5 M=varargin{1}; end D=diag(diag(A));%求A的对角矩阵 L=-tril(A,-1);%求A的下三角阵 MATLAB的GUI 程序设计 Chapter 8: Design of MATLAB of GUI program GUI(Graphical User Interfaces):由各种图形对象组成的用户界面,在这种用户界面下,用户的命令和对程序的控制是通过“选择”各种图形对象来实现的。 基本图形对象分为控件对象和用户界面菜单对象,简称控件和菜单。 一. 控件对象及属性(Object and its attributes of controller)) 1. GUI控件对象类型(The mode of controller object) 控件对象是事件响应的图形界面对象。当某一事件发生时,应用程序会做出响应并执行某些预定的功能子程序(Callback). 控件对象及其功能:(表7—1) 2. 控件对象的描述(Description of controller object) MATLAB中的控件大致可分为两种,一种为动作控件,鼠标点击这些控件时会产生相应的响应。一种为静态控件,是一种不产生响应的控件,如文本框等。 每种控件都有一些可以设置的参数,用于表现控件的外形、功能及效果,既属性。属性由两部分组成:属性名和属性值,它们必须是成对出现的。 (1)按钮(Push Buttons):执行某种预定的功能或操作; (2)开关按钮(Toggle Button):产生一个动作并指示一个二进制状态(开或关),当鼠点击它时按钮将下陷,并执行callback(回调函数)中指定的内容,再次点击,按钮复原,并再次执行callback 中的内容; (3)单选框(Radio Button):单个的单选框用来在两种状态之间切换,多个单选框组成一个单选框组时,用户只能在一组状态中选择单一的状态,或称为单选项; (4)复选框(Check Boxes):单个的复选框用来在两种状态之间切换,多个复选框组成一个复选框组时,可使用户在一组状态中作组合式的选择,或称为多选项; (5)文本编辑器(Editable Texts):用来使用键盘输入字符串的值,可以对编辑框中的内容进行编辑、删除和替换等操作; (6)静态文本框(Static Texts):仅仅用于显示单行的说明文字; (7)滚动条(Slider):可输入指定范围的数量值; matlab解方程组 lnx表示成log(x) 而lgx表示成log10(x) 1-exp(((log(y))/x^0.5)/(x-1)) 1、解方程 最近有多人问如何用matlab解方程组的问题,其实在matlab中解方程组还是很方便的,例如,对于代数方程组Ax=b(A为系数矩阵,非奇异)的求解,MATLAB 中有两种方法: (1)x=inv(A)*b —采用求逆运算解方程组; (2)x=A\B —采用左除运算解方程组 PS:使用左除的运算效率要比求逆矩阵的效率高很多~ 例: x1+2x2=8 2x1+3x2=13 >>A=[1,2;2,3];b=[8;13]; >>x=inv(A)*b x = 2.00 3.00 >>x=A\B x = 2.00 3.00; 即二元一次方程组的解x1和x2分别是2和3。 对于同学问到的用matlab解多次的方程组,有符号解法,方法是:先解出符号解,然后用vpa(F,n)求出n位有效数字的数值解.具体步骤如下: 第一步:定义变量syms x y z ...; 第二步:求解[x,y,z,...]=solve('eqn1','eqn2',...,'eqnN','var1','var2',...'varN'); 第三步:求出n位有效数字的数值解x=vpa(x,n);y=vpa(y,n);z=vpa(z,n);...。 如:解二(多)元二(高)次方程组: x^2+3*y+1=0 y^2+4*x+1=0 解法如下: >>syms x y; >>[x,y]=solve('x^2+3*y+1=0','y^2+4*x+1=0'); >>x=vpa(x,4); >>y=vpa(y,4); 结果是: 在这章中我们要学习线性方程组的直接法,特别是适合用数学软件在计算机上求解的方法. 3.1 方程组的逆矩阵解法及其MATLAB 程序 3.1.3 线性方程组有解的判定条件及其MATLAB 程序 判定线性方程组A n m ?b X =是否有解的MATLAB 程序 function [RA,RB,n]=jiepb(A,b) B=[A b];n=length(b); RA=rank(A); RB=rank(B);zhica=RB-RA; if zhica>0, disp('请注意:因为RA~=RB ,所以此方程组无解.') return end if RA==RB if RA==n disp('请注意:因为RA=RB=n ,所以此方程组有唯一解.') else disp('请注意:因为RA=RB 《MATLAB语言》课成论文 利用MATLAB求线性方程组 姓名:郭亚兰 学号:12010245331 专业:通信工程 班级:2010级通信工程一班 指导老师:汤全武 学院:物电学院 完成日期:2011年12月17日 利用MATLAB求解线性方程组 (郭亚兰 12010245331 2010 级通信一班) 【摘要】在高等数学及线性代数中涉及许多的数值问题,未知数的求解,微积分,不定积分,线性方程组的求解等对其手工求解都是比较复杂,而MATLAB语言正是处理线性方程组的求解的很好工具。线性代数是数学的一个分支,它的研究对象是向量,向量空间(或称线性空间),线性变换和有限维的线性方程组。因而,线性代数被广泛地应用于抽象代数和泛函分析中;由于科学研究中的非线性模型通常可以被近似为线性模型,使得线性代数被广泛地应用于自然科学和社会科学中。线性代数是数学的一个分支,它的研究对象是向量,向量空间(或称线性空间),线性变换和有限维的线性方程组。因而,线性代数被广泛地应用于抽象代数和泛函分析中;由于科学研究中的非线性模型通常可以被近似为线性模型,使得线性代数被广泛地应用于自然科学和社会科学中。线性代数是讨论矩阵理论、与矩阵结合的有限维向量空间及其线性变换理论的一门学科。 【关键字】线性代数MATLAB语言秩矩阵解 一、基本概念 1、N级行列式A:A等于所有取自不同性不同列的n个元素的积的代数和。 2、矩阵B:矩阵的概念是很直观的,可以说是一张表。 3、线性无关:一向量组(a1,a2,…,an)不线性相关,既没有不全为零的数 k1,k2,………kn使得:k1*a1+k2*a2+………+kn*an=0 4、秩:向量组的极在线性无关组所含向量的个数成为这个向量组的秩。 5、矩阵B的秩:行秩,指矩阵的行向量组的秩;列秩类似。记:R(B) 3.1 方程组的逆矩阵解法及其MATLAB 程序 3.1.3 线性方程组有解的判定条件及其MATLAB 程序 判定线性方程组A n m ?b X =是否有解的MATLAB 程序 function [RA,RB,n]=jiepb(A,b) B=[A b];n=length(b); RA=rank(A); RB=rank(B);zhica=RB-RA; if zhica>0, disp('请注意:因为RA~=RB ,所以此方程组无解.') return end if RA==RB if RA==n disp('请注意:因为RA=RB=n ,所以此方程组有唯一解.') else disp('请注意:因为RA=RB 实验1.1 用matlab 求解线性方程组 第一节 线性方程组的求解 一、齐次方程组的求解 rref (A ) %将矩阵A 化为阶梯形的最简式 null (A ) %求满足AX =0的解空间的一组基,即齐次线性方程组的基 础解系 【例1】 求下列齐次线性方程组的一个基础解系,并写出通解: 我们可以通过两种方法来解: 解法1: >> A=[1 -1 1 -1;1 -1 -1 1;1 -1 -2 2]; >> rref(A) 执行后可得结果: ans= 1 -1 0 0 0 0 -1 1 0 0 0 0 由最简行阶梯型矩阵,得化简后的方程 ??? ??=+--=+--=-+-0 22004321 43214321x x x x x x x x x x x x 取x2,x4为自由未知量,扩充方程组为 即 提取自由未知量系数形成的列向量为基础解系,记 所以齐次方程组的通解为 解法2: clear A=[1 -1 1 -1;1 -1 -1 1;1 -1 -2 2]; B=null(A, 'r') % help null 看看加个‘r’是什么作用, 若去掉r ,是什么结果? 执行后可得结果: B= 1 0 1 0 0 1 0 1 ?? ?=-=-0 04321x x x x ?????? ?====4 4432221x x x x x x x x ??? ??? ??????+????????????=????? ???????1100001142 4321x x x x x x , 00111????? ? ??????=ε, 11002????? ???????=ε2 211εεk k x += Matlab线性方程组求解 1. Gauss消元法: function x=DelGauss(a,b) % Gauss消去法 [n,m]=size(a); nb=length(b); det=1; %存储行列式值 x=zeros(n,1); for k=1:n-1 for i=k+1:n if a(k,k)==0 return end m=a(i,k)/a(k,k); for j=k+1:n a(i,j)=a(i,j)-m*a(k,j); end b(i)=b(i)-m*b(k); end det=det*a(k,k); %计算行列式 end det=det*a(n,n); for k=n:-1:1 %回代求解 for j=k+1:n b(k)=b(k)-a(k,j)*x(j); end x(k)=b(k)/a(k,k); end Example: >> A=[1.0170 -0.0092 0.0095;-0.0092 0.9903 0.0136;0.0095 0.0136 0.9898]; >> b=[1 0 1]'; >> x=DelGauss(A,b) x = 0.9739 -0.0047 1.0010 2. 列主元Gauss消去法: function x=detGauss(a,b) % Gauss列主元消去法 [n,m]=size(a); nb=length(b); det=1; %存储行列式值 x=zeros(n,1); for k=1:n-1 amax=0; %选主元 for i=k:n if abs(a(i,k))>amax amax=abs(a(i,k));r=i; end end if amax<1e-10 return; end if r>k %交换两行 for j=k:n 求解线性方程组 solve,linsolve 例: A=[5 0 4 2;1 -1 2 1;4 1 2 0;1 1 1 1]; %矩阵的行之间用分号隔开,元素之间用逗号或空格 B=[3;1;1;0] X=zeros(4,1);%建立一个4元列向量 X=linsolve(A,B) diff(fun,var,n):对表达式fun中的变量var求n阶导数。 例如:F=sym('u(x,y)*v(x,y)'); %sym()用来定义一个符号表达式 diff(F); %matlab区分大小写 pretty(ans) %pretty():用习惯书写方式显示变量;ans是答案表达式 非线性方程求解 fsolve(fun,x0,options) 为待解方程或方程组的文件名;fun其中 x0位求解方程的初始向量或矩阵; option为设置命令参数 建立文件fun.m: function y=fun(x) y=[x(1)-0.5*sin(x(1))-0.3*cos(x(2)), ... x(2) - 0.5*cos(x(1))+0.3*sin(x(2))]; >>clear;x0=[0.1,0.1];fsolve(@fun,x0,optimset('fsolve')) 注: ...为续行符 m文件必须以function为文件头,调用符为@;文件名必须与定义的函数名相同;fsolve()主要求解复杂非线性方程和方程组,求解过程是一个逼近过程。Matlab求解线性方程组 AX=B或XA=B 在MATLAB中,求解线性方程组时,主要采用前面章节介绍的除法运算符“/”和“\”。如: X=A\B表示求矩阵方程AX=B的解; 的解。XA=B表示矩阵方程B/A=X. 对方程组X=A\B,要求A和B用相同的行数,X和B有相同的列数,它的行数等于矩阵A的列数,方程X=B/A同理。 如果矩阵A不是方阵,其维数是m×n,则有: m=n 恰定方程,求解精确解; m>n 超定方程,寻求最小二乘解; m 一个不错的Matlab的gui界面设计实例 %非常漂亮的日历, function CalendarTable; % calendar 日历 % Example: % CalendarTable; S=datestr(now); [y,m,d]=datevec(S); % d is day % m is month % y is year DD={'Sun','Mon','Tue','Wed','Thu','Fri','Sat'}; close all figure; for k=1:7; uicontrol(gcf,'style','text',... 'unit','normalized','position',[0.02+k*0.1,0.55,0.08,0.06],... 'BackgroundColor',0.6*[1,1,1],'ForegroundColor','b',... 'String',DD(k),'fontsize',16,'fontname','times new roman'); end h=1; ss='b'; qq=eomday(y,m); for k=1:qq; n=datenum(y,m,k); [da,w] = weekday(n); if k==d; ss='r'; end uicontrol(gcf,'style','push',... 'unit','normalized','position',[0.02+da*0.1,0.55-h*0.08,0.08,0.06],... 'BackgroundColor',0.6*[1,1,1],'ForegroundColor',ss,... 'String',num2str(k)); ss='b'; if da==7; h=h+1; 线性方程组求解 1.直接法 Gauss消元法: function x=DelGauss(a,b) % Gauss消去法 [n,m]=size(a); nb=length(b); det=1;%存储行列式值 x=zeros(n,1); for k=1:n-1 for i=k+1:n if a(k,k)==0 return end m=a(i,k)/a(k,k); for j=k+1:n a(i,j)=a(i,j)-m*a(k,j); end b(i)=b(i)-m*b(k); end det=det*a(k,k); end det=det*a(n,n); for k=n:-1:1 %回代 for j=k+1:n b(k)=b(k)-a(k,j)*x(j); end x(k)=b(k)/a(k,k); end Example: >> A=[1.0170 -0.0092 0.0095;-0.0092 0.9903 0.0136;0.0095 0.0136 0.9898]; >> b=[1 0 1]'; >> x=DelGauss(A,b) x = 0.9739 -0.0047 1.0010 列主元Gauss消去法: function x=detGauss(a,b) % Gauss列主元消去法 [n,m]=size(a); nb=length(b); det=1;%存储行列式值 x=zeros(n,1); for k=1:n-1 amax=0;% 选主元 for i=k:n if abs(a(i,k))>amax amax=abs(a(i,k));r=i; end end if amax<1e-10 return; end if r>k %交换两行 for j=k:n z=a(k,j);a(k,j)=a(r,j);a(r,j)=z; end z=b(k);b(k)=b(r);b(r)=z;det=-det; end 1、很简单,在界面上放三个单选按钮控制颜色(R、G、B),四个pushbutton (功能分别为绘制正弦、余弦、grid off、退出程序),可作为一个小小的入门。 程序为: %simpleGUI2.m-a simple use of Radiobutton and Pushbutton clear all; FigWin=figure('Position',[100,100,600,300],'Name','Uicontrol:Push Button & RadioButton',... 'NumberTitle','off'); AxesHandle=axes('Position',[0.4,0.15,0.5,0.8],'Box','on'); RadioNum=3; for i=1:RadioNum Radio(i)=0;%initial value=0 end Radio(1)=uicontrol(FigWin,...%父对象FigWin(一figure对象),备注③ 'Style','Radio',... 'Position',[50 255 100 30],... 'String','Draw in Red',... 'CallBack',... ['n=1;'... 'if get(Radio(1),''Value'')==1;'...%要使各radio button之间具有互斥性,要用if...else语句 'set(Radio([1:(n-1),(n+1):RadioNum]),''Value'',0);'... 'else;'...%要加上分号,一种规定?参备注① 'set(Radio(1),''Value'',1);'... 'end;'... 'ColorStr=''r'';'... 'set(FunHandle,''Color'',''red'')']);%曲线颜色根据radio button的选项实时变化,ColorStr是一个全局变量 Radio(2)=uicontrol(FigWin,... 'Style','Radio',... 'Position',[50 215 100 30],... 'String','Draw in Green',... 'CallBack',... ['n=2;'... 'if get(Radio(2),''Value'')==1;'... 'set(Radio([1:(n-1),(n+1):RadioNum]),''Value'',0);'... 'else;'... 'set(Radio(2),''Value'',1);'... 'end;'... 'ColorStr=''g'';'... 'set(FunHandle,''Color'',''green'')']); Radio(3)=uicontrol(FigWin,... 'Style','Radio',... 'Position',[50 175 100 30],... 1. roots 求解多项式的根 r=roots(c) 注意: c 为一维向量,者返回指定多项式的所有根( 包括复根),poly 和roots 是互为反运算,还有就是roots 只能求解多项式的解 还有下面几个函数poly2sym、sym2poly 、eig >>syms x >>y=x A5+3*x A3+3; >>c=sym2poly(y);%求解多项式系数 >>r=roots(c); >>poly(r) 2. residue 求留数 [r, p, k] = residue(b,a) >>b = [ 5 3 -2 7] >>a = [-4 0 8 3] >>[r, p, k] = residue(b,a) 3. solve 符号解方程(组)——使用最多的 g = solve(eq1,eq2,...,eqn,var1,var2,...,varn) 注意:eqn 和varn 可以是符号表达式,也可以是字符串表达式,但是使用符号表达式时不能有“=号”,假如说varn 没有给出,使用findsym 函数找出默认的求解变量。返回的g 是个结构体,以varn 为字段。由于符号求解的局限性,好多情况下可能得到空矩阵,此时只能用数值解法 解方程A=solve('a*xA2 + b*x + c') 解方程组B=solve('a*uA2 + vA2', 'u - v = 1', 'aA2 - 5*a + 6') 4. fzero 数值求零点 [x,fval,exitflag,output]=fzero(fun,x0,options,p1,p2...) fun 是目标函数,可以是句柄(@)、inline 函数或M 文件名 x0 是初值,可以是标量也可以是长度为2 的向量,前者给定一个位置,后者是给定一个范围options 是优化参数,通过optimset 设置,optimget 获取,一般使用默认的就可以了,具体参照帮助 p1,p2...为需要传递的其它参数 假如说(x/1446)A2+p/504.1+(t/330.9)*(log(1-x/1446)+(1-1 /5.3)*x/1446)=0 的根,其中p,t 是已知 MATLAB可视化设界面计(上) 一个可发布的应用程序通常都需要具备一个友好的图形界面(比如,我们开课时或给学生上课而使用课件时,我们一般就会用到可视化界面)。这样用户不需要知道应用程序究竟是怎样执行各种命令的, 而只需要了解可见界面组件的使用方法用户也不需要知道命令是如何执行, 只要通过与界面交互就可以使指定行为得以正确执行。MATLAB可视化界面的设计, 一般有两种方法, 一是直接通过编辑M脚本文件产生GUI(这个方法就是我们在前面学习过的如何编写、调用M文件), 二是通过MATLAB图形用户界面开发环境GUIDE(Graphical User Interface Development Environment)来形成相应文件。这里只讲述在GUIDE环境中利用控件实现可视化界面功能, 不探讨直接通过编辑脚本文件实现可视化界面的方法。 MATLAB软件GUIDE为用户提供了一个方便高效的集成环境, 所有GUI支持的用户控件都集成在这个环境中, 并提供界面外观、属性和行为响应方式的设置方法。GUIDE将用户保存设计好的GUI界面保存在一个FIG资源文件中, 同时自动生成包含GUI初始化和组件界面布局控制代码的M文件, 为实现回调函数提供了一个参考框架。 下面以一个具体实例来说明GUIDE的开发使用以下所讲解的关于各控件的使用, 我们以MATLAB7.0版本为调试环境, 如果版本的环境和版本略有不同,但基本思想和方法一致。为了方便大家学习,此处提供二个版本(即文字和视频,文字的即为下面的叙述,视频请点击此处。) 实例要完成的功能如下: 首先运行M文件后,出现一个主画面 用matlab解线性方程组 2008-04-12 17:00 一。高斯消去法 1.顺序高斯消去法 直接编写命令文件 a=[] d=[]' [n,n]=size(a); c=n+1 a(:,c)=d; for k=1:n-1 a(k+1:n, k:c)=a(k+1:n, k:c)-(a(k+1:n,k)/ a(k,k))*a(k, k:c); %消去 end x=[0 0 0 0]' %回带 x(n)=a(n,c)/a(n,n); for g=n-1:-1:1 x(g)=(a(g,c)-a(g,g+1:n)*x(g+1:n))/a(g,g) end 2.列主高斯消去法 *由于“[r,m]=max(abs(a(k:n,k)))”返回的行是“k:n,k”内的第几行,所以要通过修正来把m 改成真正的行的值。该程序只是演示程序,真正机器计算不需要算主元素所在列以下各行应为零的值。 直接编写命令文件 a=[] d=[] ' [n,n]=size(a); c=n+1 a(:,c)=d; %(增广) for k=1:n-1 [r,m]=max(abs(a(k:n,k))); %选主 m=m+k-1; %(修正操作行的值) if(a(m,k)~=0) if(m~=k) a([k m],:)=a([m k],:); %换行 end a(k+1:n, k:c)=a(k+1:n, k:c)-(a(k+1:n,k)/ a(k,k))*a(k, k:c); %消去end end x=[0 0 0 0]' %回带 x(n)=a(n,c)/a(n,n); for g=n-1:-1:1 x(g)=(a(g,c)-a(g,g+1:n)*x(g+1:n))/a(g,g) end Matlab 的可视化界面设计 一个可发布的应用程序通常都需要具备一个友好的图形界面,这样用户不需要知道应用程序究竟是怎样执行各种命令的, 而只需要了解可见界面组件的使用方法就可以通过与界面交互使指定行为得以正确执行。 MATLAB可视化界面的设计, 一般有两种方法, 一是直接通过编辑M脚本文件产生GUI, 二是通过MATLAB图形用户界面开发环境GUIDE(Graphical User Interface Development Environment)来形成相应文件。 本文利用MATLAB的GUI程序设计一个简单实用的图像处理程序。该程序应具备图像处理的常用功能,以满足用户的使用。现设计程序有以下基本功能: 1)图像的读取和保存。 2)设计图形用户界面,让用户能够对图像进行缩放、旋转、剪裁,显示和对比变换前后的图像。 3)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示所选像素点的数据值,以及图像轮廓图,并绘制直方图。 4)实现图像锐化。 5)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。 6)能对图像加入各种噪声,并通过几种滤波算法实现去噪并显示结果。 一、认识图形用户界面(GUI) 用MATLAB对图像进行处理是当前科技领域的一个重要的课题,它采用的是用一组有序的灰度或彩色数据元素构成图像,数组的每一个元素对应于图像的一个像素值。这样MATLAB就可以利用其强大的矩阵计算功能实现对图像的数字处理。本次设计的系统主要是利用MATLAB所提供的图形用户界面(GUI),实现一个可视的面向对象的操作界面。 1.1设计原则 由于要求不同,设计出来的界面也就千差万别。但是,自从人们开始设计图形界面以来,界面设计的评判标准却没有太大的变化。简单说来,一个好的界面 雅可比迭代 使用雅可比迭代法求解线性方程组的步骤 步骤1:输入系数矩阵A和方程组右端向量B; 步骤2:将矩阵A分解为下三角阵L对角阵D和上三角阵U 可分解为(D+L+U)X=B for o=1:n d(o,o)=a(o,o); u(o,o+1:n)=-a(o,o+1:n); end for p=2:n l(p,1:p-1)=-a(p,1:p-1); end; 步骤3:将上式化简为x=B0x+f,其中B0=-D-1(L+U),f=D-1B for i=1:n b0(i,i+1:n)=u(i,i+1:n)/a(i,i); f(i,:)=b(i,:)/a(i,i); end for p=2:n b0(p,1:p-1)=l(p,1:p-1)/a(p,p);; 步骤4:采用迭代公式在允许误差范围e=1e-7内求得解向量x x0=x; x=b0*x+f 雅可比迭代法matlab程序: function [x,k]=jacobi(a,b) n=length(a); e=1e-7; m=100; x0=zeros(n,1); x=x0; k=0; d=zeros(n); l=zeros(n); u=zeros(n); b0=zeros(n); f=zeros(n,1); x0=x+2*e; for o=1:n d(o,o)=a(o,o); u(o,o+1:n)=-a(o,o+1:n); end for p=2:n l(p,1:p-1)=-a(p,1:p-1); end for i=1:n b0(i,i+1:n)=u(i,i+1:n)/a(i,i); f(i,:)=b(i,:)/a(i,i); end for p=2:n b0(p,1:p-1)=l(p,1:p-1)/a(p,p); end while max(abs(x0-x))>e&k 2.1 方程组地逆矩阵解法及其MATLAB 程序 2.1.3 线性方程组有解地判定条件及其MATLAB 程序判定线性方程组A n m ?b X =是否有解地MATLAB 程序 function [RA,RB,n]=jiepb(A,b) B=[A b];n=length(b); RA=rank(A); RB=rank(B);zhica=RB-RA; if zhica>0, disp('请注意:因为RA~=RB ,所以此方程 组无解.') return end if RA==RB if RA==n disp('请注意:因为RA=RB=n ,所以此方 程组有唯一解.') else disp('请注意:因为RA=RB 基于MATLAB的单色光的干涉和衍射实验 GUI 设 计 报 告 目录 一、概述 (3) 二、前期准备 (3) 2.1干涉原理及程序 (3) 2.2衍射原理及程序 (4) 三、设计阶段 (5) 3.1进入模块设计 (5) 3.2实验界面设计 (5) 3.3计算模块设计 (8) 3.4绘图模块设计 (8) 3.5清除模块设计 (8) 3.6提示模块设计 (8) 四、软件使用方法 (9) 五、感想 (15) 六、参考文献 (15) 一、概述 MATLAB是目前世界上最流行的、应用最广泛的工程计算和仿真软件,它将计算、可视化和编程等功能同时集于一个易于开发的环境。MATLAB主要应用于数学计算、系统建模与仿真、数学分析与可视化、科学与工程绘图和用户界面设计等。 其中,用户界面设计中,GUI开发环境是MATLAB7.3为设计图形用户界面提供了一个集成与开发环境,且广泛用于实验模拟软件开发中。 此次我所设计的是一个较简洁、清晰的关于单色光干涉与衍射实验的软件。其能完成特定条件下干涉条纹间距和衍射半角的计算,以及干涉条纹和衍射条纹的绘制。 二、前期准备 2.1干涉原理及程序 干涉原理图 程序如下: ym=5*flag_lambda*flag_D/flag_a/1000000; xs=ym; n=101; ys=linspace(-ym,ym,n); for i=1:n r1=sqrt((ys(i)-(flag_a/1000)/2).^2+(flag_D)^2); r2=sqrt((ys(i)+(flag_a/1000)/2).^2+(flag_D)^2); phi=2*pi*(r2-r1)/(flag_lambda/1000000000); Matlab求解线性方程组、非线性方程组 姓名:罗宝晶学号:15 专业:材料学院高分子系 第一部分数值计算 Matlab求解线性方程组AX=B或XA=B 在MATLAB中,求解线性方程组时,主要采用除法运算符“/”和“\”。如:X=A\B表示求矩阵方程AX=B的解; X=B/A表示矩阵方程XA=B的解。 对方程组X=A\B,要求A和B用相同的行数,X和B有相同的列数,它的行数等于矩阵A的列数,方程X=B/A同理。 如果矩阵A不是方阵,其维数是m×n,则有: m=n 恰定方程,求解精确解; m>n 超定方程,寻求最小二乘解; mMatLab求解线性方程组
MATLAB代码 解线性方程组的迭代法
matlab中GUI设计
matlab解方程组
MATLAB解线性方程组的直接方法
利用MATLAB求线性方程组
线性方程组求解matlab实现
实验一用matlab求解线性方程组
Matlab线性方程组求解(Gauss消去法)
Matlab求解线性方程组非线性方程组
Matlab的gui界面设计实例练习
线性方程组求解Matlab程序(精.选)
Matlab界面设计的例子
matlab常用解方程及方程组函数
基于-matlab的可视化界面制作
用matlab解线性方程组
Matlab-的可视化界面设计
雅可比解线性方程组matlab
解线性方程组直接方法matlab用法
MATLAB界面设计报告-优秀篇
Matlab求解线性方程组、非线性方程组