matlab 根据既有的函数求交点

函数1:是一个分段函数
function sol=p1(x)
if x>0 && x<=10
sol=x;
elseif x>10
sol=x^2-100
end

函数2:是一条抛物线
function sol=p2(x)
sol=-(x+10)*(x-30)/80

请问如何求这条曲线的交点呀!!!
这两个函数是我自己造的,其实意思就是在既有的函数定义下编写求交点的代码(这两个函数是固定的,不要另外写语句来重新表达这两条曲线,也就是说求交点的语句是以p1(x)和p2(x)为参数的)。

第1个回答  2013-08-19
function sol = crosspoint(x)
if x > 0 && x <=10
s = solve('y - x = 0','y + (x + 10) * (x - 30) / 80 = 0');
s = [s.x,s.y]
elseif x > 10
s = solve('y - x^2 + 100 = 0','y + (x + 10) * (x - 30) / 80 = 0');
s = [s.x,s.y]
end

运行结果:
>> crosspoint(15)
s =
[ -10, 0]
[ 830/81, 32800/6561]
>>追问

我有两个疑问,
1,s = [s.x,s.y]这一句是什么作用,不要啊?
2,我底下有说明,求交点的语句是以p1(x)和p2(x)为参数,而不是再单独写再一个完整的代码求交点。
求解答,谢谢了。

追答

s = [s.x,s.y]求的是交点的坐标值,整个计算思想就是求解二元方程 。p1(x)和p2(x)是函数值解,靠两个值怎么求交点?

追问

p1(x)和p2(x)不是指两个解,是说我的提问里边已经定义好的两个函数。x是指广义的自变量,不是指某一个变量或值。
就是说用这两个已经定义好了的曲线函数来求交点。

相似回答