24小时热门版块排行榜    

查看: 1249  |  回复: 8

chuzhenhui

金虫 (小有名气)

[交流] 【求助】请教一个关于解方程的问题已有3人参与

问题描述:

在做一个gui程序,需要根据输入的数值,进行相应的计算。比如这样一个方程:

y=(w*c*k*x)/((1-k*x)*(1-k*x+c*k*x))

其中w,c,k,y为常数,x是变量。程序需要根据w,c,k,y的输入,代入方程中计算x的值,后面程序再用x进行其他的运算。

假如输入的常数分别是:w=0.0378;c=9.992;k=0.9247;y=0.026,我这么编:

w=0.0378;c=9.992;k=0.9247;y=0.026;

x=solve('(w*c*k*x)/((1-k*x)*(1-k*x+c*k*x))-y');

-------------------------
matlab出现错误如下:

??? Error using ==> solve>getEqns at 182
' w1*c1*k1*awi)/((1-k1*awi)*(1-k1*awi+c1*k1*awi))=in ' is not a valid expression or equation.

Error in ==> solve at 67
[eqns,vars] = getEqns(varargin{:});

Error in ==> solvetest at 3
solve('w1*c1*k1*awi)/((1-k1*awi)*(1-k1*awi+c1*k1*awi))=in');
-----------------------------------------------------------------------------------
直接用输入的数字代入方程,用solve是可以算出来的,x值有两个解,我要取正解。但是像以上的程序,先对符号赋值,再用符号代入方程中用solve就不能用了。

我想解决的就是如果要算以上方程中的x,我应该用什么方法?这样用solve和fsolve都不行。望大侠赐教!谢谢~~~
回复此楼
找到自己。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

robert2020

银虫 (著名写手)

★ ★
ctgu_zheng(金币+2):辛苦了。。。 2010-10-12 07:52:23
chuzhenhui(金币+6):多谢!! 2010-10-12 15:04:01
求解程序:
引用回帖:
clear all
syms x
w=0.0378;c=9.992;k=0.9247;y=0.026;
f=(w*c*k*x)/((1-k*x)*(1-k*x+c*k*x))-y;
x=vpa(solve(f))

验证程序:
引用回帖:
solve('0.026-(0.0378*9.992*0.9247*x)/((1-0.9247*x)*(1-0.9247*x+9.992*0.9247*x))=0')

结果:
引用回帖:
x =

-.926322075415857
  .140404159021461

Truthfulness,Compassion,Tolerance,Beauty
2楼2010-10-11 22:18:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijinfeng042

木虫 (小有名气)

Matlab


hiqun(金币+1):感谢应助,辛苦了 2010-10-12 13:58:42
chuzhenhui(金币+4):多谢!! 2010-10-12 15:04:13
CODE:
>> [result,status] = evalin(symengine,'w:=0.0378;c:=9.992;k:=0.9247;y:=0.026;solve((w*c*k*x)/((1-k*x)*(1-k*x+c*k*x))-y)')

result =

[ [x = 0.14040415902146110092877008088218], [x = -0.92632207541585789273828437767426]]


status =

     0

方法还有不少 符号计算subs代换也可以 vpa的内部也是调用了计算引擎mupadengine
工作了,偶尔会上来~可以关注新浪微博 @云是风的梦_Matlab
3楼2010-10-12 13:50:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chuzhenhui

金虫 (小有名气)

引用回帖:
Originally posted by robert2020 at 2010-10-11 22:18:04:
求解程序:


验证程序:


结果:

多谢指教,如果我要取x>0 的解,怎么弄?有专门设定方程解范围的函数可以用吗。。直接设定x>0好像不可以,我用y=max(x)也不行,请再指导一下吧,谢谢!
找到自己。
4楼2010-10-12 17:00:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chuzhenhui

金虫 (小有名气)

引用回帖:
Originally posted by lijinfeng042 at 2010-10-12 13:50:45:
[code]

>> [result,status] = evalin(symengine,'w:=0.0378;c:=9.992;k:=0.9247;y:=0.026;solve((w*c*k*x)/((1-k*x)*(1-k*x+c*k*x))-y)')

result =

