clearclcr=0.1;s=0.01;T=0:0.5:20;w=0;f0=(-tanh(r)^0./cosh(r))

问题描述:

clear
clc
r=0.1;
s=0.01;
T=0:0.5:20;
w=0;
f0=(-tanh(r)^0./cosh(r));
f1=(-tanh(r)^1./cosh(r));
B0=(f0./4)*s*sqrt((0+1)*(0+2)).*(1-cos(2.*T/s));
B1=(f1./4)*s*sqrt((0+2)*(0+3)).*(1-cos(2.*T/s));
C0=(f0./2)*s*(0+1)*sin(2.*T/s);
C1=(f1./2)*s*(0+2)*sin(2.*T/s);
w=0.5*(0*(f0^2)+(0+1).*(C0^2)+(2*0+2).*(B0^2)+(0+1).*f0.*f1+C0.*C1.*(0+2)+2*sqrt((0+1)*(0+3)).*B0.*B1);
for n=1:1000;
f(n)=((-tanh(r))^n)./cosh(r);
f(n+1)=((-tanh(r))^(n+1))./cosh(r);
B(n)=(f(n)./4)*s*sqrt((n+1)*(n+2)).*(1-cos(2.*T/s));
B(n+1)=(f(n+1)./4)*s*sqrt((n+2)*(n+3)).*(1-cos(2.*T/s));
C(n)=(f(n)./2)*s*(n+1)*sin(2.*T/s);
C(n+1)=(f(n+1)./2)*s*(n+2)*sin(2.*T/s);
W(n)=0.5*(n.*(f(n)^2)+(n+1).*(C(n)^2)+(2*n+2).*(B(n)^2)+(n+1).*f(n).*f(n+1)+C(n).*C(n+1).*(n+2)+2*sqrt((n+1)*(n+3)).*B(n).*B(n+1));
w=w+W(n)
end
T=0:0.5:20;
plot(T,w)
这个程序的主要目的就时要做出w随T变化的图,w是一个含有T的求和公式,n从0到1000求和 ,0《=T《=20,步长0.5
1个回答 分类:综合 2014-11-20

问题解答:

我来补答
1.
你的B0,B1,C0,C1都是行矩阵,即在你的程序中都是1行41列的矩阵,而只有矩阵是方阵时才能平方,因此
w=0.5*(0*(f0^2)+(0+1).*(C0^2)+(2*0+2).*(B0^2)+(0+1).*f0.*f1+C0.*C1.*(0+2)+2*sqrt((0+1)*(0+3)).*B0.*B1); 语句中的C0^2,B0^2是错误的,因为C0,B0都不是方阵,后面的有类似写法的也出错.
如果你要行矩阵乘以自身,那应该乘以自身的转置矩阵,写法是:a*a'
所以C0^2改为C0*CO',B0*B0',依此类推
2.B(n)=(f(n)./4)*s*sqrt((n+1)*(n+2)).*(1-cos(2.*T/s)); 有错
当n=1时,上式等号右端的
(f(n)./4)*s*sqrt((n+1)*(n+2)).*(1-cos(2.*T/s))因为T,所以有41个值,而
B(1)只能储存一个值,因此是不正确的,后面的语句有类似用法的也错了.
由于我不知道你要表达什么,所以不知道怎么改
 
 
展开全文阅读
剩余:2000
上一页:ghhhhh
下一页:概括每段段意