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

现有方程组: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的值。也就是得出他们随时间变化的曲线图!而且你说的思路我明白,可我主要的问题是不知道怎么编,能有个相关思路的程序就好了,至少我能看懂~麻烦你们了,如果这个方程组还是不行,你们能大体编出我这种想法的程序么?主要是每一步程序是怎么编的,这个方程组是次要的!~

第1个回答  2008-08-27
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')
第2个回答  2008-09-03
哎呀,不太会呀
如果我是你,就先看一下是不是收敛
第3个回答  2008-08-26
你改了以后总的式子还是错的
我说一下我的思想吧
你构造一个n*3的0矩阵,1,2,3行分别代表x,y,z的值,然后循环,这样就免去了迭代了,把得到的结果再取代原先矩阵里的相应位置的值。
然后每一次循环就可以认为是在解一次非线性方程,这样到最后结果就出来了
因为你给的式子不正确我也没有办法把程序编出来 ,就只说一下思路了
有问题的话留言本回答被提问者采纳

MATLAB的solve函数求非线性解方程或方程组
编写程序:[x, sol] = solve(equation, variable)运行结果:程序执行后,输出变量x的解sol方程组求解对于方程组,其操作类似,例如:程序:[x, sol] = solve(eqns, variables)运行结果:返回所有变量的解sol数值解返回对于数值计算,solve也能提供精确的数值结果:程序:solution = solve(equation, var...

用matlab求解非线性方程组,高手帮解下。
matlab源程序为:S=solve('x1-(7+x2^2+4*x3)\/12=0','x2-(11-x1^2+x3)\/10=0','x3-(8-x2^3)\/10=0')disp(S.x1)disp(S.x2)disp(S.x3)解:S = x1: [6x1 sym]x2: [6x1 sym]x3: [6x1 sym].90553960985591352219643092016224 4.7108198630581133928941167091861-7.945037451553621...

如何使用MATLAB解非线性方程组
用solve函数。例如:x^2+y^3=10 x^3-y^2=1 其中x,y为方程组的未知量 在Matlab的命名窗口中输入:syms x y [x y]=solve('x^2+y=10','x^2-y^2=1','x','y')输出计算结果为:x = (37^(1\/2)\/2 + 21\/2)^(1\/2)(21\/2 - 37^(1\/2)\/2)^(1\/2)-(21\/2 - 1\/2*...

非线性方程组的解法matlab
方法一,使用solve函数求解 x = optimvar('x');y = optimvar('y');prob = optimproblem;prob.Objective = -x - y\/3;prob.Constraints.cons1 = x + y <= 2;prob.Constraints.cons2 = x + y\/4 <= 1;prob.Constraints.cons3 = x - y <= 2;prob.Constraints.cons4 = x\/4 + y ...

Matlab解非线性方程组
对于带变量的非线性方程组,可以用Matlab的for循环语句和vpasolve函数联合求解。实现方法:m=0:0.01:1;for i=1:length(m)syms x y z f1=cos(x)-cos(y)+cos(z)-m(i);f2=cos(5*x)-cos(5*y)+cos(5*z);f3=cos(7*x)-cos(7*y)+cos(7*z);[x1(i),y1(i),z1(i)]=vpasolve...

matlab 如何解非线性方程组
使用solve函数。举个例子,解非线性方程组 x^2+y^3=10 x^3-y^2=1 其中x,y为方程组的未知量 在Matlab的命名窗口中输入:syms x y [x y]=solve('x^2+y=10','x^2-y^2=1','x','y')即可 输出计算结果为:x = (37^(1\/2)\/2 + 21\/2)^(1\/2)(21\/2 - 37^(1\/2)\/2)...

急求MATLAB解非线性方程组的程序
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')...

用matlab解非线性方程组怎么最快?
利用MATLAB求解线性方程组,步骤如下:1. 输入方程组的系数矩阵A,点击计算按钮,根据结果情况判断是否有解,若有解则计算基础解系。2. 输入非齐次方程组的系数矩阵A和增广矩阵b,点击计算按钮,根据结果情况判断是否有解,若有解则计算基础解系和特解,若有唯一解则求出唯一解。3. 点击清除按钮,...

matlab怎么求解两元非线性方程组
可以使用Matlab内置函数fsolve来求解非线性方程组。具体步骤如下:定义一个匿名函数,将两个方程表示为一个向量。F = @(x) [24.9697*x(2)\/(sqrt((24.9697-x(1))^2+x(2)^2))-24.969; 25.0282*x(2)\/(sqrt((25.0282-x(1))^2+x(2)^2))-25.029];使用fsolve函数求解方程组。

matlab解多元非线性方程组,要求整数解
①eqns就是你的方程组,方程组里面的各个方程是组织为一个数组的。所以你可以直接使用 [方程1,方程2,。。。,方程n] 对应于eqns输入参数。也可以后面会将到,将eqns声明为一个数组,然后带入eqns输入即可,这样方便编辑。②vars就是你想要返回的求得的未知变量,如果你不明确指定,那他就会按照sym...

相似回答
大家正在搜