求大神看看matlab 程序哪出错了m.文件function [kn,wn]=Hai_Biao_FZ_13_1(D,L,N)digits(5)g=9.8;%重力加速度i=1;kn=zeros(1,N+1);wn=zeros(1,N+1);syms w1for n=1:N+1kn(i)=2*pi*n/L;S=kn(i)*tanh(kn(i)*D)-w1^2/g;wn(i)=solve(S,w1);i=i+1;end运行

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/14 05:47:03
求大神看看matlab 程序哪出错了m.文件function [kn,wn]=Hai_Biao_FZ_13_1(D,L,N)digits(5)g=9.8;%重力加速度i=1;kn=zeros(1,N+1);wn=zeros(1,N+1);syms w1for n=1:N+1kn(i)=2*pi*n/L;S=kn(i)*tanh(kn(i)*D)-w1^2/g;wn(i)=solve(S,w1);i=i+1;end运行

求大神看看matlab 程序哪出错了m.文件function [kn,wn]=Hai_Biao_FZ_13_1(D,L,N)digits(5)g=9.8;%重力加速度i=1;kn=zeros(1,N+1);wn=zeros(1,N+1);syms w1for n=1:N+1kn(i)=2*pi*n/L;S=kn(i)*tanh(kn(i)*D)-w1^2/g;wn(i)=solve(S,w1);i=i+1;end运行
求大神看看matlab 程序哪出错了
m.文件
function [kn,wn]=Hai_Biao_FZ_13_1(D,L,N)
digits(5)
g=9.8;%重力加速度
i=1;kn=zeros(1,N+1);wn=zeros(1,N+1);
syms w1
for n=1:N+1
kn(i)=2*pi*n/L;
S=kn(i)*tanh(kn(i)*D)-w1^2/g;
wn(i)=solve(S,w1);
i=i+1;
end
运行 [kn,wn]=Hai_Biao_FZ_13_1(130,1500,10000)

求大神看看matlab 程序哪出错了m.文件function [kn,wn]=Hai_Biao_FZ_13_1(D,L,N)digits(5)g=9.8;%重力加速度i=1;kn=zeros(1,N+1);wn=zeros(1,N+1);syms w1for n=1:N+1kn(i)=2*pi*n/L;S=kn(i)*tanh(kn(i)*D)-w1^2/g;wn(i)=solve(S,w1);i=i+1;end运行

    wn(i)=solve(S,w1);

改成

    w = double(solve(S,w1));
    wn(i)=w(w>=0);

原因是,用solve求出来的是解析解,变量类型是sym对象,不能赋值给double类型的wn,应该使用double进行转换.但求出来的w1有两个值,所以需要去掉负数的那个值,这就是第二行代码的作用.