这个matlab 程序应该如何改syms w;md=1700g=8.27*10^7n=10l=10s=zeros(9)%%给矩阵赋值for i=1:9for j=1:9if (j==i-1)s(i,j)=n^2/l^2;elseif (j==i)s(i,j)=md*(w^2)/g-(2*i-1)*(n^2)/i*l^2;elseif (j==i+1)s(i,j)=((n/l)^2)/i;endendends(1,2)=0;s(9,9)=md
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/28 03:49:50
![这个matlab 程序应该如何改syms w;md=1700g=8.27*10^7n=10l=10s=zeros(9)%%给矩阵赋值for i=1:9for j=1:9if (j==i-1)s(i,j)=n^2/l^2;elseif (j==i)s(i,j)=md*(w^2)/g-(2*i-1)*(n^2)/i*l^2;elseif (j==i+1)s(i,j)=((n/l)^2)/i;endendends(1,2)=0;s(9,9)=md](/uploads/image/z/1340321-41-1.jpg?t=%E8%BF%99%E4%B8%AAmatlab+%E7%A8%8B%E5%BA%8F%E5%BA%94%E8%AF%A5%E5%A6%82%E4%BD%95%E6%94%B9syms+w%3Bmd%3D1700g%3D8.27%2A10%5E7n%3D10l%3D10s%3Dzeros%289%29%25%25%E7%BB%99%E7%9F%A9%E9%98%B5%E8%B5%8B%E5%80%BCfor+i%3D1%3A9for+j%3D1%3A9if+%28j%3D%3Di-1%29s%28i%2Cj%29%3Dn%5E2%2Fl%5E2%3Belseif+%28j%3D%3Di%29s%28i%2Cj%29%3Dmd%2A%28w%5E2%29%2Fg-%282%2Ai-1%29%2A%28n%5E2%29%2Fi%2Al%5E2%3Belseif+%28j%3D%3Di%2B1%29s%28i%2Cj%29%3D%28%28n%2Fl%29%5E2%29%2Fi%3Bendendends%281%2C2%29%3D0%3Bs%289%2C9%29%3Dmd)
这个matlab 程序应该如何改syms w;md=1700g=8.27*10^7n=10l=10s=zeros(9)%%给矩阵赋值for i=1:9for j=1:9if (j==i-1)s(i,j)=n^2/l^2;elseif (j==i)s(i,j)=md*(w^2)/g-(2*i-1)*(n^2)/i*l^2;elseif (j==i+1)s(i,j)=((n/l)^2)/i;endendends(1,2)=0;s(9,9)=md
这个matlab 程序应该如何改
syms w;
md=1700
g=8.27*10^7
n=10
l=10
s=zeros(9)
%%给矩阵赋值
for i=1:9
for j=1:9
if (j==i-1)
s(i,j)=n^2/l^2;
elseif (j==i)
s(i,j)=md*(w^2)/g-(2*i-1)*(n^2)/i*l^2;
elseif (j==i+1)
s(i,j)=((n/l)^2)/i;
end
end
end
s(1,2)=0;
s(9,9)=md*w^2/g-(n/l)^2;
s(9,8)= (n/l)^2;
%%解行列式为0的方程,y即未知数w的值
y=solve(det(s))
提示出错为
The following error occurred converting from sym to double:
Error using ==> sym.double
DOUBLE cannot convert the input expression into a double array.
If the input expression contains a symbolic variable,use the VPA function instead.
Error in ==> matlab at 14
s(i,j)=md*(w^2)/g-(2*i-1)*(n^2)/i*l^2;
那这是为什么呀?
这个matlab 程序应该如何改syms w;md=1700g=8.27*10^7n=10l=10s=zeros(9)%%给矩阵赋值for i=1:9for j=1:9if (j==i-1)s(i,j)=n^2/l^2;elseif (j==i)s(i,j)=md*(w^2)/g-(2*i-1)*(n^2)/i*l^2;elseif (j==i+1)s(i,j)=((n/l)^2)/i;endendends(1,2)=0;s(9,9)=md
a=zeros(1,1);
syms w
a(1,1)=w
上面的程序,你试一下就知道了.在matlab中是不能够将一个符号变量赋值给数值矩阵的
你试一下下面的程序
就是把s=zeros(9)一行去掉
syms w;
md=1700
g=8.27*10^7
n=10
l=10
%给矩阵赋值
for i=1:9
for j=1:9
if (j==i-1)
s(i,j)=n^2/l^2;
elseif (j==i)
s(i,j)=md*(w^2)/g-(2*i-1)*(n^2)/i*l^2;
elseif (j==i+1)
s(i,j)=((n/l)^2)/i;
end
end
end
s(1,2)=0;
s(9,9)=md*w^2/g-(n/l)^2;
s(9,8)= (n/l)^2;
%%解行列式为0的方程,y即未知数w的值
y=solve(det(s))