当前位置: 首页 > 计算模拟 >求解高次方程组(5次,matlab&1stopt)

求解高次方程组(5次,matlab&1stopt)

作者 Claire3741
来源: 小木虫 300 6 举报帖子
+关注

我需要解一个五元方程组,首先使用matlab中的fsolve,我所设置的迭代次数为10000次,但是每次跑到400次就停了,而且还会报“solver stopped prematurely.fsolve stopped because it exceeded the iteration limit, options.MaxIterations=400(the default value).”我不知道原因。后面考虑到fsolve初值选取比较难,考虑用1stopt去解,仍然解不出来,我想着没有精确解,有个看得过去的近似解也行啊。但是始终没解。有没有人能帮忙看看为什么前面两种方法解不出来,或者是提供一些解答的新思路啊,谢谢大家了!
1、matlab代码
x = sym('x', [1,2,3,4,5],'positive');
% 生成符号变量向量
w1=sqrt((x(1)+x(3)*x(4))./(2*x(2)*x(4)*x(5)));
z=((2*x(2)*x(4)+x(3)*x(4)*x(5))./(2*(x(1)+x(3)*x(4))))*w1;
w2=sqrt(1-z^2)*w1;
a=sqrt((1-2*x(5)*z*w1+x(5)^2*w1^2)./(1-z^2));
f1=atan((w2*x(5))./(1-z*w1*x(5)))-atan((sqrt(1-z^2)./(-z)));
% 参数组成的表达式
eq1=-0.5*x(4)*a./(x(1)+x(3)*x(4))+0.7959;
eq2=z*w1-1.275;
eq3=w2-2.284;
eq4=f1+0.4204;
eq5=-0.5*x(4)./(x(1)+x(3)*x(4))+0.3504;
f = matlabFunction([eq1;eq2;eq3;eq4;eq5], 'vars', {[x(1) x(2) x(3) x(4) x(5)]});
x0 = [0.5 2.5 1 0.05 0.2];
options=optimset('Display','iter','MaxFunEvals',10000,'TolFun',1e-10);
[x,fval,exitflag,output] = fsolve(f,x0,options);
2、1stopt
const delta=-0.5;
parameter x1[0,5],x2[0,5],x3[0,5],x4[0,1],x5[0,5];
conststr
w1=sqrt((x1+x3*x4)/(2*x2*x4*x5));
z=((2*x2*x4+x3*x4*x5)/(2*(x1+x3*x4)))*w1;
w2=sqrt(1-z^2)*w1;
a=sqrt((1-2*x5*z*w1+x5^2*w1^2)/(1-z^2));
f1=atan((w2*x5)/(1-z*w1*x5))-atan(sqrt(1-z^2)./(-z));
//参数组成的表达式
A=delta*x4*a/(x1+x3*x4)+0.7959;
B=z*w1-1.275;
C=w2-2.284;
E=f1+0.4204;
F=delta*x4/(x1+x3*x4)+0.3504;

求解高次方程组(5次,matlab&1stopt)
matlab出错图 返回小木虫查看更多

