请教高手帮忙解决利用matlab求解方程组交点,并绘制图形的问题,万分感谢

2025-01-06 01:55:51
推荐回答(2个)
回答1:

在你的代码里

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

回答2:

求出两个曲线的交点的值(x1,x2)x1,x2不用限制0.0001步长,定义syms x1 x2,然后用fsolve解方程即可。若希望精度0.0001,设置以下数据类型即可。