[ [x = 0.14040415902146110092877008088218] ...

谢谢指导,这个方程解出来的x值是中间值,我后面的程序中还要调用x值,我要的是x的正解,怎么弄啊,想了一些办法,行不通。。。希望大侠再指导下!谢谢

[ Last edited by chuzhenhui on 2010-10-12 at 17:07 ]
找到自己。
5楼2010-10-12 17:04:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chuzhenhui

金虫 (小有名气)


nono2009(金币+1):鼓励分享。 2010-10-13 06:20:34
我暂时解决了,主要是因为x是sym型数据,我整成double型,再用 y=max(x)就可以得到x>0的解了,但这个方法有点投机,如果x有两个以上大于0的解,这样就行不通了,所以还是要请教正统的解决方法。
找到自己。
6楼2010-10-12 17:16:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

robert2020

银虫 (著名写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
x=[-1 -2 -3 4 2 4 0];
m=find(x>0);
x(m)

7楼2010-10-12 17:38:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijinfeng042

木虫 (小有名气)

Matlab

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
hiqun(金币+1):感谢应助 2010-10-13 16:18:48
引用回帖:
Originally posted by chuzhenhui at 2010-10-12 17:16:29:
我暂时解决了,主要是因为x是sym型数据,我整成double型,再用 y=max(x)就可以得到x>0的解了,但这个方法有点投机,如果x有两个以上大于0的解,这样就行不通了,所以还是要请教正统的解决方法。

就是直接加个>0的条件 assuming>0
CODE:
>> result= evalin(symengine,'w:=0.0378;c:=9.992;k:=0.9247;y:=0.026;solve((w*c*k*x)/((1-k*x)*(1-k*x+c*k*x))-y) assuming x>0') result = [x = 0.14040415902146110092877008088218]

工作了,偶尔会上来~可以关注新浪微博 @云是风的梦_Matlab
8楼2010-10-13 14:16:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chuzhenhui

金虫 (小有名气)

就是直接加个>0的条件 assuming>0

[code]>> result= evalin(symengine,'w:=0.0378;c:=9.992;k:=0.9247;y:=0.026;solve((w*c*k*x)/((1-k*x)*(1-k*x+c*k*x))-y) assuming x>0') result = [x  ... [/quote]

非常谢谢,又多了一些知识,关于这块我自己也再去捣鼓捣鼓!
找到自己。
9楼2010-10-18 15:18:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 chuzhenhui 的主题更新
普通表情 高级回复(可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[论文投稿] 你的学校职称晋升认CSCD吗? +3 wowsunflower 2024-09-26 3/150 2024-09-29 03:20 by lyd782
[考博] 请问大家,我有希望进浙大普博么 +5 高艺文 2024-09-28 8/400 2024-09-29 00:08 by 小红豆
[论文投稿] applied catalysis B 投稿模版 5+4 午后夏日 2024-09-27 5/250 2024-09-28 22:59 by 莱茵润色
[硕博家园] 希望有师兄师姐帮忙引荐申博 +6 zhanyaqian 2024-09-25 11/550 2024-09-28 22:24 by 自强2019
[教师之家] 东南大学电气学院电力电子方向招收硕士博士 +4 蜡笔小鑫1989 2024-09-26 7/350 2024-09-28 21:16 by 伍文童
[教师之家] 开心!国庆前发个小财~ +15 zjjxzh 2024-09-26 15/750 2024-09-28 19:54 by bear2007
[电化学] 刚装好的电池电压掉很快怎么解决?? +3 花花你最棒 2024-09-26 6/300 2024-09-28 08:20 by cnofc
[基金申请] 广东省基金 +5 yingyueabc 2024-09-22 5/250 2024-09-27 22:57 by FengjiangLiu
[考博] 材料/电信/生物-2025普博生自荐-985本双非硕一区一作 +4 enowei0127 2024-09-23 8/400 2024-09-27 22:40 by enowei0127
[论文投稿] Journal of colloid and interface science期刊 10+4 1821588220 2024-09-24 10/500 2024-09-27 20:37 by 1821588220
[基金申请] 请问大家的计划书填写列表中状态更新了吗? +7 Laker610 2024-09-25 9/450 2024-09-27 16:36 by 田田hj
[考博] 数学博导 +4 学术霸王 2024-09-25 6/300 2024-09-27 11:14 by 青古
[有机交流] 二氯甲烷的去除 +3 cgsa吧 2024-09-24 8/400 2024-09-27 10:55 by bear2007
[考博] 电催化,电池方向学生自荐 30+3 Freelancedd 2024-09-24 10/500 2024-09-27 10:27 by 莱茵润色
[论文投稿] 为什么审稿人一直拒绝审稿啊? +7 潇湘雪月 2024-09-24 13/650 2024-09-27 07:53 by weizhi111
[有机交流] 请问胺的盐酸盐中氯化氢的氢会在核磁氢谱中出峰吗? +3 rommel1975 2024-09-25 4/200 2024-09-26 13:07 by 091602
[基金申请] 请教2024后期资助到哪个阶段了 +3 拾光者5566 2024-09-23 8/400 2024-09-26 09:27 by 拾光者5566
[论文投稿] NC投稿多久有消息呀? +4 Jordanblood 2024-09-24 6/300 2024-09-25 16:58 by FZX_2024
[论文投稿] laser physics期刊投稿 5+3 mengxiangcz 2024-09-23 6/300 2024-09-25 15:08 by mengxiangcz
[有机交流] 做聚酰亚胺一步法合成,机械搅拌怎么密封不漏气 +3 哼哈EN 2024-09-24 5/250 2024-09-24 14:16 by mrzhl1986
信息提示
请填处理意见