练****题:
1、用一个简单命令和M函数形式求解线性系统
3x1+ x2 - x3 =
x1+2x2+4x3 =
-x1+4x2+5x3 = -
解:
%
function y=AB(A,b)
B=[A b];
[m,n]=size(A);
RA=rank(A);
RB=rank(B);
if RA==RB&RA==n
X=A\b
elseif RA==RB&RA<n
X=A\b
C=null(A,'r')
else X='无解'
end
在命令窗口输入:
>> A=[3,1,-1;1,2,4;-1,4,5];
>> b=[;;-];
>> y=AB(A,b);
执行结果为:
X =
-
2、用简短命令计算并绘制在0£x£6范围内的sin(2x)、sinx2、sin2x,同时上述过程用M文件完成。
解:
(一)用简短命令
在命令窗口输入:
>>x=0::6;
>>y=sin(2*x);
>>y2=sin(x)*2;
>>y3=sin(2)*x;
>>plot(x,y,'r-',x,y2,'b-',x,y3,'g-');
>>legend('sin(2x)','sinx2','sin2x');
执行结果为:
(二)用M文件
%
function y=myfun(x)
y(:,1)=sin(2*x)
y(:,2)=sin(x)*2
y(:,3)=sin(2)*x
命令窗口输入:
>> fplot('myfun',[0 6])
执行结果为:
3、已知系统微分方程及初始值
取步长,试分别用欧拉法和RK4法求时的y值,用M文件及M函数完成。
解:
1)欧拉法
%
function [x,y]=euler(fun,x0,xf,y0,h)
n=fix((xf-x0)/h);
y(1)=y0;
x(1)=x0;
for i=1:(n-1)
x(i+1)=x0+i*h;
y(i+1)=y(i)+h*feval(fun,x(i),y(i));
end
%
function f=ef(t,y)
f=t+y;
在命令窗口输入:
[t,y]=euler('ef',0,1,1,)
执行结果为:
t =
Columns 1 through 9
0
Column 10
y =
Columns 1 through 9
Column 10
(2)RK4法
%
function [t,y]=R_K(fun,x0,
matlab练习题 来自淘豆网www.taodocs.com转载请标明出处.