今日热帖
  • 精华评论
  • 独孤神宇

    解方程组经量不要用符号运算,直接使用数值计算

  • 独孤神宇

    引用回帖:
    3楼: Originally posted by Claire3741 at 2020-08-24 23:38:23
    fsolve求的也是数值解吧
    ...

    你1stOpt 代码写的不对。。

    x1: 0.0304532132539924
    x2: 0.119504502058893
    x3: 0.347292096631735
    x4: 0.0266306732746401
    x5: 0.911618798575995

  • 独孤神宇

    引用回帖:
    3楼: Originally posted by Claire3741 at 2020-08-24 23:38:23
    fsolve求的也是数值解吧
    ...

    5个参数,需要正版软件才能计算。

    Constant delta=-0.5;
    Parameter x1=[0,5],x2=[0,5],x3=[0,5],x4=[0,1],x5=[0,5];
    ConstStr
    w1=sqrt((x1+x3*x4)/(2*x2*x4*x5)),
    z=((2*x2*x4+x3*x4*x5)/(2*(x1+x3*x4)))*w1,
    w2=sqrt(1-z^2)*w1,
    aa=sqrt((1-2*x5*z*w1+x5^2*w1^2)/(1-z^2)),
    f1=atan((w2*x5)/(1-z*w1*x5))-atan(sqrt(1-z^2)/(-z));
    //参数组成的表达式
    Function
    delta*x4*aa/(x1+x3*x4)+0.7959=0;
    z*w1-1.275=0;
    w2-2.284=0;
    f1+0.4204=0;
    delta*x4/(x1+x3*x4)+0.3504=0;

  • Claire3741

    引用回帖:
    5楼: Originally posted by 独孤神宇 at 2020-08-25 08:29:27
    5个参数,需要正版软件才能计算。

    Constant delta=-0.5;
    Parameter x1=,x2=,x3=,x4=,x5=;
    ConstStr
    w1=sqrt((x1+x3*x4)/(2*x2*x4*x5)),
    z=((2*x2*x4+x3*x4*x5)/(2*(x1+x3*x4)))*w1,
    w2=sqrt(1-z^2)*w1,
    a ...

    谢谢你的回复,我又重做了实验,用fsolve还是没办法解出来,我没1stopt正版软件,能不能麻烦你帮忙跑一下啊。我这个其实是6个参数,5个方程,我想弄两组试看看能不能接出来。
    1、6个参数,5个方程
    Constant delta=-0.225;
    Parameter x1=[0,5],x2=[0,5],x3=[0,5],x4=[0,5],x5=[0,5],x6=[0,5];
    //生成变量K,F,T,H,D,R
    ConstStr
    w1=sqrt((x1+x5*x6)/(2*x3*x4*x6)),
    z=((2*x6*x4+(x5*x6+x1*x2)*x3)/(2*(x1+x5*x6)))*w1,
    w2=sqrt(1-z^2)*w1,
    aa=sqrt((1-2*x3*z*w1+x3^2*w1^2)./(1-z^2)),
    f1=atan((w2*x3)./(1-z*w1*x3))-atan((sqrt(1-z^2)./(-z)));
    //参数组成的表达式
    Function
    delta*x6*aa/(x1+x5*x6)+0.02436=0;
    z*w1-1.135=0;
    w2-2.3=0;
    f1+0.5595=0;
    delta*x6./(x1+x5*x6)+0.01119=0;
    2、5个参数,5个方程
    Constant delta=-0.225;
    Parameter x1=[0,5],x2=[0,5],x3=[0,5],x4=[0,5],x5=[0,5];
    //生成变量K,F,T,H,D
    ConstStr
    w1=sqrt((x1+x5*0.05)/(2*x3*x4*0.05)),
    z=((2*0.05*x4+(x5*0.05+x1*x2)*x3)/(2*(x1+x5*0.05)))*w1,
    w2=sqrt(1-z^2)*w1,
    aa=sqrt((1-2*x3*z*w1+x3^2*w1^2)./(1-z^2)),
    f1=atan((w2*x3)./(1-z*w1*x3))-atan((sqrt(1-z^2)./(-z)));
    //参数组成的表达式
    Function
    delta*0.05*aa/(x1+x5*0.05)+0.02436=0;
    z*w1-1.135=0;
    w2-2.3=0;
    f1+0.5595=0;
    delta*0.05./(x1+x5*0.05)+0.01119=0;
    十分感谢

  • 独孤神宇

    引用回帖:
    6楼: Originally posted by Claire3741 at 2020-08-28 23:16:08
    谢谢你的回复,我又重做了实验,用fsolve还是没办法解出来,我没1stopt正版软件,能不能麻烦你帮忙跑一下啊。我这个其实是6个参数,5个方程,我想弄两组试看看能不能接出来。
    1、6个参数,5个方程
    Constant delt ...

    目标函数值(最小): 0.00886947526736046
    x1: 0.963945105231679
    x2: 0.134939569392818
    x3: 0.858017777832085
    x4: 1.79769482276588
    x5: 1.67904225670153
    x6: 0.0517955828557939

    ********************************************

    目标函数值(最小): 0.0088694752543157
    x1: 0.829371852036702
    x2: 0.0295612334196613
    x3: 0.858017701890971
    x4: 1.79745238455023
    x5: 3.69943415831409

猜你喜欢
下载小木虫APP
与700万科研达人随时交流
  • 二维码
  • IOS
  • 安卓