Matlab求解多元多次方程组

Posted

tags:

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

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

为什么一直都是busy……

参考技术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
  运行,输入已知的几个参数,再输入初始搜索点,即可。
参考技术B 一般是因为方程不收敛导致的

你试一下数值解法

matlab——符号方程求解

符号方程求解

代数方程符号求解

在MATLAB中,求解用符号表达式表示的代数方程可由函数
solve()实现,其调用格式为:
① solve(s):求解符号表达式s的代数方程,求解变量为
默认变量。
② solve(s,v):求解符号表达式s的代数方程,求解变量
为v。
③ solve(s1,s2,…,sn,v1,v2,…,vn):求解符号表达式
s1,s2,…,sn组成的代数方程组,求解变量分别为v1,
v2,…,vn。

例1 解方程
ax^2+bx+c=0

>> syms x y a b c; 
%方法1
>> solve(a*x^2+b*x+c==0)
ans =
-(b + (b^2 - 4*a*c)^(1/2))/(2*a)
-(b - (b^2 - 4*a*c)^(1/2))/(2*a)
%方法二
>> f=a*x^2+b*x+c
>> solve(f)
ans =
-(b + (b^2 - 4*a*c)^(1/2))/(2*a)
-(b - (b^2 - 4*a*c)^(1/2))/(2*a)

注意:solve()函数求解方程时,所得到的结果不一定准确。
如果不正确,转化后在求解

>> syms x y;
>> [u,v]=solve(x+y==98,x^(1/3)+y^(1/3)==2)
u =
Empty sym: 0-by-1
v =
Empty sym: 0-by-1

转化过后,再解方程:

>> syms x y;
>> u=solve(x+(2-x^(1/3))^3==98)
u =
125
>> v=98-u
v =
-27

常微分方程符号求解

 在MATLAB中,用大写字母D表示导数。例如,Dy表示y',D2y表示y'',
Dy(0)=5表示y'(0)=5。D3y+D2y+Dy-x+5=0表示微分方程y'''+y''+y'-x+5=0。
 符号常微分方程求解可以通过函数dsolve()函数来实现,其调用格式为:
dsolve(e,c,v)
用于求解常微分方程e在初值条件c下的特解。参数v是方程中的自变量,省
略时按默认原则处理,若没有给出初值条件c,则求方程的通解。
 dsolve在求常微分方程组时的调用格式为:
dsolve(e1,e2,…,en,c1,c2,…,cn,v)
用于求解常微分方程组e1, e2, …, en在初值条件c1, c2, …, cn下的特解,若不
给出初值条件,则求方程组的通解。v给出求解变量,如果没有指定自变量则采用默认自变量t。

>> syms x y t;
>> y=dsolve('Dy-(x^2+y^2)/x^2/2',x)
y =
x
-x*(1/(C5 + log(x)/2) - 1)
>> [x,y]=dsolve('Dx=4*x-2*y','Dy=2*x-y',t)
x =
C8/2 + 2*C7*exp(3*t)
y =
C8 + C7*exp(3*t)

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

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

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

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

matlab怎么求多元一次方程组

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

怎样解多元一次方程组