Matlab求解多元多次方程组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matlab求解多元多次方程组相关的知识,希望对你有一定的参考价值。

2*w1)^2/.34 /.34 /2*w1)^2/w3;w1.34 /(w1+w2+w3+w4+w5)^2-1.34 /.34 /(w1+w2+w3+w4+w5)^2-1.34 /w3=0 1-(w1+w2+w3+1/2*w4)^2/(w1+w2+w3+w4+w5)^2-1;(w1+w2+w3+w4+w5)^2-1;(w1+w2+w3+w4+w5)^2-1;w5.34 /w4=0 1-(w1+w2+w3+w4+1/(w1+w2+w3+w4+w5)^2-1, eq4;w5=0 我编的代码是;2*w5)^2/.34 /: 1-(1/2*w2)^2/.34 / eq2=1-(w1+1/.34 /(w1+w2+w3+w4+w5)^2-1;w4;w2; eq4=1-(w1+w2+w3+1/ eq3=1-(w1+w2+1/: syms w1 w2 w3 w4 w5;w2=0 1-(w1+w2+1/(w1+w2+w3+w4+w5)^2-1;2*w3)^2/2*w4)^2/, eq2, eq3求解的方程组如下;(w1+w2+w3+w4+w5)^2-1;2*w2)^2/ eq1=1-(1/(w1+w2+w3+w4+w5)^2-1; eq5=1-(w1+w2+w3+w4+1/ [w1 w2 w3 w4 w5]=solve(eq1;w1=0 1-(w1+1/2*w5)^2/2*w3)^2/

参考技术A   建议用解非线性方程组的方法求解,fsolve()函数,先设定初值,知道解的大致的范围后,再以此值为初值,在设定的精度下求解。
  用matlab解一道复杂的多元非线性方程组;
  参考如下:
  建立
Myfun.m
文件
  function
F
=
myfun(x,a)
  E
=
a(1);
  I
=
a(2);
  R0
=
a(3);
  R1
=
a(4);
  T
=
a(5);
  A
=
a(6);
  v
=
a(7);
  rho
=
a(8);
  F
=
[
(T
-
rho
*
A
*
v^2)
*
sin(x(3))
*
x(1)
-
(T
*
cos(x(3))
+
rho
*
A
*
v^2
-
rho
*
A
*
v^2
*
cos(x(3)))
*
x(2)
-
E*I/(R0
+
R1);
  (1/3)
*
(T
-
rho
*
A
*
v^2)
*
sin(x(3))
*
x(1)^3
-
(1/2)
*
(T
*
cos(x(3))
+
rho
*
A
*
v^2
-
rho
*
A
*
v^2
*
cos(x(3)))
*
x(2)
*
x(1)^2
-
E*
I
*
x(2);
  (T
-
rho
*
A
*
v^2)
*
sin(x(3))
*
x(1)^2
-
(T
*
cos(x(3))
+
rho
*
A
*
v^2
-
rho
*
A
*
v^2
*
cos(x(3)))
*
x(2)
*
x(1)
-
E*
I
*
x(3)];
  建立一个执行文件
  clc
  clear
  a
=
zeros(8);
  display('#
Pls
input
the
known
parameters:
#')
  a(1)
=
input('E
=
');
  a(2)
=
input('I
=
');
  a(3)
=
input('R0
=
');
  a(4)
=
input('R1
=
');
  a(5)
=
input('T
=
');
  a(6)
=
input('A
=
');
  a(7)
=
input('v
=
');
  a(8)
=
input('rho
=
');
  display('#
Pls
input
the
initial
point:
#')
  x0
=
zeros(3);
%
Make
a
starting
guess
at
the
solution
  x0(1)
=
input('x1
=
');
  x0(2)
=
input('y1
=
');
  x0(3)
=
input('phi
=
');
  options
=
optimset('Display','iter');
%
Option
to
display
output
  [x,fval]
=
fsolve(@(x)
myfun(x,a),x0,options)
%
Call
solver
  运行,输入已知的几个参数,再输入初始搜索点,即可。

matlab-fsolve函数求解多元非线性方程

记录一下代码,方便下次套用模板

options=optimset(‘MaxFunEvals‘,1e4,‘MaxIter‘,1e4);

[x,fval,exitflag] = fsolve(@(x) myfun1(x),[75;1.5],options)

function f = myfun1(x)
f=tan(x(1)*pi/180) - ( ( 1025*9.8*pi*x(2)/4-980 )/(0.625*4*(2-x(2))*24*24) );%有两个未知数x(1)和x(2),从参数里传进来
end
options理解成设定要求,精度范围,没有则默认,是多少问题不大。

[75;1.5]是x(1)和x(2)的初值,如果是同一个数不同初值则是[ 70 1;75 1.5 ],在初值附近找最优解。理解成:或许有多个最优解,如果初值不一样,最优解也不一样。非线性几乎都是近似解。至于初值怎么设置,结合问题分析,比如杆子靠墙的倾斜角度大约在60度以上,而不是十几二十度。

函数myfun1的求解情况是f=0。

fval表示误差,越小越好。

exitflag表示迭代退出条件,为1的时候最理想。

1 fsolve converged to a root.

2 Change in X too small.

3 Change in residual norm too small.

4 Computed search direction too small.

0 Too many function evaluations or iterations.

-1 Stopped by output/plot function.

-2 Converged to a point that is not a root.

-3 Trust region radius too small (Trust-region-dogleg).

最终求出来两个值,分别表示两个未知数x(1)和x(2)。

如果是多个方程,一般是有联系的,求出一个之后靠着关系求别的方程未知数。

 

以上是关于Matlab求解多元多次方程组的主要内容,如果未能解决你的问题,请参考以下文章

如何用matlab来求解多元一次现性方程

如何用matlab解多元非线性方程组

matlab解多元方程组?谢谢六元方程组

matlab怎么求多元一次方程组

怎么去解多元一次方程组快

怎样解多元一次方程组