在你的代码里
x1=0:0.001:1;
x2=0:0.001:1;
C=0.5;
a=0.2;
b1=0.4;
b2=0.1;
x2=(C-b1.*x1)./(2.*((1-a)-(1+b1).*x1));
x1=(C-b2.*x2)./(2.*((1-a)-(1+b2).*x2));
在计算最后一行 x1=(C-b2.*x2)./(2.*((1-a)-(1+b2).*x2));时,里面的x2已经不是0:0.001:1了,而是前一行x2=(C-b1.*x1)./(2.*((1-a)-(1+b1).*x1))的计算结果~
另外,你的描述 :将之前的到得两个曲线整合到一个坐标系上,该坐标系横坐标是x1,纵坐标是x2( 0 这句话我实在不是很理解,你里面颠来倒去用了好多次x1,x2,一会儿x1横坐标,一会儿x2横坐标,才得到的两条曲线,最后又要画在一个坐标系,有点晕~ 我猜测你的原始意图,改了下代码,不知道是不是你想要的,代码如下,你可以试试: x1=0:0.001:1; x2=0:0.001:1; C=0.5; a=0.2; b1=0.4; b2=0.1; xx2=(C-b1.*x1)./(2.*((1-a)-(1+b1).*x1)); plot(x1,xx2,'b'); xx1=(C-b2.*x2)./(2.*((1-a)-(1+b2).*x2)); hold on; plot(xx1,x2,'r'); xlabel('x1'); ylabel('x2'); axis([0 1 0 1]); 这里面暂时没有考虑 0
求出两个曲线的交点的值(x1,x2)x1,x2不用限制0.0001步长,定义syms x1 x2,然后用fsolve解方程即可。若希望精度0.0001,设置以下数据类型即可。