急求MATLAB解非线性方程组的程序

来源:百度知道 编辑:UC知道 时间:2024/05/29 01:32:45
现有方程组:2*x(t+1)+3*y(t+1)+z(t+1)=0 ①
2*y(t+1)*z(t+1)+4*y(t+1)=0 ②
x(t+1)+3*z(t+1)=1+3z(t) ③
注:x(t+1),y(t+1),z(t+1)和z(t)分别表示t+1时刻和t时刻的x,y,z所以这个方程本身就是一个对t的迭代。而方程②又是一个非线性方程,所以对每个t+1时刻又得用迭代使得该时刻的值达到一个精确值,再把这个精确值带入方程组进行对t的迭代。这里我们设定:t=1:100,z(1)=1,x(1)=y(1)=0.精确值的精确度可自己设定。
求MATLAB高手解决啊,送上100分。越详细越好,最好能在后面有标注,本人学MATLAB不久,很多不懂!~如果答案满意,一定再加一倍分数!!
不好意思,这是我随便造的个。主要想知道这样双重迭代怎么编!~
这样吧,把第②个方程改为2*y(t+1)*z(t+1)+3*x(t+1)=0.
谢谢了哈,问题解决一定会再追加100分的~~

谢谢你们的关注啊!~~这个东西实在太麻烦,我自己都搞得有点糊涂了。
再改下应该是非线性了2*y(t+1)*sin(z(t+1))+3*x(t+1)=0 ② 。如果还有多组解就选一组迭代吧!~我主要不是想解出答案,而是想知道思路和程序的具体步骤。二楼说的是创建三维数组吧,可是这样迭代以后只能得到最后的一组x,y,z。而我想得到的是每一时刻的x,y,z的值。也就是得出他们随时间变化的曲线图!而且你说的思路我明白,可我主要的问题是不知道怎么编,能有个相关思路的程序就好了,至少我能看懂~麻烦你们了,如果这个方程组还是不行,你们能大体编出我这种想法的程序么?主要是每一步程序是怎么编的,这个方程组是次要的!~

你改了以后总的式子还是错的
我说一下我的思想吧
你构造一个n*3的0矩阵,1,2,3行分别代表x,y,z的值,然后循环,这样就免去了迭代了,把得到的结果再取代原先矩阵里的相应位置的值。
然后每一次循环就可以认为是在解一次非线性方程,这样到最后结果就出来了
因为你给的式子不正确我也没有办法把程序编出来 ,就只说一下思路了
有问题的话留言

x=[0 0 1];
f=@(x,a)([2*x(1)+3*x(2)+x(3),2*x(2)*sin(x(3))+3*x(1),x(1)+3*x(3)-1-3*a]);
for t=1:99
a=x(end,3);
fun=@(x)(f(x,a));
x=[x;fsolve(fun,[x(end,:)],optimset('Display','off'))];
end
plot(1:100,x,'.');
legend('x','y','z')

哎呀,不太会呀
如果我是你,就先看一下是不是收敛