第八章 MATLAB方程数值求解
一、选择题
1~5:CBDCA
二、填空题
1.直接法;迭代法;初始值。
2.fzero;fsolve。
3.ode
4.状态方程
三、应用题
1.
(1)
A=[2,3,5;3,7,4;1,-7,1];
b=[10,3,5]';
x1=A\b%矩阵除法
[L,U]=lu(A);
x2=U\(L\b)%矩阵分解法
x1 =
-1.8060
-0.5373
3.0448
x2 =
-1.8060
-0.5373
3.0448
(2)
A=[5,1,-1,0;1,3,0,-1;-1,-1,0,5;0,0,2,4];
b=[1,2,3,1]';
x1=A\b%矩阵除法
[L,U,P]=lu(A);
x2=U\(L\P*b)%矩阵分解法
x1 =
-0.2000
0.9857
-1.0143
0.7571
x2 =
-0.2000
0.9857
-1.0143
0.7571
从结果可以看出两种方法结果相同。
2.
f1=@(x) x-sin(x)./x;
x1=fzero(f1,0.5)%第(1)问
f2=@(x) sin(x).^2*exp(-0.1*x)-0.5*abs(x);
x2=fzero(f2,1.5)%第(2)问
结果:
x1 =
0.8767
x2 =
1.6738
3.
函数文件:
function fx=myfun(X)
x=X(1);
y=X(2);
fx(1)=x-0.6.*sin(x)-0.3.*cos(y);
fx(2)=x-0.6.*cos(x)+0.3.*sin(y);
end
主程序:
option=optimset('Display','off');
X=fsolve(@myfun,[0.5,0.5],option)
结果:
X =
0.2994 1.1504
4.
(1)
函数文件:
function yp=myfun(x,y)
yp=2*x/y+2*x;
end
主程序:
t0=0;
tf=10;
y0=0;
[t,y]=ode45(@myfun,[t0,tf],y0);
plot(t,y,'*')
结果:
(2)
函数文件:
function dx=myfun(t,x)
dx=zeros(2,1);
dx(1)=x(2);
dx(2)=(-4*t*x(2)-2*x(1))/t^2;
end
主程序:
tspan=[-5,0];
y0=[2,-3];
[t,y]=ode45(@myfun,tspan,y0);
plot(t,y,'*')
结果:
5.
函数文件:
function dy = Lorenz(~,y)
dy=zeros(3,1);
dy(1)=10*(-y(1)+y(2));
dy(2)=28*y(1)-y(2)-y(1)*y(3);
dy(3)=y(1)*y(2)-8*y(3)/3;
end
主程序:
[t,f]=ode45('Lorenz',[0,30],[0,0,10^(-10)]);
subplot(2,1,1)
plot(t,f)
title('时间响应曲线')
subplot(2,1,2)
plot3(f(:,1),f(:,2),f(:,3))
title('相平面曲线')
(ps:当前初值下画出的相平面曲线不明显,修改初值后的相平面曲线如下图:)
代码:
[t,f]=ode45('Lorenz',[0,30],[2,4,10]);
plot3(f(:,1),f(:,2),f(:,3))
view([20,30])
title('相平面曲线')
若想要讲解可下方留言,看到就会回复!!!