早教吧 育儿知识 作业答案 考试题库 百科 知识分享

用matlab画一个函数,能帮我看看程序哪里有问题吗得不出图里的图形,我的程序是这样的: Ts=7.2; Hs=2.91; w=[0:pi/1023:pi/2]; S=400.5*((Hs./(Ts.^2)).^2)*(exp(1605.*((1./(Ts.*w)).^4)))./(w.^5); plot(w,S);这样画出

题目详情
用matlab画一个函数,能帮我看看程序哪里有问题吗

得不出图里的图形,我的程序是这样的:

  Ts=7.2;

  Hs=2.91;

  w=[0:pi/1023:pi/2];

  S=400.5*((Hs./(Ts.^2)).^2)*(exp(1605.*((1./(Ts.*w)).^4)))./(w.^5);

  plot(w,S);

这样画出来是一个单峰的图形,不知道是哪里出问题了呢


另外请教下这里可以用S=subs(x,y)函数来描述函数吗?

补充下不是多条曲线的问题.

▼优质解答
答案和解析

你的函数表达式肯定有问题,因为很明显,对于w>0,S是单调减的函数,不可能出现峰值.

在你画出的图中,接近0.2的位置看上去好像是有峰值,其实那是因为,对于左边的w,求出的S已超出双精度浮点数的表示范围,结果为Inf,在图中没有表现出来而已.

 

我认为,你的表达式中,极可能是系数1605应该有负号.加上负号画出的图和上面的图比较接近,因为试起来很简单,我就不贴图了,你自行验证就可以了.

 

你原来的公式写法滥用括号和点运算,却吝啬空格,看起来太乱,简单帮你改写一下(不影响功能):

  S = 400.5 * (Hs/(Ts^2))^2 * exp(-1605*(1./(Ts*w)).^4) ./ w.^5;