怎么用matlab解如下的方程?

作者&投稿:称珊 (若有异议请与网页底部的电邮联系)
如何用matlab解 如下方程?~

clear
clc
syms iq ir p1 q1 u1 r x
f1=((p1-(p1^2+q1^2)*r/u1^2)/sqrt((u1+(p1*r+q1*x)/u1)^2+(p1*x-q1*r)^2/u1^2))-iq;
f2=((q1-(p1^2+q1^2)*x/u1^2)/sqrt((u1+(p1*r+q1*x)/u1)^2+(p1*x-q1*r)^2/u1^2))-ir;
[p1,q1]= solve(f1,f2,p1,q1)
你要的解没有意义。
两个解的解析表达式在word里占了a4纸100多页。
如果令iq=ir=0,解就简单的多。

matlab中解方程组还是很方便的,例如,对于代数方程组Ax=b(A为系数矩阵,非奇异)的求解,MATLAB中有两种方法:
(1)x=inv(A)*b — 采用求逆运算解方程组;

(2)x=A\B — 采用左除运算解方程组
PS:使用左除的运算效率要比求逆矩阵的效率高很多~
例:
x1+2x2=8
2x1+3x2=13
>>A=[1,2;2,3];b=[8;13];
>>x=inv(A)*b
x =
2.00
3.00
>>x=A\B
x =
2.00
3.00;
即二元一次方程组的解x1和x2分别是2和3。

对于同学问到的用matlab解多次的方程组,有符号解法,方法是:先解出符号解,然后用vpa(F,n)求出n位有效数字的数值解.具体步骤如下:
第一步:定义变量syms x y z ;
第二步:求解[x,y,z,]=solve('eqn1','eqn2',,'eqnN','var1','var2','varN');
第三步:求出n位有效数字的数值解x=vpa(x,n);y=vpa(y,n);z=vpa(z,n);。
如:解二(多)元二(高)次方程组:
x^2+3*y+1=0
y^2+4*x+1=0
解法如下:
>>syms x y;
>>[x,y]=solve('x^2+3*y+1=0','y^2+4*x+1=0');
>>x=vpa(x,4);
>>y=vpa(y,4);
结果是:
x =
1.635+3.029*i
1.635-3.029*i
-.283
-2.987
y =
1.834-3.301*i
1.834+3.301*i
-.3600
-3.307。
二元二次方程组,共4个实数根;

