24小时热门版块排行榜    

查看: 1714  |  回复: 6
【悬赏金币】回答本帖问题,作者Claire3741将赠送您 5 个金币
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

Claire3741

新虫 (初入文坛)

[求助] 求解高次方程组(5次,matlab&1stopt)已有1人参与

我需要解一个五元方程组,首先使用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出错图
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

独孤神宇

版主 (知名作家)

【答案】应助回帖

引用回帖:
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
数值计算
4楼2020-08-25 08:28:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 7 个回答

独孤神宇

版主 (知名作家)

【答案】应助回帖

感谢参与,应助指数 +1
解方程组经量不要用符号运算,直接使用数值计算

发自小木虫Android客户端
数值计算
2楼2020-08-23 08:32:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Claire3741

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by 独孤神宇 at 2020-08-23 08:32:37
解方程组经量不要用符号运算,直接使用数值计算

fsolve求的也是数值解吧

发自小木虫Android客户端
3楼2020-08-24 23:38:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

独孤神宇

版主 (知名作家)

【答案】应助回帖

引用回帖:
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;
数值计算
5楼2020-08-25 08:29:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
不应助 确定回帖应助 (注意:应助才可能被奖励,但不允许灌水,必须填写15个字符以上)
信息提示
请填处理意见