matlab解三元高次方程组。400金币。
求解下面的三元高次方程组的解。
使用matlab进行汇编。
要求:没有初始值(需要输入初始值的情况不符合要求!)!!! 程序运行,即要直接得到最优结果!!!具有鲁棒性(方程中系数564080065.628041000,609249680.389719000,649348646.964450000发生调整,依然可以正常运行 )!!!
%%%
需要附上:
1,代码
2,结果 X Y Z
3,残差(验证结果)
400金币。
谢谢。
%%需求解方程:
(X^2+Y^2+Z^2)^4 - 564080065.628041000 * (X^2+ Y^2+ 4* Z^2) = 0
( (X+2)^2+Y^2+Z^2)^4 - 609249680.389719000 * ( (X+2)^2+ Y^2+ 4* Z^2) =0
( (X+2)^2+(Y+2)^2+Z^2)^4 - 649348646.964450000 * ( (X+2)^2+ (Y+2)^2+ 4* Z^2) =0
%%残差验证
% 残差;
a = (X^2+Y^2+Z^2)^4 - 564080065.628041000 * (X^2+ Y^2+ 4* Z^2)
b = ( (X+2)^2+Y^2+Z^2)^4 - 609249680.389719000 * ( (X+2)^2+ Y^2+ 4* Z^2)
c = ( (X+2)^2+(Y+2)^2+Z^2)^4 - 649348646.964450000 * ( (X+2)^2+ (Y+2)^2+ 4* Z^2)
% 残差比值
ratioa = 1/(X^2+Y^2+Z^2)^4 * 564080065.628041000 * (X^2+ Y^2+ 4* Z^2)
ratiob = 1/( (X+2)^2+Y^2+Z^2)^4 * 609249680.389719000 * ( (X+2)^2+ Y^2+ 4* Z^2)
ratioc = 1/( (X+2)^2+(Y+2)^2+Z^2)^4 * 649348646.964450000 * ( (X+2)^2+ (Y+2)^2+ 4* Z^2) 返回小木虫查看更多
求解结果在 [-1,-1,0] 是整体最优的。
残差较大可能是方程组本身的问题
大佬 系数已经变了。您仔细看一下
这个不管怎么变,残差还是很大,你可以试一下。
除非修改模型
使用fsolve函数,可以得到
X = 5.7508
Y = 4.6978
Z = 35.247
残值
Xerr= 0.00048828
Yerr=-0.00097656
Zerr=-0.00048828
答案是对的。可否附上代码?是否设置呢初始值?
谢谢
,
x0=rand(3,1)*1000;
[y,fval,h]=fsolve(@func,x0)
X=y(1)
Y=y(2)
Z=y(3)