24小时热门版块排行榜    

查看: 1461  |  回复: 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的回帖

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的回帖

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的回帖

lijie169

铜虫 (著名写手)

引用回帖:
5楼: Originally posted by chaofan1231 at 2012-05-17 13:45:02:
再问一下,这是我循环中的一部分,用这个函数求解时每次循环都要迭代,运算量大,很 慢,有什么更好的办法吗?

你可以采用我最下面的代码,支持向量运算。一次性算完,采用矩阵的运算方法,听说matlab在矩阵运算里比for循环快N倍...你可以试试。
6楼2012-05-17 16:26:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chaofan1231

银虫 (小有名气)

引用回帖:
6楼: Originally posted by lijie169 at 2012-05-17 16:26:17:
你可以采用我最下面的代码,支持向量运算。一次性算完,采用矩阵的运算方法,听说matlab在矩阵运算里比for循环快N倍...你可以试试。

不能算啊!Tsolve函数是我创建的M文件。跟你说的Func是一样的。只能算出来一个值。
rg =

    2.2000    2.0000    1.0000    1.2000    1.1000    1.5000    0.8000
    1.3000    1.5000    2.5000    2.6000    0.9000    1.1000    2.2000
    1.1000    1.3000    2.2000    0.9000    2.2000    2.2000    2.2000

>> t=fsolve(@(x)Tsolve(x,rg),1000)
Warning: Trust-region-dogleg algorithm of FSOLVE cannot handle non-square systems; using Levenberg-Marquardt algorithm instead.
> In fsolve at 324

No solution found.

fsolve stopped because the last step was ineffective. However, the vector of function
values is not near zero, as measured by the default value of the function tolerance.


t =

  1.0628e+003
7楼2012-05-18 08:44:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chaofan1231

银虫 (小有名气)

引用回帖:
6楼: Originally posted by lijie169 at 2012-05-17 16:26:17:
你可以采用我最下面的代码,支持向量运算。一次性算完,采用矩阵的运算方法,听说matlab在矩阵运算里比for循环快N倍...你可以试试。

我想用矩阵运算的,但是我的方程太复杂了,含有指数,不知道怎么化成矩阵运算的形式。
8楼2012-05-18 08:47:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijie169

铜虫 (著名写手)

貌似是用3楼的代码可以,我理解错了,不能使用直接向量求解。使用规则是rg是向量,不是矩阵,若要是矩阵,则需要修改主函数代码
CODE:
function f=do(rg)
      [m,n]=size(rg);
      x0=1000;
      f=zeros(m,n);
      for i=1:m
      for j=1:n
         f(i,j)=fsolve(@(x) func(x,rg(i,j)),x0);
      end
     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
end

9楼2012-05-18 12:00:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijie169

铜虫 (著名写手)

引用回帖:
9楼: Originally posted by lijie169 at 2012-05-18 12:00:13:
貌似是用3楼的代码可以,我理解错了,不能使用直接向量求解。使用规则是rg是向量,不是矩阵,若要是矩阵,则需要修改主函数代码

function f=do(rg)
      =size(rg);
      x0=1000;
      f=zeros(m,n);
...

最后的代码rg可以是矩阵也可以是向量,3楼的rg不能是矩阵
10楼2012-05-18 12:01:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 chaofan1231 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 0817 化学工程 299分求调剂 有科研经历 有二区文章 +21 rare12345 2026-03-18 21/1050 2026-03-20 14:31 by 无懈可击111
[考研] 317求调剂 +4 申子申申 2026-03-19 8/400 2026-03-20 11:20 by 申子申申
[考研] 一志愿南京理工大学085701资源与环境302分求调剂 +3 葵梓卫队 2026-03-18 5/250 2026-03-19 19:35 by 给你你注意休息
[考研] 复试调剂 +4 z1z2z3879 2026-03-14 6/300 2026-03-19 17:18 by fei626-918
[考博] 东华理工大学化材专业26届硕士博士申请 +8 zlingli 2026-03-13 8/400 2026-03-19 16:32 by 轻松不少随
[考研] 材料与化工求调剂 +7 为学666 2026-03-16 7/350 2026-03-19 14:48 by 尽舜尧1
[考研] 一志愿 西北大学 ,070300化学学硕,总分287,双非一本,求调剂。 +3 晨昏线与星海 2026-03-19 3/150 2026-03-19 13:36 by houyaoxu
[考研] 328求调剂,英语六级551,有科研经历 +4 生物工程调剂 2026-03-16 12/600 2026-03-19 11:10 by 生物工程调剂
[考研] 344求调剂 +6 knight344 2026-03-16 7/350 2026-03-18 20:13 by walc
[考研] 301求调剂 +9 yy要上岸呀 2026-03-17 9/450 2026-03-18 08:58 by 无际的草原
[基金申请] 被我言中:新模板不强调格式了,假专家开始管格式了 +4 beefly 2026-03-14 4/200 2026-03-17 22:04 by 黄鸟于飞Chao
[考研] 考研求调剂 +3 橘颂. 2026-03-17 4/200 2026-03-17 21:43 by 有只狸奴
[考研] 070300化学学硕求调剂 +6 太想进步了0608 2026-03-16 6/300 2026-03-16 16:13 by kykm678
[考研] 0856求调剂 +3 刘梦微 2026-03-15 3/150 2026-03-16 10:00 by houyaoxu
[考研] 26考研一志愿中国石油大学(华东)305分求调剂 +3 嘉年新程 2026-03-15 3/150 2026-03-15 13:58 by 哈哈哈哈嘿嘿嘿
[考研] 22408总分284求调剂 +3 InAspic 2026-03-13 3/150 2026-03-15 11:10 by zhq0425
[考研] 288求调剂 +4 奇点0314 2026-03-14 4/200 2026-03-14 23:04 by JourneyLucky
[考研] 中科大材料与化工319求调剂 +3 孟鑫材料 2026-03-14 3/150 2026-03-14 20:10 by ms629
[考研] 289求调剂 +4 这么名字咋样 2026-03-14 6/300 2026-03-14 18:58 by userper
[考研] 330求调剂 +3 ?酱给调剂跪了 2026-03-13 3/150 2026-03-14 10:13 by JourneyLucky
信息提示
请填处理意见