MATLAB中文论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 733|回复: 24|关注: 0

[已解决] 输入函数,没有结果也不报错,是什么问题?

[复制链接]

新手

7 麦片

财富积分


050


4

主题

27

帖子

0

最佳答案
[T,x]=solve('18/0.14*(exp(-0.06*T)-exp(-0.2*T)*exp(0.14*x))+3/0.01*(exp(-0.06*x)-exp(-0.06*T))+9/0.01*(exp(-0.1*T)*exp(0.04*x)-exp(-0.06*T))-20=0','30/0.17*(exp(0.07*x)*exp(-0.1*T)-exp(-0.1*T)*exp(-0.1*x))+30/0.07*(exp(-0.1*x)-exp(-0.03*x))+300*exp(-0.1*x)-30/0.14*(exp(0.04*x)*exp(-0.1*T)-exp(0.04*T)*exp(-0.1*x))-30/0.04*(exp(0.04*T)*exp(-0.1*x)-exp(-0.06*x))=0');难道是版本低运行太慢?但是类似的如下面的却能输出解?
[T,x]=solve('5*1*1*0.2^2/(4*0.06^3)*(0.06^2*(x-T)^2*exp(-0.06*x)+2*0.06*(x-T)*exp(-0.06*x)+2*exp(-0.06*x)-2*exp(-0.06*T))=2/0.01','-5*1*1*0.2/(2*(0.06-0.01*3)^2)*((0.06-0.01*3)*(x-T)*exp(-(0.06-0.01*3)*x)+exp(-(0.06-0.01*3)*x)-1+(0.06-0.01*3)*T)+300=-5*1*1*0.2/(2*0.06^2)*(0.06*(x-T)*exp(-0.06*x)+exp(-0.06*x)-exp(-0.06*T))');

新手

5 麦片

财富积分


050


0

主题

5

帖子

0

最佳答案
发表于 2017-6-22 16:31:43 | 显示全部楼层
表达式输入错误,用==,而不是=,官方文档里有示例,初学者要善用官方文档,90%的问题在官方文档中都能找到答案。链接发不了,文档中找到solve的介绍,里面有示例。

新手

7 麦片

财富积分


050


4

主题

27

帖子

0

最佳答案
 楼主| 发表于 2017-6-22 16:39:39 | 显示全部楼层
gtao_gpf 发表于 2017-6-22 16:31
表达式输入错误,用==,而不是=,官方文档里有示例,初学者要善用官方文档,90%的问题在官方文档中都能找到 ...

貌似没啥变化啊

新手

5 麦片

财富积分


050


0

主题

5

帖子

0

最佳答案
发表于 2017-6-22 16:43:40 | 显示全部楼层
syms T x

f1 = 5*1*1*0.2^2/(4*0.06^3)*(0.06^2*(x-T)^2*exp(-0.06*x)+2*0.06*(x-T)*exp(-0.06*x)+2*exp(-0.06*x)-2*exp(-0.06*T))==2/0.01;

f2 = -5*1*1*0.2/(2*(0.06-0.01*3)^2)*((0.06-0.01*3)*(x-T)*exp(-(0.06-0.01*3)*x)+exp(-(0.06-0.01*3)*x)-1+(0.06-0.01*3)*T)+300==-5*1*1*0.2/(2*0.06^2)*(0.06*(x-T)*exp(-0.06*x)+exp(-0.06*x)-exp(-0.06*T));

eqns = [f1,f2]

vars = [x,T]

[solv, solu] = solve(eqns, vars)

新手

7 麦片

财富积分


050


4

主题

27

帖子

0

最佳答案
 楼主| 发表于 2017-6-22 16:47:43 | 显示全部楼层
gtao_gpf 发表于 2017-6-22 16:43
syms T x

