2014-01-23 133 views
-2

我有同樣的問題,因爲這個討論之前,指數超過矩陣尺寸

[這裏] Can someone explain how to graph this sum in MATLAB using contourf?

然而,現在我還沒有處理contourf,因爲我有另外兩個問題,我必須回答。

我被告知取N = 50,PHI1 = 300,PHI2 = 400,0 < = X < = 1,且0 < = Y < = 1,並讓x和y是100矢量同樣間隔點,包括終點。

和繼承人兩個問題,

一)在一個單一的數字(圖1),情節披(X,Y = 1),披(X,Y = 0.8),披(X,Y = 0.5)和phi(x,y = 0.1)。確保軸標有標籤,曲線顏色鮮明。 (x,y = 0),phi(x = 0,y)和phi(x = 1,2,..., y)作爲子圖(即4個分開的子圖)。確保一切都被貼上標籤,希臘字母phi在yaxis標籤中顯示。

我已經回答了問題a),但是當我嘗試回答問題b時,我得到了錯誤。幫幫我?

clear all 
close all 
clc 
clear 

N=50; 
phi1=300; 
phi2=400; 
%Phix10 
%Phix08 
%Phix05 
%Phix01 
x=linspace(0,1,100); 
y=linspace(0,1,100); 

y=1; 
for k=1:100 
    sum=0; 
    tot=0; 
    for n=1:N 
     sum= sum + (2/n*pi)*((phi2-phi1)*((cos(n*pi)-1))/(exp(n*pi)-exp(-n*pi)))*((1-exp(-n*pi))*exp(n*pi*y)+(exp(n*pi)-1)*exp(-n*pi*y))*sin(n*pi*x(k)); 
    end 
    Phi10(k)=phi1 - sum; 
end 

y=.8; 
for k=1:100 
    sum=0; 
    tot=0; 
    for n=1:N 
     sum= sum + (2/n*pi)*((phi2-phi1)*((cos(n*pi)-1))/(exp(n*pi)-exp(-n*pi)))*((1-exp(-n*pi))*exp(n*pi*y)+(exp(n*pi)-1)*exp(-n*pi*y))*sin(n*pi*x(k)); 
    end 
    Phi08(k)=phi1 - sum; 
end 

y=.5; 
for k=1:100 
    sum=0; 
    tot=0; 
    for n=1:N 
     sum=sum + (2/n*pi)*((phi2-phi1)*((cos(n*pi)-1))/(exp(n*pi)-exp(-n*pi)))*((1-exp(-n*pi))*exp(n*pi*y)+(exp(n*pi)-1)*exp(-n*pi*y))*sin(n*pi*x(k)); 
    end 
    Phi05(k)=phi1 - sum; 
end 

y=.1; 
for k=1:100 
    sum=0; 
    tot=0; 
    for n=1:N 
     sum=sum + (2/n*pi)*((phi2-phi1)*((cos(n*pi)-1))/(exp(n*pi)-exp(-n*pi)))*((1-exp(-n*pi))*exp(n*pi*y)+(exp(n*pi)-1)*exp(-n*pi*y))*sin(n*pi*x(k)); 
    end 
    Phi01(k)=phi1 - sum; 
end 


figure(1); 
plot(x,Phi10,'r'); 
hold on; 
plot(x,Phi08,'g'); 
hold on; 
plot(x,Phi05,'y'); 
hold on; 
plot(x,Phi01); 
hold on; 
title('plotting 1'); 
xlabel('x'); 
ylabel('y'); 


%my answer for question b 
y=1; 
for k=1:100 
    sum=0; 
    tot=0; 
    for n=1:N 
     sum= sum + (2/n*pi)*((phi2-phi1)*((cos(n*pi)-1))/(exp(n*pi)-exp(-n*pi)))*((1-exp(-n*pi))*exp(n*pi*y)+(exp(n*pi)-1)*exp(-n*pi*y))*sin(n*pi*x(k)); 
    end 
    PhiB1(k)=phi1 - sum; 
end 

y=0; 
for k=1:100 
    sum=0; 
    tot=0; 
    for n=1:N 
     sum = sum + (2/n*pi)*((phi2-phi1)*((cos(n*pi)-1))/(exp(n*pi)-exp(-n*pi)))*((1-exp(-n*pi))*exp(n*pi*y)+(exp(n*pi)-1)*exp(-n*pi*y))*sin(n*pi*x(k)); 
    end 
    PhiB2(k)=phi1 - sum; 
end 

x=0; 
for k=1:100 
    sum=0; 
    for n=1:N 

      % here's where i got the error 
      sum = sum + (2/n*pi)*((phi2-phi1)*((cos(n*pi)-1))/(exp(n*pi)-exp(-n*pi)))*((1-exp(-n*pi))*exp(n*pi*y(k))+(exp(n*pi)-1)*exp(-n*pi*y(k)))*sin(n*pi*x); 
    end 
    PhiB3(k)=phi1 - sum; 
end 

% x=1; 
% for k=1:100 
%  sum=0; 
%  for n=1:N 
%   sum= sum + (2/n*pi)*((phi2-phi1)*((cos(n*pi)-1))/(exp(n*pi)-exp(-n*pi)))*((1-exp(-n*pi))*exp(n*pi*y)+(exp(n*pi)-1)*exp(-n*pi*y))*sin(n*pi*x); 
%  end 
%  PhiB4(k)=phi1 - sum; 
% end 

figure(2); 
plot(x,PhiB1,'r'); 
hold on; 
plot(x,PhiB2,'g'); 
hold on; 
plot(x,PhiB3,'y'); 
hold on; 
plot(x,PhiB4); 
hold on; 
+0

你用'linspace'定義'y',但是你設置'y = 1'。那裏發生了什麼?另外,不要使用'sum'作爲變量。 – chappjc

+0

我只是試圖以同樣的方式回答問題,因爲它的確行得通,但是我在修正x和y時可能會有所改變。 – user3229895

+0

咦? 「當我修正x和y可以改變時,我有一個問題」你能解釋一下這個嗎? – chappjc

回答

0

y(k)在誤差線,但y=0,所以它不是一個載體。用y替換2次出現y(k),看看會發生什麼。

+0

我以前已經試過了,而且它變得如此之大,而且,我認爲這會讓我的循環無用,不是嗎?如果你看看我對答案的答案,我已經得到了一切正確的答案,然後我只是做出必要的調整來回答b部分,如果你能看到我對a和b有非常相似的答案。任何想法? – user3229895

+0

兩條評論。 1-你在其他地方沒有'y(k)',只有在給你錯誤的行中。 2-是的,我認爲你的循環是無用的,我認爲這可以在沒有所有這些循環的情況下完成。 – David

+0

雖然我認爲它不回答這個問題,因爲我認爲部分a和b在某些方面是相似的,並且我得到了部分a的正確答案,但不是部分b,這是問題在x = 1和x = 0部分。在部分a我使用x(k),所以我想這部分我把它切換到y(k) – user3229895