预览加载中,请您耐心等待几秒...
1/7
2/7
3/7
4/7
5/7
6/7
7/7

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

列主元法functionlianzhuyuan(A,b)n=input('请输入n:')%选择阶数A=zeros(n,n);%系数矩阵Ab=zeros(n,1);%矩阵bX=zeros(n,1);%解Xfori=1:nforj=1:nA(i,j)=(1/(i+j-1));%生成hilbert矩阵Aendb(i,1)=sum(A(i,:));%生成矩阵bendfori=1:n-1j=i;top=max(abs(A(i:n,j)));%列主元k=j;whileabs(A(k,j))~=top%列主元所在行k=k+1;endforz=1:n%交换主元所在行a1=A(i,z);A(i,z)=A(k,z);A(k,z)=a1;enda2=b(i,1);b(i,1)=b(k,1);b(k,1)=a2;fors=i+1:n%消去算法开始m=A(s,j)/A(i,j);%化简为上三角矩阵A(s,j)=0;forp=i+1:nA(s,p)=A(s,p)-m*A(i,p);endb(s,1)=b(s,1)-m*b(i,1);endendX(n,1)=b(n,1)/A(n,n);%回代开始fori=n-1:-1:1s=0;%初始化sforj=i+1:ns=s+A(i,j)*X(j,1);endX(i,1)=(b(i,1)-s)/A(i,i);endX欧拉法clcclear%欧拉法p=10;%贝塔的取值T=10;%t取值的上限y1=1;%y1的初值r1=1;%y2的初值%输入步长h的值h=input('欧拉法pleaseinputnumber(h=10.50.250.1250.0625):h=');ifh>1orh<0breakendS1=0:T/h;S2=0:T/h;S3=0:T/h;S4=0:T/h;i=1;%迭代过程fort=0:h:TY=(exp(-t));R=(1/(p-1))*exp(-t)+((p-2)/(p-1))*exp(-p*t);y=y1+h*(-y1);y1=y;r=r1+h*(y1-p*r1);r1=r;S1(i)=Y;S2(i)=R;S3(i)=y;S4(i)=r;i=i+1;endt=[0:h:T];%红线为解析解,'x'为数值解plot(t,S1,'r',t,S3,'x')改进欧拉法clcclearp=10;%贝塔的取值T=10;%t取值的上限y1=1;%y1的初值r1=1;%y2的初值%输入步长h的值h=input('改进欧拉法pleaseinputnumber(h=10.50.250.1250.0625):h=');ifh>1orh<0breakendS1=0:T/h;S2=0:T/h;S3=0:T/h;S4=0:T/h;i=1;%迭代过程fort=0:h:TY=(exp(-t));R=(1/(p-1))*exp(-t)+((p-2)/(p-1))*exp(-p*t);k1=-y1;l1=y1-p*r1;k2=-(y1+h*k1);l2=y1+h*k1-p*(r1+h*l1);y=y1+h*(k1+k2)/2;r=r1+h*(k1+k2)/2;r1=r;y1=y;S1(i)=Y;S2(i)=R;S3(i)=y;S4(i)=r;i=i+1;endt=[0:h:T];%红线为解析解,'x'为数值解plot(t,S1,'r',t,S3,'x')高斯-赛德尔functiongaosisaideern=input('n=');%阶数tol=input('tol=');%迭代精度A=zeros(n,n);b=zeros(n,1);%生成b向量fori=1:n%给Hilbert矩阵和b向量赋值forj=1:nA(i,j)=(1/(i+j-1));endb(i,1)=sum(A(i,:));endy=zeros(n,1);%迭代解x1=zeros(n,1);%准确解fori=1:ny(i,1)=0;%迭代解赋初值x1(i,1)=1;%生成准确解endk=0;whilenorm(y-x1)>=tol%精度控制(采用自动步数控制)k=k+1;fori=1:n%迭代开始a1=0;a2=0;forj=1:i-1a1=a1+A(i,j)*y(j,1);endforj=i+1:na2=a2+A(i,j)*y(j,1);endy(i,1)=(b(i,1)-a1-a2)/A(i,i);endenddisp('迭代步数k')kdisp(y)%显示yend最速下降法functiongaosisaideern=input('阶数n=');%阶数tol=input('迭代精度tol=');%迭代精度eps=input('最速下降法eps=');A=zeros(n,n);b=zeros(n,1);%生成b向量fori=1:n%给Hilbert矩阵和b向量赋