f1 = 5*1*1*0.2^2/(4*0.06^3)*(0.06^2*(x-T)^2*exp(-0.06*x)+2*0.06*(x-T)*exp(-0.06*x)+2*exp(- ...

下面那个不需要改就能运行,是上面那个不对

新手

5 麦片

财富积分


050


0

主题

5

帖子

0

最佳答案
发表于 2017-6-22 16:52:04 | 显示全部楼层
我一直说的是上面那个。。。,方程的等号必须使用==,如果不指定f==0,在使用solve的时候,比如solve(f),其实与solve(f==0)是等效的,这个在文档里都有说明。我刚才贴的代码就是针对上面的。

新手

7 麦片

财富积分


050


4

主题

27

帖子

0

最佳答案
 楼主| 发表于 2017-6-22 16:55:46 | 显示全部楼层
gtao_gpf 发表于 2017-6-22 16:52
我一直说的是上面那个。。。,方程的等号必须使用==,如果不指定f==0,在使用solve的时候,比如solve(f),其 ...

你贴的是下面那段代码,上面那段才有问题,我也加过==试过,没啥效果

MATLAB 基础讨论
版块优秀回答者

入门

131 麦片

财富积分


50500


1

主题

140

帖子

29

最佳答案
  • 关注者: 5
发表于 2017-6-22 16:59:15 | 显示全部楼层
苏打清峰 发表于 2017-6-22 16:55
你贴的是下面那段代码,上面那段才有问题,我也加过==试过,没啥效果
  1. [T,x]=solve('18/0.14*(exp(-0.06*T)-exp(-0.2*T)*exp(0.14*x))+3/0.01*(exp(-0.06*x)-exp(-0.06*T))+9/0.01*(exp(-0.1*T)*exp(0.04*x)-exp(-0.06*T))-20=0','30/0.17*(exp(0.07*x)*exp(-0.1*T)-exp(-0.1*T)*exp(-0.1*x))+30/0.07*(exp(-0.1*x)-exp(-0.03*x))+300*exp(-0.1*x)-30/0.14*(exp(0.04*x)*exp(-0.1*T)-exp(0.04*T)*exp(-0.1*x))-30/0.04*(exp(0.04*T)*exp(-0.1*x)-exp(-0.06*x))=0');
复制代码
  1. >> T

  2. T =

  3. -12.48928557138579336834201722812

  4. >> x

  5. x =

  6. -18.174318443281749807466269164926
复制代码

你的程序没问题,主要是matlab的功能不够强大

新手

7 麦片

财富积分


050


4

主题

27

帖子

0

最佳答案
 楼主| 发表于 2017-6-22 17:01:48 | 显示全部楼层
飞时雨 发表于 2017-6-22 16:59
你的程序没问题,主要是matlab的功能不够强大

我的是2012的,我运行下面一段是可以的,这两段代码也差不多,怎么会一个可以一个不行,那要多高的版本?

MATLAB 基础讨论
版块优秀回答者

入门

131 麦片

财富积分


50500


1

主题

140

帖子

29

最佳答案
  • 关注者: 5
发表于 2017-6-22 17:08:38 | 显示全部楼层
苏打清峰 发表于 2017-6-22 17:01
我的是2012的,我运行下面一段是可以的,这两段代码也差不多,怎么会一个可以一个不行,那要多高的版本? ...
  1. syms T x
  2. [T,x]=vpasolve(18/0.14*(exp(-0.06*T)-exp(-0.2*T)*exp(0.14*x))+3/0.01*(exp(-0.06*x)-exp(-0.06*T))+9/0.01*(exp(-0.1*T)*exp(0.04*x)-exp(-0.06*T))-20==0,30/0.17*(exp(0.07*x)*exp(-0.1*T)-exp(-0.1*T)*exp(-0.1*x))+30/0.07*(exp(-0.1*x)-exp(-0.03*x))+300*exp(-0.1*x)-30/0.14*(exp(0.04*x)*exp(-0.1*T)-exp(0.04*T)*exp(-0.1*x))-30/0.04*(exp(0.04*T)*exp(-0.1*x)-exp(-0.06*x))==0);
复制代码

上面的那段程序粘错了,不是你程序的问题,我2015b也算不出来……
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

快速回复 返回顶部 返回列表