Taking a long time to run, what is the problem?
    5 ビュー (過去 30 日間)
  
       古いコメントを表示
    
Hi , I really nead help with this code. I dont know what makes it so long. I want to solve a PDE by extending it based on orthogonal basis and at last I have a matrix which I need to calculate its exponential. I attached the data used in the code. 
I really appreciate any help
clc
clear
close all
hair=20;
Ta=300;
G=3.8364e14+2.9841e14;
alpharev=3.014e2;
alpha=alpharev^-1;
K=250;
g1=0;
g2=3.8364e14;
g3=0;
g4=2.9841e14;
%%
load SmoothPhianddPhidy.mat ;
V=11;
nMax=7;
N2=2^nMax;
v=11/11;
xScEx=0:v/N2:V;
figure
plot(xSc,Phi)
title('\phi')
figure
dPhidy=dPhismudyfinal;
plot(xSc,dPhidy)
title('d\phi/dy')
figure
d2phidy2=d2phidyfinal';
plot(xSc,d2phidy2)
title('d^2\phi/dy^2')
%%
yend=1144; 
yEnd=147841;
yF=149249;% (11+1155)*N2+1
xScEXT=-11:v/N2:1155;
%%
tic
% number of scaling functions in -11:1155
mPrimMax=yF-numel(Phi);
Imax=(mPrimMax-1)/N2+1;
iMax=1155;
d=zeros(1,iMax);
m=zeros(1,iMax);
mPrim=m;
A=zeros(iMax,iMax);
mMat=A;
d2phid2ym=zeros(iMax,yF);
Phim=d2phid2ym;
dphidy=Phim;
dfidyLM=zeros(1,iMax);
fiLM=dfidyLM;
y0=1409;
dfidy0M=dfidyLM;
fi0M=dfidyLM;
tic
for i=1:iMax
    m(i)=1+(i-1)*N2;
    d2phid2ym(i,:)=[zeros(1,m(i)),d2phidy2,zeros(1,(yF-m(i)-numel(d2phidy2)))];
    Phim(i,:)=[zeros(1,m(i)),Phi,zeros(1,yF-m(i)-numel(Phi))];
    dphidy(i,:)=[zeros(1,m(i)),dPhidy,zeros(1,(yF-m(i)-numel(dPhidy)))];
    dfidyLM(i)=dphidy(yEnd-m(i));
    fiLM(i)=Phim(yEnd-m(i));
    if y0-m(i)>0 && y0-m(i)<11
    dfidy0M(i)=dphidy(y0-m(i));
    fi0M(i)=Phim(y0-m(i));
    else
        dfidy0M(i)=0;
        fi0M(i)=0;
    end
end
toc
tic
for k=1:iMax 
    for l=1:iMax
             int1=Phim(l,:).*Phim(k,:);
             int2=Phim(l,:).*d2phid2ym(k,:);
             yy=linspace(1409,yEnd,149249); 
             y1=linspace(1409,41985,yF);
             y2=linspace(41985,76929,yF);
             y3=linspace(76929,88577,yF);
             y4=linspace(88577,yEnd,yF);
            %
            A(k,l)=trapz(yy,int1);
            mMat(k,l)=fiLM(l)*(alpha*hair/K*fiLM(k)-alpha*dfidyLM(k))+fi0M(l)...
                *(alpha*hair/K*fi0M(k)+alpha*dfidy0M(k))...
                +alpha*trapz(yy,int2);
            d(k)=+alpha*hair/K*Ta*(-fiLM(k)-fi0M(k))+alpha*( g1/K*trapz(y1,Phim(k,:))+...
                g2/K*trapz(y2,Phim(k,:))+g3/K*trapz(y3,...
                Phim(k,:))+g4/K*trapz(y4,Phim(k,:)));
    end
end
toc
0 件のコメント
回答 (0 件)
参考
カテゴリ
				Help Center および File Exchange で PDE Solvers についてさらに検索
			
	製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
