www.5615.net > solvE在mAtlAB中的作用

solvE在mAtlAB中的作用

把solve中的引号去掉就好,加引号代表string函数,x,y将以r,s符号表示,所以无法对其赋值改后调用[ISp,ISn]=paper_IS1(2,3)结果显示:ISp =[ 4.75, 4.30*i]ISn =[ 4.75, -4.30*i]

vpa(int(b/(y-x)^2+a/(y-x)^2+b,c,a))+9=0你的高阶多项式是这样的?肯定有问啊.

单引号里的东西是代表字符本身,系统不会认为它是一个变量或者数组名.solve('temp=1','p11')只会认为temp是要求解的未知量,结果是1,而你又要得到p11这个表达式里没有的东西,当然不可以咯.很简单,你把单引号去掉就可以了哦,此时等号也要去掉(右边默认为0)

solve的参数必须是符号函数,你的eq1,2,3的确是符号函数,可你加了"==0"就变成了判断是否等于0了,即结果是逻辑值0或1,所以出现 conversion to char from logical is not possible.(不能将逻辑值转换为字符)的错误提示.要计算式可以

clear;clc;syms H Sc=4.4545[H,S]=solve(H==(5-0.514+0.00659*S+2.014*log10(S+10))/1.5,H==c)fprintf(1,'H=%f\nS=%f\n',H,S)

错在这句,[c1,c2,c3]=solve('diff(n,c1)','diff(n,c2)','diff(n,c3)'),因为软件认为diff(n,c1)只是一个变量符号,所以造成程序出错.正确用法应该这样来处理,eq1=diff(n,c1);eq2=diff(n,c2);eq3=diff(n,c3);[c1,c2,c3]=solve(eq1,eq2,eq3)经运行,得到结果是无解,即无解析解.所以在这里用solve是不合适的,但可以用数值方法来求解.如拟牛顿法求解非线性方程c1 = -1049.030130 c2 =1057.363644c3 =5541.813541n=486.5147

Warning: Explicit solution could not be found.这句话的意思是不能找到精确解,也就是matlab里面solve函数的内部算法对于你这个方程组不适用,所以你这个方程组不能用solve求解而且,观察你的三个方程,显然是无解的,第一式除以第二式可以得出exp(K0)=533.34/534.48第二式除以第三式可以得出exp(K0)=534.48/566.03显然满足条件的K0不存在.另外你的方程里面有表达式(1+Xm/X0-1),为什么不直接写Xm/X0呢?是(X0-1)少了括号?

这是由于matlab里面有个关于默认自变量规定问题 一般情况下默认自变量为表达式中距离x最近的字母 你可以用这种方法来求解 [x0]=solve('2600*(z0+15)=(z0-24985)*x1') [z0]=solve('2600*(z0+15)=(z0-24985)*x1') 由于上两行行中只有x1与z0两个变量,而且x1与x较近,所以是求解x1 为了求解z0,可以用 [z0]=solve('2600*(z0+15)=(z0-24985)*x1','z0') 这样的话就没问题了 建议你指定代求变量 相关函数 findsym 查找自变量,比较有用

你将T0转化成字符串干什么?不知道你还有其他特殊的用途没有,我的理解就是你想解T0*(0.9)^x== 1e-30,这个用solve直接代进去解就可以了syms xTime=solve(T0*(0.9)^x== 1e-30,x)如果你想了解solve的用法,用matlab的帮助文件查看一下,matlab的帮助文件还是很强大的,祝好!

在MATLAB中,由函数dsolve()解决常微分方程(组)的求解问题,其具体格式如下: r = dsolve('eq1,eq2,', 'cond1,cond2,', 'v') 'eq1,eq2,'为微分方程或微分方程组,'cond1,cond2,',是初始条件或边界条件,'v'是独立变量,默认的独立变量是't'. 函数dsolve用来解符号常微分方程、方程组,如果没有初始条件,则求出通解,如果有初始条件,则求出特解.

网站地图

All rights reserved Powered by www.5615.net

copyright ©right 2010-2021。
www.5615.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com