新手请问各位两个问题,我要计算一个公式,solve('0.4344=0.137*(((1/((1.8*0.04*1288000*22690/101325)^(1/3)))*R2)^(-3))+0.119*(((1/((1.8*0.04*1288000*22690/101325)^(1/3)))*R2)^(-2))+0.269*(((1/((1.8*0.04*1288000*22690/101325)^(1/3)))*R2)^(-1))-0.019','R2')
得有个实数解
ans =
29.934559206792667225627167242478
12.774860893952848509791821512912*i - 6.8134271305574008465827768101389
- 12.774860893952848509791821512912*i - 6.8134271305574008465827768101389
但是书上写的解得的是299.34,用这函数为什么会有10倍的差距?
第二个问题,式子中1288000这个是个变量,我要计算很多组数据,我想用数组和循环来算,这样写
syms a(1) R2 eq
a(1)=1288000;
eq=0.137*(((1/((1.8*0.04*a(1)*22690/101325)^(1/3)))*R2)^(-3))+0.119*(((1/((1.8*0.04*a(1)*22690/101325)^(1/3)))*R2)^(-2))+0.269*(((1/((1.8*0.04*a(1)*22690/101325)^(1/3)))*R2)^(-1))-0.019-0.4344;
S=solve(eq,R2)
就会出错,请问用什么方法解决好,用循环后我想把结果得到的实数解存到另一个数组中请问怎么操作才好。
不胜感激
matlab中solve函数传递变量参数的问题
答案:2 悬赏:40
解决时间 2021-02-03 05:21
- 提问者网友:多余借口
- 2021-02-02 14:13
最佳答案
- 二级知识专家网友:伤口狠精致
- 2021-02-02 15:44
可以使用subs函数: 1 2 3 4 5 6 7 >> subs(s.c1) ans = (x1*dq(1) + 800)/(dq(1) + 1000) >> subs(s.c2) ans = (800*b(1) + x2*dq(2) + x1*b(1)*dq(1))/(dq(1) + dq(2) + 1000) 但这样带来的问题是,数组的元素无法带入,例如dq(1)、dq(2)等。可以进一步指定要代入的符号变量,例如 1 2 3 >> subs(subs(s.c1),'dq(1)',dq(1)) ans = x1/201 + 160/201 但这种做法对于类似s.c2的表达式里面有多个数组元素的情况,就会非常繁琐,关于这一点,我没有好的办法,希望有高手能指教。
全部回答
- 1楼网友:不服输的倔强
- 2021-02-02 15:59
subs 应该可以用的吧
clear;clc
a1=2;
a2=5;
a3=1;
b1=1;
b2=-1;
b3=-1;
c1=1;
c2=1;
c3=1;
a=solve('a1*x+a2*y+a3*z=13','b1*x+b2*y+b3*z=-2','c1*x+c2*y+c3*z=4','x','y','z')
subs([a.x,a.y,a.z])
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |