Вопрос про Matlab

grina174

Написал на одном компьютере M-файл, работает. Перенес на другую машину - выдает только ans=1 и все, хотя должен был нарисовать график. При создании пустого файла и переноса туда текста программы такая же фигня. Что делать?

AlexV769

убивать себя или показывать код.

grina174

G=0.3;
e=0.2;
a1=10;
a3=10;
Fi=-pi/2;
z=0;
zo=10;
dz=0.01;
k=0;

F1(zo/dz)=0;
F3(zo/dz)=0;
F(zo/dz)=0;
m(zo/dz)=0;
sigma1_a(zo/dz)=0;
sigma3_a(zo/dz)=0;
sigma1_o(zo/dz)=0;
sigma3_o(zo/dz)=0;
n1_o(zo/dz)=0;
n1_a(zo/dz)=0;
n1_2_a(zo/dz)=0;
n3_o(zo/dz)=0;
n3_2_a(zo/dz)=0;
n3_a(zo/dz)=0;

while z<=zo
Q11=cosh(G*z);
Q12=-i*sinh(G*z)/sqrt(1-e^2);
Q13=-i*e*sinh(G*z)/sqrt(1-e^2);
Q21=i*sinh(G*z)/sqrt(1-e^2);
Q22=1+(cosh(G*z)-1)/(1-e^2);
Q23=e*(cosh(G*z)-1)/(1-e^2);
Q31=-i*e*sinh(G*z)/sqrt(1-e^2);
Q32=-e*(cosh(G*z)-1)/(1-e^2);
Q33=1-e^2*(cosh(G*z)-1)/(1-e^2);

n1_o(k+1)=abs(Q12)^2+abs(Q13)^2*a3^2;
n1_a(k+1)=abs(Q12)^2+Q11^2*a1^2+abs(Q13)^2*a3^2+2*Q11*abs(Q13)*a1*a3*sin(Fi);
n1_2_a(k+1)=2*Q12^4+( Q11^4*a1^4+4*Q11^2*abs(Q12)^2*a1^2+4*abs(Q13*Q12)^2*a3^2+4*Q11^2*abs(Q13)^2*a1^2*a3^2+abs(Q13)^4*a3^4 )+4*Q11*abs(Q13)*a1*a3*( Q11^2*a1^2+2*abs(Q12)^2+abs(Q13)^2*a3^2 )*sin(Fi)-2*Q11^2*abs(Q13)^2*a1^2*a3^2*cos(2*Fi);
n2_o(k+1)=abs(Q21)^2+Q23^2+Q23^2*a3^2;
n2_a(k+1)=n2_o(k+1)+abs(Q21)^2*a1^2+2*Q23*abs(Q21)^2*a1*a3*sin(Fi);

n3_o(k+1)=Q32^2+Q33^2*a3^2;
n3_2_a(k+1)=2*Q32^4+( abs(Q31)^4*a1^4+4*abs(Q31)^2*Q32^2*a1^2+4*Q33^2*Q32^2*a3^2+4*Q33^2*abs(Q31)^2*a1^2*a3^2+Q33^4*a3^4 )-4*abs(Q31)*Q33*a1*a3*( abs(Q31)^2*a1^2+2*Q32^2+Q33^2*a3^2 )*sin(Fi)-2*abs(Q31)^2*Q33^2*a1^2*a3^2*cos(2*Fi);
n3_a(k+1)=Q32^2+abs(Q31)^2*a1^2+Q33^2*a3^2-2*Q33*abs(Q31)*a1*a3*sin(Fi);

sigma1_a(k+1)=n1_2_a(k+1)-n1_a(k+1)^2;
sigma3_a(k+1)=n3_2_a(k+1)-n3_a(k+1)^2;
sigma1_o(k+1)=Q12^4+2*abs(Q13)^2*abs(Q12)^2*a3^2;
sigma3_o(k+1)=Q32^4+2*Q33^2*Q32^2*a3^2;

F1(k+1)=(sigma1_a(k+1)-sigma1_o(k+1/(n1_a(k+1)-n1_o(k+1;
F3(k+1)=(sigma3_a(k+1)-sigma3_o(k+1/(n3_a(k+1)-n3_o(k+1;
m(k+1)=k*dz;
k=k+1;
z=z+dz;
end
hold on;
subplot(1,3,1);
plot(m,n1_a); title('< n1 >'); hold on;
subplot(1,3,2);
plot(m,n2_a); title('< n2 >'); hold on;
subplot(1,3,3);
plot(m,n3_a); title('< n3 >'); hold on;

AlexV769

end
останавливает интерпретатор.

grina174

На моей то машине работает.

AlexV769

а не, это к while

AlexV769

у меня тоже работает.

grina174

Вот и я не понимаю в чем дело.

Busenka76

работает ли просто plot? (т.е. появляется ли окошко, если в командной строке набрать plot)
хотя ans = 1 программа выдавать тоже не должна. Не определена ли переменная/другая функция с тем же именем, что и твой m-файл?

grina174

да, работает

Busenka76

еще можно попробовать поставить breakpoint на строчку, где построение графиков начинается, и посмотреть что в workspace происходит - заведены ли те переменные, которые объявлены в программе, и корректно ли их значение.
Версии матлабов одинаковые?

grina174

одинаковые. Это не играет роли потому что код не использует специфичных функций.
Оставить комментарий
Имя или ник:
Комментарий: