Индекс превышает размеры матрицы
У меня та же проблема, что и раньше,
[здесь] Может кто-нибудь объяснить, как отобразить эту сумму в 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
и посмотрим, что получится.