数学
请问谁知道用matlab求解多元超越方程组的方法或思路或函数不?形如:a*(1+a+a^3+d+d^2+d^3+d^4+d^5+d^6)=A;b*(1+b+b^3+d+d^2+d^3+d^4+d^5+d^6)=B;c*(1+c+d*+d^2+d^3+d^4)=C;d+a*(d+2*d^2+3*d^3+4*d^4+5*d^5+6*d^6)+b*(d+2*d^2+3*d^3+4*d^4+5*d^5+6*d^6+c*(d+2*d^2+3*d^3+4*d^4)=D;A、B、C、D已知,可以是求解思路、函数或简单的

2019-05-07

请问谁知道用matlab求解多元超越方程组的方法或思路或函数不?
形如:
a*(1+a+a^3+d+d^2+d^3+d^4+d^5+d^6)=A;
b*(1+b+b^3+d+d^2+d^3+d^4+d^5+d^6)=B;
c*(1+c+d*+d^2+d^3+d^4)=C;
d+a*(d+2*d^2+3*d^3+4*d^4+5*d^5+6*d^6)+b*(d+2*d^2+3*d^3+4*d^4+5*d^5+6*d^6+c*(d+2*d^2+3*d^3+4*d^4)=D;
A、B、C、D已知,可以是求解思路、函数或简单的程序文件,
优质解答
你去看下fsolve的帮助吧
简单来说,你先把方程化成F(x)=0的形式,编个function,保存在同一文件夹下,然后[x,fval]=fsolve(F,x0).x是解,x0是迭代初值,fval是最后x代入F的值,相当于精度.注意,因为是非线性方程,迭代初值不同有可能解也不同,初值设置不当有可能导致方程无法求解
ps:你最后一个方程少了个括号
比如
function F = myfun(x)
A=1 ;
B=1 ;
C=1 ;
D=1 ;
a = x(1); b = x(2); c = x(3); d = x(4);
F = [a*(1+a+a^3+d+d^2+d^3+d^4+d^5+d^6)-A;
b*(1+b+b^3+d+d^2+d^3+d^4+d^5+d^6)-B;
c*(1+c+d*+d^2+d^3+d^4)-C;
d+a*(d+2*d^2+3*d^3+4*d^4+5*d^5+6*d^6)+b*(d+2*d^2+3*d^3+4*d^4+5*d^5+6*d^6)+c*(d+2*d^2+3*d^3+4*d^4)-D];
end
保存myfun
然后
[x,fval] = fsolve(@myfun,[0 0 0 0]);
在同一文件夹下运行
你去看下fsolve的帮助吧
简单来说,你先把方程化成F(x)=0的形式,编个function,保存在同一文件夹下,然后[x,fval]=fsolve(F,x0).x是解,x0是迭代初值,fval是最后x代入F的值,相当于精度.注意,因为是非线性方程,迭代初值不同有可能解也不同,初值设置不当有可能导致方程无法求解
ps:你最后一个方程少了个括号
比如
function F = myfun(x)
A=1 ;
B=1 ;
C=1 ;
D=1 ;
a = x(1); b = x(2); c = x(3); d = x(4);
F = [a*(1+a+a^3+d+d^2+d^3+d^4+d^5+d^6)-A;
b*(1+b+b^3+d+d^2+d^3+d^4+d^5+d^6)-B;
c*(1+c+d*+d^2+d^3+d^4)-C;
d+a*(d+2*d^2+3*d^3+4*d^4+5*d^5+6*d^6)+b*(d+2*d^2+3*d^3+4*d^4+5*d^5+6*d^6)+c*(d+2*d^2+3*d^3+4*d^4)-D];
end
保存myfun
然后
[x,fval] = fsolve(@myfun,[0 0 0 0]);
在同一文件夹下运行
相关问答