Индекс превышает размеры матрицы

У меня та же проблема, что и раньше,

[здесь] Может кто-нибудь объяснить, как отобразить эту сумму в MATLAB, используя contourf?

однако, пока я не имею дело с контуром, потому что у меня есть два других вопроса, на которые я должен ответить.

Мне говорят, что нужно взять N = 50, phi1 = 300, phi2 = 400, 0<=x<=1 и 0<=y<=1, и позволить x и y быть векторами из 100 одинаково расположенных точек, включая конечные точки.

и вот два вопроса,

а) На одном рисунке (рис. 1), нарисуйте фи (х, у = 1), фи (х, у = 0,8), фи (х, у = 0,5) и фи (х, у = 0,1). Убедитесь, что оси помечены, а кривые имеют разные цвета.

б) На отдельном рисунке (рис. 2) нарисуйте phi (x, y = 1), phi (x, y = 0), phi (x = 0, y) и phi (x = 1, y) в качестве вспомогательных участков (т.е. 4 отдельных подпункта). Удостоверьтесь, что все помечено, и греческая буква фи появляется, как на ярлыке яксис.

Я уже ответил на вопрос а), однако, когда я пытаюсь ответить на вопрос б, я получил ошибку. Помогите?

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;

1 ответ

У тебя есть y(k) в строке, где ошибка, но y=0и так это не вектор. Заменить 2 вхождения y(k) с y и посмотрим, что получится.

Другие вопросы по тегам