用matlab解一个三元方程,但解代回原方程两边不等对matlab不熟悉,由于临时需要做一个方程组的求解才开始接触这个软件.方程组如下图,我解出结果后,将结果代回原先的方程组,方程两边却不相

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/18 12:48:25
用matlab解一个三元方程,但解代回原方程两边不等对matlab不熟悉,由于临时需要做一个方程组的求解才开始接触这个软件.方程组如下图,我解出结果后,将结果代回原先的方程组,方程两边却不相用matl

用matlab解一个三元方程,但解代回原方程两边不等对matlab不熟悉,由于临时需要做一个方程组的求解才开始接触这个软件.方程组如下图,我解出结果后,将结果代回原先的方程组,方程两边却不相
用matlab解一个三元方程,但解代回原方程两边不等
对matlab不熟悉,由于临时需要做一个方程组的求解才开始接触这个软件.方程组如下图,我解出结果后,将结果代回原先的方程组,方程两边却不相等.
最好能给出matlab代码,
下面是我编写的m文件,其中x(1),x(2),x(3)分别对应上图中的R1、R2、R3:
function Test
clc
clear
options=optimset('Display','off');
options.TolFun=1e-30;
options.TolX=1e-16;
x0=[0.4;0.4;0.4]; %初值
[x,fval]=fsolve(@mf,x0,options)
function F=mf(x)
b0=0.611553; b1=1.746500; b2=1.860016; u = 6;
F = [1.0/(x(1)*x(2)*x(3))-b0;1.0/(x(1)*x(2))+(2-u)/(x(1)*x(3))+(3-u)/(x(2)*x(3))-b1;2.0/x(2)+(2-u)/x(3)+1.0/x(1)-b2];
得出的结果:
x =
0.7567
1.2281
11.1929
fval =
-0.5154
-1.3610
0.7326
可以看出,这三个x如果代回到第一个方程中,方程两边根本就不相等,而且差很多.
另外,是做什么的.
我晕,不能插入图片,我的方程组在图片上。不过没关系,m文件中已经给出方程组了。
要解的是这个三个方程组成的方程组:
1.0/(x(1)*x(2)*x(3))=b0
1.0/(x(1)*x(2))+(2-u)/(x(1)*x(3))+(3-u)/(x(2)*x(3))=b1
2.0/x(2)+(2-u)/x(3)+1.0/x(1)=b2;
那么我上面的F=[....]中是不是写的正确呢?
另外,是不是fval应该等于0才对呢,如果解是对的,那么代入方程后,方程自然应该等于0啊
可是我每一次选择初值,得到的fval(1)、fval(2)、fval(3)和0都差很多。从上面也能够看出来。

用matlab解一个三元方程,但解代回原方程两边不等对matlab不熟悉,由于临时需要做一个方程组的求解才开始接触这个软件.方程组如下图,我解出结果后,将结果代回原先的方程组,方程两边却不相
嗯,fval就是告诉你在取x值的时候方程mf的值
首先,你确定你要解的是F = 0 并且F的定义没有错
其次,这个方程的解不唯一,你手解也可以看到这一点.
你对TolFun,TolX的设置没有任用,应该设置:
options=optimset('MaxFunEvals',1e10,'MaxIter',1e10);
这个1e10你自己调,其实就是反复尝试的次数.
Add:
你写的没错,但是这个解不是唯一的.
等于零是理想情况,哪那么多理想情况呢?
何况这个解法,其实就是一个优化问题,你这个方程组有太多局部最小解,不选对一个合适的初始值x0,是得不到你想要的解的.
我建议你先手动把这三个方程组化简一下,化出来以后你就能对的关系有个很清楚认识了,本质上说这个方程组可以化简到只用x1和x2,在这种情况下你试一下吧.
化简到这个程度也可以,你试一下就可以得到解,但代入原方程却不正确:
F = [x(3)-4*x(2)-3*x(1)-b1/b0
2*x(1)*x(3)-4*x(1)*x(2) + x(2)*x(3)- b2/b0];
所以,x(1)*x(2)*x(3) = 1/b0 这个条件很伤人,化简之后,这个条件消失了.
在这种情况下,初始点选不对,得不到最优解.
最后补充:
我认为该方程无实数解.

主要是clear的原因,这下子好了:
function Test
options=optimset('Display','off');
options.TolFun=1e-30;
options.TolX=1e-16;
x0=[0.4;0.4;0.4]; ...

全部展开

主要是clear的原因,这下子好了:
function Test
options=optimset('Display','off');
options.TolFun=1e-30;
options.TolX=1e-16;
x0=[0.4;0.4;0.4]; %初值
[x,fval]=fsolve(@mf,x0,options)
test1=mf(x)
err=test1-fval
function F=mf(x)
b0=0.611553; b1=1.746500; b2=1.860016; u = 6;
F = [1.0/(x(1)*x(2)*x(3))-b0;1.0/(x(1)*x(2))+(2-u)/(x(1)*x(3))+(3-u)/(x(2)*x(3))-b1;2.0/x(2)+(2-u)/x(3)+1.0/x(1)-b2];
结果:
x =
0.8026
1.2176
11.0347
fval =
-0.5188
-1.3981
0.6660
test1 =
-0.5188
-1.3981
0.6660
err =
0
0
0

收起

谁会用MATLAB解三元方程啊? 用matlab解一个三元方程,但解代回原方程两边不等对matlab不熟悉,由于临时需要做一个方程组的求解才开始接触这个软件.方程组如下图,我解出结果后,将结果代回原先的方程组,方程两边却不相 解一个三元方程,求详解 用matlab求解三元回归方程 方程如图:其中α,β,γ为未知数; 其他的有多组数据,这个方程可以手算出来,但我想熟悉下matlab编程.知道的朋友请将matlab代码写出来看下,任意贴几组(x,y,z,w)的数据 用matlab解方程求matlab代码. 2x-3y+z=0 3x+2y+5z=0这个方程到底要怎么解?.只有两个方程 却是三元 前面似乎有猫腻 但我试了好几次就是解不出来、、怎么办?.用第一个方程减第二个方程 用第一个方程加第二个方程 我都试了 用牛顿迭代法解三元三次方程的MATLAB程序!用牛顿迭代法解下面的三元三次方程,用MATLAB实现,急用,(1-c)*(1-y)*(1-m)*10.61+y(1-c)*(1-m)*30.56+c*(1-y)*(1-m)*60.67+m*(1-c)*(1-y)*0.95+y*m*(1-c)*28.45+y*c*(1-m) *8.19+c*m*(1-y) 解一个三元二次方程 如何用matlab解一个二元方程? 用matlab怎么解方程 用matlab 解超越方程~ 三元三次方程怎么解 一个三元一次方程组,只有两个方程, 三元方程 三元方程. 谁会matlab解二元或三元二次方程请具体一点 怎么用matlab拟合函数,最好是三元的多项式 matlab问题,高分求matlab求三元方程的极值.形式如图片,这个式子应该有一个最大值,我就是想求得这个值是多少,是不是1,如果是如何得到的,最好能有一个程序求出.再写一下 如果用xz-x+1>0与xz-y