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求解多元多次方程组的主要内容,如果未能解决你的问题,请参考以下文章