作者leoking0106 (white)
看板MATLAB
标题Re: [问题]Matlab找分段函数跟圆的交点与syms指令
时间Sat May 11 23:26:24 2013
※ 引述《leoking0106 (white)》之铭言:
: ※ 引述《leoking0106 (white)》之铭言:
: : 感谢j大解惑
: : 但我想请问Q2中为什麽你的@(X)我改成syms x就不能run了呢?
: : 还有Q1能不能教我怎麽写分段函数跟圆方程式
: : 我才刚接触MATLAB没多久很多东西都还不是很了
: OK Q2已经弄懂了
: 但关於Q1分段函数的部分 我是这样写的
: y1=@(x) 0;
: y2=@(x) 2/3*x;
: y3=@(x) 6;
: yy=@(x) (y1*(heaviside(x+7)-heaviside(x))+y2*(heaviside(x)-heaviside(x-9))+...
: y3*(heaviside(x-9)-heaviside(x-12)))
: x=[0:1.5:11.46 11.46]
: yy(x)
: 我想要抓出yy中对应x的函数值
: 他run出来的error是
: ??? Undefined function or method 'mtimes' for input arguments of type
: 'function_handle'.
: Error in ==>
: @(x)(y1*(heaviside(x+7)-heaviside(x))+y2*(heaviside(x)-heaviside(x-9))+y3*(heaviside(x-9)-heaviside(x-12)))
: Error in ==> test7 at 11
: yy(x)
: 可以帮我看看哪边写错吗?
: 还有如果我的函数都是用@(x)定的 还能用solve找交点吗(因为我看
: help那边solve的函数都是用syms定的)
: 感谢~~
找交点的部分我写的code是这样
beta= 35;
H=6;
r=9.5;x0=2.5;y0=9.15;
m=tan(beta*pi/180);
xh=H/m;
syms xx;
y1=0;
y2=m.*xx;
y3=H;
yup=(y1.*(heaviside(xx-(x0-r))-heaviside(xx))+...
y2.*(heaviside(xx)-heaviside(xx-xh))+...
y3.*(heaviside(xx-xh)-heaviside(xx-(x0+r))));
ydown=-(r.^2-(xx-x0).^2).^0.5+y0;
cc=solve(ydown-yup);
plot(linspace(-1,12),subs(ydown,linspace(-1,12)),...
linspace(-1,12),subs(yup,linspace(-1,12)))
我用plot确定我两个函数是有交点的 但结果却说没有交点
能不能帮我看看是哪部分写错了呢?
还有我yup函数的最後一点yup(12)应该是6
但为什麽我用subs(yup,12)出来的值却是3??
最後我想问用subs(y,x)可以找函数值
那有没有甚麽指令是可以找反函数的呢?
拜托各位高手帮我看一下 debug好久好痛苦QQ
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 42.67.131.230
1F:→ jatj:cc不就你的交点?eval(cc)=11.4626, -0.0549 05/12 02:15
2F:→ jatj:subs(heaviside(xx-(x0+r)),'xx',12) = 1/2 应该不是你要的 05/12 02:19
3F:→ jatj:原因出在heavyside(0)=0.5 不是你预期的1 05/12 02:20