实验2 利用matlab解(非)线性、微分方程(组)
一、实验目的
1、线性方程组的解法:直接求解法和迭代法; 2、非线性方程以及非线性方程组的求解; 3、微分方程的数值解。
二、实验内容
1、对于下列线性方程组:
??29?34??22(1) 请用直接法求解;
>> x=A\\B x =
2.1295 0.9712 -0.3885
(2) 请用LU分解方法求解; >> A=[2,9,0;3,4,11;3,2,6]; >> B=[13;6;6]; [L,U]=lu(A); >> x=U\\(L\\B) x =
2.1295 0.9712 -0.3885
(3) 请用QR分解方法求解; >> A=[2,9,0;3,4,11;3,2,6]; >> B=[13;6;6]; >> [Q,R]=qr(A); >> x=R\\(Q\\B) x =
2.1295 0.9712 -0.3885
0?1??13?x??6?6????
???6??1(4) 请用Cholesky分解方法求解。 R=chol(A)
??? Error using ==> chol
Matrix must be positive definite
2、设迭代精度为10-6,分别用Jacobi迭代法、Gauss-Serdel迭代法求解下列线性方程组,并比较此两种迭代法的收敛速度。
?10x1?x2?9???x1?10x2?2x3?7 ??2x?10x?523?
A=[10,-1,0;-1,10,-2;0,-2,10];
B=[9;7;5];
[X,n]=jacobi(A,B,[0,0,0]',1.0e-6) X = 0.9937 0.9368 0.6874 n =11
[x,n]=gauseidel(A,B,[0,0,0]',1.0e-6) x = 0.9937 0.9368 0.6874 n =7
3、求解非线性方程x?xe?x?10?0在2附近的根。
function fx=funx(x) fx=x+x*exp(-x)-10 Z=f Z =
9.9995zero('funx',2)
4、求下列非线性方程组在(0.5,0.5) 附近的数值解。
x?cos(x)?ye?2?0?? y??sin(y)?xe?2?0
function q=myfun(x)
q(1)=cos(x(1))+x(2)*exp(x(1))-2; q(2)=sin(x(2))+x(1)*exp(x(2))-2;
x=fsolve('myfun',[0.5,0.5]',optimset('Display','off'))
x =
0.8087 0.5833
?1?y2y3?y??2??y1y3,其初始5、通过画图方法描述某非刚性体的运动方程的微分方程?y?y??1?0.51y1y2?y1(0)?0?条件为?y2(0)?1 。
?y(0)?1?3function dy=rigid(t,y) dy=zeros(3,1); dy(1)=y(2)*y(3); dy(2)=-y(1)*y(3);
dy(3)=-0.51*y(1)*y(2);
[t,y]=ode45('rigid',[0;12],[0,1,1])
plot(t,y(:,1),'-',t,y(:,2),'*',t,y(:,3),'+')
10.80.60.40.20-0.2-0.4-0.6-0.8-1024681012
6、求二阶微分方程y???ty??ety?3sin(2t), y(0)?1,y?(0)??1在0?t?2时的数值图解。
function dx=ff(t,x)
dx=[x(2); -t*x(2)+x(1)*exp(t)+3*sin(2*t)];
x0=[0.8;0];
[t,x]=ode45('ff',[0,2],x0);
>> y=x(:,1); dy=x(:,2); plot(t,y,t,dy)
121086420-200.20.40.60.811.21.41.61.82
相关推荐: