⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sor2.m

📁 计算方法中的解线性方程组的迭代法
💻 M
字号:
%clear;
close all;
h=10;k=30;md=7300;cp=800;t0=1000;tw=0;tsp=600;le=0.1;%tw为环境温度
n_space = input('n_space?   ');
n_space=n_space+1;
n_time = input('n_time?   ');
alfa=tsp/n_time/(le*le/n_space/n_space)*k/md/cp;
alfa1=1+2*alfa;

beta=(le/n_space)*h/k;

x(1,1)=tw*beta;
x(n_space,1)=tw*beta;
x(2:(n_space-1),1)=t0;
b=x;
%矩阵计算:
D(n_space,n_space)=1+beta;
D(1,1)=1+beta;
L(n_space,n_space)=0;
L(n_space,n_space-1)=1;
U(n_space,n_space)=0;
U(1,2)=1;

for ii=2:(n_space-1)
    D(ii,ii)=alfa1;
    L(ii,ii-1)=alfa;
    U(ii,ii+1)=alfa;   
end
J=pinv(D)*(L+U);pj=vrho(J);

w=2/(1+sqrt(1-(pj*pj)));
clear J;
MM=pinv(D-w*L);
loopmatrix=MM*((1-w)*D+w*U);     %%%%%%%%%%%迭代矩阵
MM=w*MM;
    
    for tt=1:n_time%对时分的循环
          zzz=1;stop=1;
         while stop>0.01%某时间片一次SOR循环 循环控制条件 有待改进~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              
              x1=loopmatrix*x+MM*b;
              stop=norm(x-x1,2);
              x=x1; 
              disp(['时间步= ' , int2str(tt), ';第几次SOR: ' ,int2str(zzz)]); stop
              zzz=zzz+1;
         end
         count(tt)=zzz;
          if tt<n_time
              b=x;
              b(1,1)=0;
              b(n_space,1)=0;
              
          end
    
    end
    sor_average_times=mean(count)
    w
    pj
    for i=1:n_space length_dis(i)=(le/(n_space-1))*(i-1);end
    x2=x;length_dis2=length_dis;
    figure;
plot(length_dis,x,'k');
title (['\fontsize{12}\bf \rm','温度场曲线图']);
xlabel ('棒子空间,以长度计量'); ylabel ('温度');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -