当前位置:首页>开发>正文

vap在matlab中是什么意思 matlab solve函数变量问题

2023-07-16 04:05:03 互联网 未知 开发

 vap在matlab中是什么意思 matlab solve函数变量问题

vap在matlab中是什么意思

matlab控制运算精度用的是digits和vpa这两个函数
digits用于规定运算精度,比如:
digits(20)
这个语句就规定了运算精度是20位有效数字。
但并不是规定了就可以使用,因为实际编程中,可能有些运算需要控制精度,而有些不需要控制。vpa就用于解决这个问题,凡是用需要控制精度的,我们都对运算表达式使用vpa函数。例如:
digits(5)
a=vpa(sqrt(2))
这样a的值就是1.4142,而不是准确的1.414213562373095048801688724209又如:
digits(5)
a=vpa(sqrt(2))
b=sqrt(2)

这样a的值是1.4142,b没有用vpa函数,所以b是1.4142135623730950488016887242097......

vpa函数对其中每一个运算都控制精度,并非只控制结果。
digits(11)
a=vpa(2/3 4/7 5/9)
b=2/3 4/7 5/9
a的结果为1.7936507936,b的结果为1.793650793650794......也就是说,计算a的值的时候,先对2/3,4 /7,5/9这三个运算都控制了精度,又对三个数相加的运算控制了精度。而b的值是真实值,对它取11位有效数字的话,结果为1.7936507937,与a不同,就是说vpa并不是先把表达式的值用matlab本身的精度求出来,再取有效数字,而是每运算一次,都控制精度。

matlab solve函数变量问题

没看到x和y根本就没解出来么,
Warning: Explicit solution could not be found.
警告:显式解未找到。
_____________________________
matlab不是万能的,人没办法解matlab当然也没法解,就算数组代入也还是解不了的。
solve有两种用法,一种是像你这样用字符串作为参数,在这种情况下字符串被整体传到函数内,不会自动将已定义的内容代到字符串内。因此必须手动拼接字符串,用num2str将数字转换为字符串,再和其他字符串接到一起成为一个整体,再传给solve,比较麻烦。第二种是输入符号表达式,这样比较简单,下面我用这种方法给出你的问题的写法,但是即使数组被传入了,solve依然解不出显式解,这不是我个人所能解决的。

clc
P=[0.9110 0.6777 0.7706 ]
D=[2.656E 09 7.968E 10 2.656E 10]
syms x y
[x,y]=solve(y*log((x D(3))/(x D(1)))/log(10)-(P(1)-P(3)),y*log((x D(3))/(x D(2)))/log(10)-(P(2)-P(3)),x,y)
%xx=solve(y*log((x 2.656E 10)/(x 2.656E 09))/log(10)=(0.9110-0.7706),y*log((x 2.656E 10)/(x 7.968E 10))/log(10)=(0.6777-0.7706))
x=subs(x)
y=subs(y)
De=x
C=y
A=P(3) C*log(1 D(3)/De)/log(10)

还有我想说,solve一般用于求解析解,数值解并不擅长,求数值解还是用fsolve比较合适。
___________
大概版本不一样,反正我的没求出来。

matlab中solve解方程组

原发布者:fukbsne5734matlab解方程组lnx表示成log(x)而lgx表示成log10(x)1-exp(((log(y))/x^0.5)/(x-1))1、解方程最近有多人问如何用matlab解方程组的问题,其实在matlab中解方程组还是很方便的,例如,对于代数方程组Ax=b(A为系数矩阵,非奇异)的求解,MATLAB中有两种方法:(1)x=inv(A)*b—采用求逆运算解方程组; (2)x=AB—采用左除运算解方程组PS:使用左除的运算效率要比求逆矩阵的效率高很多~例:x1 2x2=82x1 3x2=13>>A=[1,22,3]b=[813]>>x=inv(A)*bx=2.003.00 >>x=ABx=2.003.00;即二元一次方程组的解x1和x2分别是2和3。对于同学问到的用matlab解多次的方程组,有符号解法,方法是:先解出符号解,然后用vpa(F,n)求出n位有效数字的数值解.具体步骤如下:第一步:定义变量symsxyz...第二步:求解[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=0y^2 4*x 1=0解法如下:>>symsxy>>[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*i1.635-3.029*i-.283-2.987y=1.834-3.301*i1.834 3.301*i-.3600-3.307。二元二次方程组,共4个实数根;还有的同学问,如何用matlab解高次方程组(非符号方程组)?举个例子好吗?解答如下:基本方法是:solve(s1,s2,…,sn,v1,v2,…,vn),即求表达式s1,s2,…,sn组

最新文章