解答如下:
基本方法是:solve(s1,s2,…,sn,v1,v2,…,vn),即求表达式s1,s2,…,sn组成的方程组,求解变量分别v1,v2,…,vn。
具体例子如下:
x^2 + x*y + y = 3
x^2 - 4*x + 3 = 0
解法:
>> [x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3 = 0')
运行结果为
x =
1 3
y =
1 -3/2

即x等于1和3;y等于1和-1.5


>>[x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3= 0','x','y')
x =
1 3
y =
1 -3/2
结果一样,二元二方程都是4个实根。

通过这三个例子可以看出,用matlab解各类方程组都是可以的,方法也有多种,只是用到解方程组的函数,注意正确书写参数就可以了,非常方便。

2、变参数非线性方程组的求解
对于求解非线性方程组一般用fsolve命令就可以了,但是对于方程组中某一系数是变化的,该怎么求呢?

%定义方程组如下,其中k为变量
function F = myfun(x,k)
H=0.32;
Pc0=0.23;W=0.18;
F=[Pc0+H*(1+1.5*(x(1)/W-1)-0.5*(x(1)/W-1)^3)-x(2);
x(1)-k*sqrt(x(2))];

%求解过程
H=0.32;
Pc0=0.23;W=0.18;
x0 = [2*W; Pc0+2*H]; % 取初值
options = optimset('Display','off');
k=0:0.01:1; % 变量取值范围[0 1]
for i=1:1:length(k)
kk=k(i);
x = fsolve(@(x) myfun(x,kk), x0, options);%求解非线性方程组
x1(i)=x(1);
x2(i)=x(2);
end
plot(k,x1,'-b',k,x2,'-r');
xlabel('k')
legend('x1','x2')

4个未知数3个方程一般只能得到其中3个未知数关于另一个的表达式,只有在很特殊的情况下才可能完全确定其中两个未知数,很不幸你这个方程组不行。而且一般情况下其中任意两个的比值也不会是常数,但很幸运这个方程组任意两个未知数的比值都是常数。
将vout也视为已知量,vs、vd、vin视为未知量可以解除vs、vd和vin关于vout的表达式:
x=solve('gm*(vin-vs)+(vd-vs)*go-gmb*vs=-vd*go','-gm*vs+(vout-vs)*go-gmb*vs=-vout*go','-vd*go-vout*go=vs*go','vs,vd,vin')
解得:
x.vs=2*vout*go/(gm+go+gmb)
x.vd=-vout*(gm+3*go+gmb)/(gm+go+gmb)
x.vin=4*vout*go*(gm+2*go+gmb)/gm/(gm+go+gmb)
显然vs和vd不是确定的数(倘若是确定的,那么无论vout取何值,得到的结果都一样,但显然不是)
但可以求得vout与vin的比值
voutbyvin=vout/x.vin
解得
voutbyvin =1/4/go/(gm+2*go+gmb)*gm*(gm+go+gmb)

lz啊,求解电路方程有必要用matlab么。。考试怎么办啊。学会手工解算才是正道。飘过。

使用迭代,逐步逼近


用matlab如何求解微分方程并画图?
如何用matlab求解微分方程并画图,可以先用dsolve()或ode()求出其微分方程(组)的解析解或数值解,然后用plot()绘制其图形。例如:解微分方程 y'=y-2t\/y,y(0)=1,0<t<4 1、用dsolve()求解,代码及结果如下 2、用ode45()求解,代码及结果如下 3、当然喽,使用dsolve()或ode(...

如何用matlab求解微分方程并画图
1、找到关于求解常微分方程的习题。2、这里用matlab求解,主要用到的就是“dsolve”,具体的格式如下,但是不仅仅局限下面两种,其中eq就是代表方程式,而con为初始条件。3、这里的“x”关于x的函数。知道语法就可以进行计算了。4、在matlab中输入如下,dsolve('D2y+2*Dy+exp(x)=0','x'),并直接...

如何用matlab求方程的所有整数解
如何用matlab求方程的所有整数解?其解决方案,可以通过下列途径解决:方法一、利用三循环语句和判断语句,求解其所有整数解 方法二、整数线性规划分支定界法,求解其所有整数解 下面按第一种方法求解,其过程为 m=50;n=50;l=50;disp('满足条件:2x+3y+4z=100的解')for i=1:m for j=1:n for...

用matlab解方程
【1】可以用dsolve()函数求得,其解析值。然后再用plot()函数绘制t~x(t),t~y(t)的图像。实现代码 syms x(t) y(t)Dx=diff(x,1);Dy=diff(y,1);[x,y]=dsolve(Dx==2*x+3*y,Dy==2*x+y,x(0)==-2.7,y(0)==2.8);t=0:0.1:10;x=eval(x);y=eval(y);plot(t...

如何用matlab 求解高阶方程?
用roots(p)函数求解 其中p是方程的各次方的系数组成的矩阵 比如 你这道题的求根程序为: roots(p)matlab运行后的结果为:ans =10.3180 4.0487 1.8166 + 1.3141i 1.8166 - 1.3141i 如何用MATLAB求解LOGISTIC方程 至于Lyapunov方程的求解,你可以查下,下面我编写的一个帖子,里面详细说明了Lyapunov方程该如何使用Matlab求...

如何使用MATLAB解非线性方程组
用solve函数。例如:x^2+y^3=10 x^3-y^2=1 其中x,y为方程组的未知量 在Matlab的命名窗口中输入:syms x y [x y]=solve('x^2+y=10','x^2-y^2=1','x','y')输出计算结果为:x = (37^(1\/2)\/2 + 21\/2)^(1\/2)(21\/2 - 37^(1\/2)\/2)^(1\/2)-(21\/2 - 1\/2*...

请问老师这个题用matlab怎么做?
题主给出的二阶微分方程组,用matlab求解其精确解和数值解,可以使用dsolve()函数得到其解析值,使用ode()函数得到其数值解。一、使用dsolve()函数求解 第一步,对x(t)、y(t)进行声明变量,即 syms x(t) y(t)第二步,使用diff()函数分别对x(t)、y(t)进行导数计算 Dy=diff(y,t,1...

如何用matlab解方程
一般用matlab求解方程有两种方法:1、用软件自带的solve()函数、fsolve()函数、roots()函数等;2、利用数值分析的方法(如二分法,牛顿法等)自行编程其数值函数。所以,要根据具体的方程形式来选择合适的求解函数。请给以把具体的方程贴出来,以便于帮助你。

请问如何使用MATLAB解如下公式?
求解此类方程,可以fsolve()函数求解。求解方法:1、用句柄函数自定义函数 func=@(x)[表达式1,表达式2] %注意,表达式1中不能含有等号(‘=’),用x(1)代表r1,x(2)代表r2 2、设定初值,x0=[?,?]3、求解,[x,fval] = fsolve(func,x0)

如何用matlab解方程
fsolve('fc',[10 10 10 10],optimset('TolCon',1e-15,'TolFun',1e-22,'MaxIter',1e8,'MaxFunEvals',1e12,'TolX',1e-10));vpa(ans,4)结果:ans = -2509.-1727..1150e7 .4911e-2 这是个数值解,改变初值结果会有变化,这可能是因为精度的问题。没办法,这是数值解法的缺陷。

前郭尔罗斯蒙古族自治县19285015361: matlab要怎么解方程组 -
滑诗里尔: 比如解一道一元高次非线性方程,我们一般的解法是先确定方程的解所在的大致范围,然后用牛顿迭代法来算,很复杂. 这里我介绍用matlab来解方程,一个命令即可轻松得出方程的所有解. 工具/原料Matlab 解一元方程1 先举一例,解方程"x^2+100*x+99=0" 在matlab ”Command Window"中输入如下命令: x=solve('x^2+100*x+99=0','x') 见下图2 回车后,matlab就求出了这个一元二次方程的解.

前郭尔罗斯蒙古族自治县19285015361: 求助:如何用MATLAB解出下面的方程. -
滑诗里尔: clc;clear f='2185.65*(1-x^3*(0.25+x^2)^(-3/2))+28.67*((1.1*x+1.21*atan(1.1/x)+x^2*atan(1.1/x))/(1.21+x^2))-1.83*x' ezplot(f,[-100 100]),grid x=fzero(f,9) 结果:x = 9.11523183213223

前郭尔罗斯蒙古族自治县19285015361: 如何用matlab解出此二元二次方程组?程序怎么写 -
滑诗里尔: 1、首先看一下matlab求解方程的方法,指明所解方程的变量,然后指明方程,未知数和限制条件,最后求解方程. 2、来求解sin(x)=1方程,在matlab命令行窗口中输入symsx [x,params,conds]=solve (sin(x)==1,'ReturnConditions', true) ,按回...

前郭尔罗斯蒙古族自治县19285015361: Matlab解一元一次方程如何用matlab解如下一元一次方程50/(6.5 - 0.662*ln(t - 300))=(350 - t)/(3.85 - 0.662*ln(t - 300)) -
滑诗里尔:[答案] solve('50/(6.5-0.662*ln(t-300))=(350-t)/(3.85-0.662*ln(t-300))','t') ans = 331.41352793966978333486785102259

前郭尔罗斯蒙古族自治县19285015361: 求怎么用matlab解这个方程 -
滑诗里尔: 一般用matlab求解方程有两种方法:1、用软件自带的solve()函数、fsolve()函数、roots()函数等;2、利用数值分析的方法(如二分法,牛顿法等)自行编程其数值函数.所以,要根据具体的方程形式来选择合适的求解函数.请给以把具体的方程贴出来,以便于帮助你.

前郭尔罗斯蒙古族自治县19285015361: 用matlab解如下字母表示的方程组,该怎么输入 -
滑诗里尔: 举个简单例子,解方程组 x+A*y=10 x-B*y=1 其中x,y为变量,A,B为字母系数. 只要在Matlab中输入 syms x,y,A,B [x y]=solve('x+A*y=10','x-B*y=1','x','y') 即可求出解 x =(A + 10*B)/(A + B)y =9/(A + B)对于函数solve的具体用法,可以通过输入help solve来学习.希望我的回答能够解决您的疑问,.

前郭尔罗斯蒙古族自治县19285015361: 如何使用matlab解方程 -
滑诗里尔: >> solve('x^2+3^x=5','x') Warning: Warning, solutions may have been lost ans =1.1723846224617540549310776747181 直接用这命令就行,格式是括号里面左边是方程,右边是待求的未知数

前郭尔罗斯蒙古族自治县19285015361: matlab的simulink如何解方程? -
滑诗里尔: 首先要明确,simulink的作用为求解常微分方程(组)!且这是他唯一的作用!也就是说偏微分方程在simulink中是无法求解的,需要其他工具或软件作为接口.Dx=diff(A,n,dim)计算数值微分 用dsolve(''表达式1','表达是',...,'表达式n','初始值','独立变量'); 也可以用ode23或者ode45函数计算. 要查函数调用格式可以在matlab workspace输入>>help ode23即可.

前郭尔罗斯蒙古族自治县19285015361: matlab解方程? -
滑诗里尔: 题主给出的方程属于电学范畴的一阶网络电路微分方程,如何求解可以按下列方法实现.1、首先对I(t)进行声明变量,即 syms I(t)2、其二再对L(电感)、R(电阻)、C(电容)进行声明变量,即 syms L R C3、其三对 I(t)求导,即 Di=diff(I,t,1)4、其四使用dsolve函数求解其解析表达式 I=dsolve(L*Di+R*I+int(I,0,t)/C==sign(sin(t)),I(0)==0)5、最后使用pretty函数化简I(t)表达式 pretty(I) 运行上述代码,可以得到如下结果

前郭尔罗斯蒙古族自治县19285015361: MATLAB如何求解三元一次方程组?比如方程组如下:x+y+z=1x+2y+z=2z+y - z=0如何使用MATLAB求解方程组的根? -
滑诗里尔:[答案] s=solve('x+y+z=1','x+2*y+z=2','x+y-z=0','x,y,z'); result=[s.x,s.y,s.z]

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网