注册 登录
编程论坛 Matlab

这方程该怎么写啊

zixiacherry 发布于 2011-10-01 17:56, 1164 次点击
比如 a*exp(-7.8/s)=b*s  其中a,b都是常数, 给点s一个范围,求解出s。
 我在matlab里写 为啥没结果呢? 或者我每次更改范围后,都得出不同的结果,而且结果一看就不对,5555555555
请高手看看,我这样写的
syms s
fzero(inline('a*exp(-7.8/s)-b*s '),[0,100])    (0,100 是我给的范围,可以更改)

请高手指点一下,我该怎么才能得到结果
3 回复
#2
drmatlab2011-10-05 10:15
请给出一至三组a、b的值和相应的含解区间,我会尽量详细地告诉你求解程序的!
#3
drmatlab2011-10-07 12:06
这个方程对于任何有限的a、b都有零解。我的程序总找到了零解。但是还没找到非零
解。要么你给出非零解的a、b值和相应的含解区间要么你允许我换个方程如
a*exp(-7.8*s)=b*s
来说明程序!
零解没什么意思嘛!
#4
drmatlab2011-10-10 02:53
我的答案

一、程序
function x= myeq(a, b)
 x = fzero(@(x) myfun(x,a,b),[0,100] )

function f = myfun(x,a,b)
f = a.*exp(-7.8.*x) -b.*x
以上两个程序是分别存放在两个.m文件中的。

二、以a=1, b=10为例展示方程的详细求解过程
>> x=myeq(1,10);

f =

     1


f =

       -1000


f =

  -0.540237649001660


f =

  -0.045644888939780


f =

    2.596009671784749e-006


f =

   -1.013789130421827e-008


f =

   -2.220446049250313e-015


f =

    4.440892098500626e-015

最终得到方程的近似解
x =    0.061767764689359

三、验算
>> a=1

a =

     1

>> b=10

b =

    10

>> f=a.*exp(-7.8.*x)-b.*x

f =

   -2.220446049250313e-015

如此小的误差说明近似解足够精确!
1