作者leoking0106 (white)
看板MATLAB
标题Re: [问题]Matlab找分段函数跟圆的交点与syms指令
时间Sat May 11 15:59:10 2013
※ 引述《leoking0106 (white)》之铭言:
: ※ 引述《leoking0106 (white)》之铭言:
: : 1.
: : 我的分段函数是
: : y=0 ,-7<x<0
: : y=2/3*x ,0<x<9
: : y=6 ,9<x<12
: : 圆方程式是
: : (x-2.5).^2+(y-9.15).^2=9.5^2
: : 要如何用matlab找出两函数的交点(0,0) (11.46,6) ??
: : 2.
: : 例如这样
: : syms x;
: : y=-(9.5^2-(x-2.5).^2).^0.5+9.15;
: : 我想要问这样写的话有没有甚麽指令可以让我直接得到y函数的值
: : 例如y(0)=0; y(11.46)=6 之类的
: : 还有如果我要画x vs.y的曲线图(像plot那样的图)
: : 要用甚麽指令呢??
: : (或者有其他比较好的写法但也能达到我想要的)
: : 拜托网路上的matlab高手教我怎麽写
: : 最好能提供code让我比较好了解
: : 感激不尽~
: 感谢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定的)
感谢~~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 42.67.131.230
1F:→ jatj:Undefined function 'mtimes' for input arguments of type ' 05/11 16:11
2F:→ jatj:'function_handle'. 代表对这程式而言乘法没有定义 05/11 16:12
3F:→ jatj:原因出自用Anonymous Functions yy没办法继续看y1里面是什麽 05/11 16:16
4F:→ jatj:另外也要注意要把*改成.* 你想要用元素乘法对吧 05/11 16:17
5F:→ jatj:所以解决办法是, 把yy定义中y1, y2, y3改成原来定义的函式 05/11 16:17
6F:→ jatj:yy=@(x) (0.*(heaviside(x+7)-heaviside(x))+2/3*x.*(heavisi 05/11 16:18
7F:→ jatj:heaviside(x)-heaviside(x-9))+6.*(heaviside(x-9)-heaviside 05/11 16:18
8F:→ jatj:(x-12))); 用syms写法也可以 但较复杂 请help solve, subs 05/11 16:19
9F:→ jatj:solve找焦点 建议是直接找圆跟三段线分别的焦点 05/11 16:21
10F:→ jatj:之後检查解答是否落在合理的区域 会比用heaviside简单许多 05/11 16:21