登录论坛

查看完整版本 : 请教程序为什么单步可运行,而整体出错?谢谢


shirleyflh
2009-03-03, 20:39
这是求曲率最大点的程序,我单步运行可通过,结果正确,但整体一起运行就出错,错误是
?? Error using ==> ./
Matrix dimensions must agree.

Error in ==> D:\lianghua\matlabwork\cequlv.m
On line 9 ==> k1b=k2./(((1+k1.^2)).^(3/2))

请教 是为什么?怎么解决?

程序如下:
syms x y21
y21='5*x^2+5'
k2=diff(y21,2)
k1=diff(y21,1)

k1b=k2./(((1+k1.^2)).^(3/2))
k1b=abs(k1b)

x=-11:20

k1=subs(k1b)
k1=double(k1)
nk1=length(k1)
maxk1=max(k1)
[mk1,nk1]=find(k1==maxk1)

plot(x,y,x(nk1),y(nk1),'r.')

mathjiang
2009-03-03, 21:52
楼主,你定义的函数y在哪儿呢?
plot(x,y....)中的y没有定义。

mathjiang
2009-03-03, 22:04
可以了哈:
syms x y21
y21='5*x^2+5';
k2=diff(y21,2);
k1=diff(y21,1);
k1b=k2./(((1+k1.^2)).^(3/2));
k1b=abs(k1b);
x=-11:20;
k1=subs(k1b,'x',-11:20);
k1=double(k1);
nk1=length(k1);
maxk1=max(k1);
[mk1,nk1]=find(k1==maxk1);
plot(x,k1,x(nk1),k1(nk1),'r.')

shirleyflh
2009-03-04, 19:32
谢谢版主,但你的程序我在自己的机器上运行还是有错误,错误是:
?? Error using ==> ./
Matrix dimensions must agree.
On line 5 ==> k1b=k2./(((1+k1.^2)).^(3/2));

同样的还是单步可以得到结果,但运行run就出现上述错误.

原来的程序,我补充一下y
syms x y21
y21='5*x^2+5'
k2=diff(y21,2)
k1=diff(y21,1)

k1b=k2./(((1+k1.^2)).^(3/2))
k1b=abs(k1b)

x=-11:20
k1=subs(k1b)
k1=double(k1)
nk1=length(k1)

maxk1=max(k1)
[mk1,nk1]=find(k1==maxk1)

y=[5.*x.^2]
plot(x,y,x(nk1),y(nk1),'r.')