3.1 利用matalb开展线性代数问题
A=[1 2 3 4;2 2 1 1;2 4 6 8;4 4 2 2];
rank(A)
B=[1;3;2;6];
C=[A B];
rank(C)
Z=null(A)
x0=sym(pinv(A))*B
syms a1 a2;
x=Z*[a1;a2]+x0
3.2 利用matlab求解微积分问题
diff()函数来求解导数问题的解析解。
syms t x;
f=t*cos(x)*exp(t*x);
dfdx=diff(f,x)
dfdt2=diff(f,t,2)
syms x;
f=x^2*exp(x);
r1=taylor(f,x,0,'order',6)
r2=taylor(f,x,1,'order',6)
symsum()函数,求解级数求和问题的解析解,symsum(f,k,a,b),求通式f在指定变量k取遍[a,b]时的和。
积分问题的解析解是通过int()函数来实现的。
matlab中提供了diff()函数和gradient()函数来求解差分问题。
quad函数和integral函数求解数值积分:ss=quad(fun,a,b,tol)
function dy = Example3_14_Fun(t,y)
dy = zeros(3,1);
dy(1) = 2 .*y(2) .* y(3);
dy(2) = -y(1)./ y(3);
dy(3) = 0.4 .* y(1)^2 .* y(2);
options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);
[T,Y] = ode45(@Example3_14_Fun,[0 12],[1 -1.5 0.5],options);
plot(T,Y(:,1),'-',T,Y(:,2),'-.',T,Y(:,3),'.'); legend('y1','y2','y3');
3.3用matlab求解优化问题
function y = Example3_15_Fun(x)
y = zeros(2,1);
y(1) = exp(exp(x(1)+2*x(2)))-x(1)*x(2)^2;
y(2) = x(1)*cos(x(2))+x(2)*sin(x(1))-1;
x = fsolve(@Example3_15_Fun,[0 0]);
fminbnd()指令函数用于查找单变量函数在固定间隔内的最小值。
fun=@(x)exp(sin(x))*exp(cos(x)+1)*(cos(x)+abs(x));
[xVal,fval,exitflag,output]=fminbnd(fun,-10,10);
fminsearch()指令函数用于求解无约束条件下,非线性目标函数的局域最小值,并且允许函数为不连续函数。
fun=@(x)15*(2*x(2)-x(1)^2)^2+(1-2*x(1)+x(2))^2;
[xVal,fval,exitflag,output]=fminsearch(fun,[0,0])
3.4利用matlab进行插值、拟合和统计