matlab用solve解方程组,解出来有很多组解,如何编程只保留全部未知数都大于0的一组解(该方

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab用solve解方程组,解出来有很多组解,如何编程只保留全部未知数都大于0的一组解(该方相关的知识,希望对你有一定的参考价值。

matlab用solve解方程组,解出来有很多组解,如何编程只保留全部未知数都大于0的一组解(该方程组有且只有一组解都大于0)
clear
clc
syms V1 V2 V3 Vges
formel= 'Vges=V1+V2+V3';
formel1='4=0.36+0.313046*V1^2+0.083932*Vges^2';
formel2='4=0.66+0.313046*V2^2+0.083932*Vges^2+0.016782*(Vges-V1)^2';
formel3='4=0.96+0.396033*V3^2+0.083932*Vges^2+0.016782*(Vges-V1)^2';
[V1,V2,V3,Vges]=solve(formel1,formel2,formel3, formel,'Real',true);
V1=vpa(V1,4)
V2=vpa(V2,4)
V3=vpa(V3,4)
Vges=vpa(Vges,4)
以上为该程序,但是这只是一个简单的方程组,我想知道具体的方法,因为我做的东西到后来还有更复杂的更多个方程组的问题,希望各位大神多多支持

参考技术A 一:V1 = double(V1); V2 = double(V2); V3 = double(V3); Vges = double(Vges);
二:ind = find(V1>0&V2>0&V3>0&Vges>0);
三:V1_end = V1(ind); V2_end = V2(ind); V3_end = V3(ind); Vges_end = Vges(ind);
参考技术B 看看fsolve的源代码:>>typefsolvefunction[x,FVAL,EXITFLAG,OUTPUT,JACOB]=fsolve(FUN,x,options,varargin)%FSOLVEsolvessystemsofnonlinearequationsofseveralvariables.%%FSOLVEattemptstosolveequationsoftheform:%%F(X)=0whereFandXmaybevectorsormatrices.%%X=FSOLVE(FUN,X0)startsatthematrixX0andtriestosolvethe%equationsinFUN.FUNacceptsinputXandreturnsavector(matrix)of%equationvaluesFevaluatedatX.%%X=FSOLVE(FUN,X0,OPTIONS)solvestheequationswiththedefaultoptimization%parametersreplacedbyvaluesinthestructureOPTIONS,anargument%createdwiththeOPTIMSETfunction.SeeOPTIMSETfordetails.Used%optionsareDisplay,TolX,TolFun,DerivativeCheck,Diagnostics,%FunValCheck,Jacobian,JacobMult,JacobPattern,LineSearchType,%NonlEqnAlgorithm,MaxFunEvals,MaxIter,PlotFcns,OutputFcn,%DiffMinChangeandDiffMaxChange,LargeScale,MaxPCGIter,%PrecondBandWidth,TolPCG,andTypicalX.UsetheJacobianoptionto%specifythatFUNalsoreturnsasecondoutputargumentJthatisthe%JacobianmatrixatthepointX.IfFUNreturnsavectorFofm%componentswhenXhaslengthn,thenJisanm-by-nmatrixwhereJ(i,j)%isthepartialderivativeofF(i)withrespecttox(j).(Notethatthe%JacobianJisthetransposeofthegradientofF.)%%X=FSOLVE(PROBLEM)solvessystemdefinedinPROBLEM.PROBLEMisa%structurewiththefunctionFUNinPROBLEM.objective,thestartpoint%inPROBLEM.x0,theoptionsstructureinPROBLEM.options,andsolver%name'fsolve'inPROBLEM.solver.Usethissyntaxtosolveatthe%commandlineaproblemexportedfromOPTIMTOOL.ThestructurePROBLEM%musthaveallthefields.%% 参考技术C 我用其他软件的,应该会有一个选择条件的,可以筛选结果,
然后显示出来追问

什么软件能解26元2次方程组吗

追答

    好像这个  MATLAB就是最好的了吧

matlab solve函数的用法

  solve函数常用于求解符号函数的解析解,方程组的解等

1.solve求解析解

syms x y
q=‘x+y=3‘;
w=solve(q,‘x‘);% 解函数q关于x的解析解

同样可以写成 solve(‘x+y=3‘,‘x‘);
但是这样的话就没法给y赋值了,所以使用 subs函数

y=3;

subs(w);%这一步也可以写为 subs(w,‘y‘,3)

2.solve解单变量方程

syms x

eqn=sin(x)==1;

solve(eqn,x)

%比如上面的例子,x的取值是可以写为一个通解的,那就可以用下面的形式

syms x
eqn=sin(x)==1;
[solx,params,conds]=solve(eqn,x,‘ReturnConditions‘,true)

这段代码的matlab运行结果是

solx =pi/2 + 2*pi*k

params =k

conds =in(k, ‘integer‘)

%显然这里面params是结果里面的参数,而conds是结果中参数的取值,in是输入的意思,intger是整数

%这里如果上面直接是s=solve的话,那就相当于建立了一个s对象,它的结果就是s.x,条件是s.comdtion

3.求解多变量方程

%如果不指明的话,solve函数就会通过symvar选择一个变量(认为该变量是要求解的变量)
clc,clear
syms a b c x
sola=solve(a*x^2+b*x+c==0,a)   %待求解的变量是a
sol=solve(a*x^2+b*x+c==0)  %待求解的变量是x

%当求解的变量大于1个时,你声明变量的顺序就是slove返回解的顺序
syms a b
[b,a]=solve(a+b==1,2*a-b==4,b,a)

 

 

 

以上是关于matlab用solve解方程组,解出来有很多组解,如何编程只保留全部未知数都大于0的一组解(该方的主要内容,如果未能解决你的问题,请参考以下文章

matlab中牛顿法编程

matlab的solve函数限定解的范围

MATLAB 中如何用solve函数解数目不定的方程组???

matlab的solve用法

MATLAB用fsolve解方程

跪求 matlab 解方程组问题