24小时热门版块排行榜    

查看: 1373  |  回复: 14
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

chaofan1231

银虫 (小有名气)

[求助] 急急急!符号函数解代数方程遇到的问题

各位高手帮忙看下这是怎么一回事呀!
rg=2;
>> T2=subs(fsolve('rg-exp((1/0.0000005461-1/0.000000700)*0.014388/x+log((x-993.74731)/2869.03078)-5*log(700/546.1))',1000))
??? Error using ==> inlineeval at 15
Error in inline expression ==> rg-exp((1/0.0000005461-1/0.000000700)*0.014388/x+log((x-993.74731)/2869.03078)-5*log(700/546.1))
Undefined function or variable 'rg'.
Error in ==> inline.feval at 36
        INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);
注:直接将rg=2代入方程式可以解的,但是我需要的是在循环中不断给rg赋值,然后再代入公式计算T2,不知道该如何做到。有其它能解上边代数方程的函数也可以用。谢谢啊!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chaofan1231

银虫 (小有名气)

送鲜花一朵
引用回帖:
4楼: Originally posted by lijie169 at 2012-05-17 12:08:00:
可以吧for 给去掉,只留一句  f=fsolve(@(x) func(x,rg),1000);后面的function再接上就可以了...不需要那么麻烦

function f=do(rg)

         x0=1000;
         f(i)=fsolve(@(x) func(x,rg),x0);

fun ...

再问一下,这是我循环中的一部分,用这个函数求解时每次循环都要迭代,运算量大,很 慢,有什么更好的办法吗?
5楼2012-05-17 13:45:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 15 个回答

lijie169

铜虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
可以这样
CODE:
function f=do(rg)
      n=length(rg);
      x0=1000;
      f=zeros(n,1);
      for i=1:n
         f(i)=fsolve(@(x) fun(x,rg(i)),x0);
      end

function f=func(x,rg)
      f=rg-exp((1/0.0000005461-1/0.000000700)*0.014388/x+log((x-993.74731)/2869.03078)-5*log(700/546.1));
end

使用方法,将你要使用rg的值作为一个向量带入 ,运行do(rg),就ok
2楼2012-05-17 12:01:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijie169

铜虫 (著名写手)

【答案】应助回帖

引用回帖:
2楼: Originally posted by lijie169 at 2012-05-17 12:01:53:
可以这样

function f=do(rg)
      n=length(rg);
      x0=1000;
      f=zeros(n,1);
      for i=1:n
         f(i)=fsolve(@(x) fun(x,rg(i)),x0);
      end

function f=func(x,rg)
      f=rg ...

CODE:
function f=do(rg)
      n=length(rg);
      x0=1000;
      f=zeros(n,1);
      for i=1:n
         f(i)=fsolve(@(x) func(x,rg(i)),x0);
      end

function f=func(x,rg)
      f=rg-exp((1/0.0000005461-1/0.000000700)*0.014388/x+log((x-993.74731)/2869.03078)-5*log(700/546.1));
end

有点小错误....fun应该是func
3楼2012-05-17 12:03:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijie169

铜虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★
chaofan1231: 金币+5, ★★★★★最佳答案, 谢谢 2012-05-17 13:43:29
xzhdty: 金币+2, 谢谢参与 2012-05-19 16:43:29
可以吧for 给去掉,只留一句  f=fsolve(@(x) func(x,rg),1000);后面的function再接上就可以了...不需要那么麻烦
CODE:
function f=do(rg)

         x0=1000;
         f(i)=fsolve(@(x) func(x,rg),x0);

function f=func(x,rg)
      f=rg-exp((1/0.0000005461-1/0.000000700)*0.014388/x+log((x-993.74731)/2869.03078)-5*log(700/546.1));
end

简洁就是美

» 本帖已获得的红花(最新10朵)

4楼2012-05-17 12:08:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见