ssffss 发表于 2006-4-25 10:32

各位matlab大侠帮帮忙

在matlab解方程时,遇到的问题,程序如下:<BR>b=1;<BR>=solve('x=1+b')<BR>x=1+b<BR><BR>为什么它不能直接把b的值代入呢?<BR>要怎么样才能将b的值带进去?<BR>

ssffss 发表于 2006-4-25 11:20

<P>没人会吗?自己顶一下</P>

liyaohua 发表于 2006-4-25 12:07

我觉得是你单引号中间的内容被当作一个整体字符来处理的,所以会这样,你要解方程,给定b的值后,直接输入x=1+b;然后输入x回车不就能得到结果了么。

ssffss 发表于 2006-4-25 15:53

<P>谢谢上面得兄弟 <BR>你的方法对这种简单得还是不错。不过如果方程比较复杂可能就无法实现了<BR>比如:x^2=cos(b*x)+2*x+1<BR>我的程序里b有好多个需要计算的值,所以我想用一个循环来实现<BR>不知道兄弟们还有没有其他的好办法啊?</P>

zhyuer 发表于 2006-4-25 16:12

<P>对于符号函数有解析解的可以用solve<BR>如<BR>b=1;<BR><FONT color=#998f66>x=solve('x+b=1');<BR>x=subs(x);<BR></FONT><FONT color=#000000>或 x=subs(solve('x+b=1');<BR><BR></FONT>但对于没有解析解的应当用fzero吧</P>

ssffss 发表于 2006-4-25 16:40

<P>谢谢楼上,明白了点,但是还是不太会搞<BR>对于这个方程:<BR>b=10:5:30<BR>x=cos(x)+b<BR>能求出一组x的数值不?<BR>那位大侠能贴个程序啊。</P>

zhyuer 发表于 2006-4-25 16:57

function f = myfun(x,b)<BR>      f = x-cos(x)-b;%函数文件<BR>b=10:5:30;<BR>n=length(b);<BR>x=zeros(1,n);<BR>for i=1:n<BR>x(i)=fzero(@(x) myfun(x,b(i)),0.1);<BR>end<BR>试一下吧

ssffss 发表于 2006-4-25 17:16

b=10:5:30;<BR>n=length(b);<BR>x=zeros(1,n);<BR>for i=1:n<BR>x(i)=fzero(@(x) myfun(x,b(i)),0.1);<BR>end<BR>还是有点问题,这是运行后出现的提示:<BR>??? x(i)=fzero(@(x) myfun(x,b(i)),0.1);<BR>                |<BR>Error: "identifier" expected, "(" found.<BR>好像也没少括号啊……<BR>

zhyuer 发表于 2006-4-25 19:06

<P>x =</P>
<P>    9.0643   14.5755   20.2094   25.7910   30.8371<BR>这是结果,我这儿好这呀<BR>myfun文件存到work下试试</P>

happy 发表于 2006-4-25 20:46

回复:(ssffss)各位matlab大侠帮帮忙

这个问题用solve解决不了<BR>7楼提供的确实是一个解决办法<BR>不过fzero用的不太对,你可以看一下fzero的帮助修改一下就行了

ssffss 发表于 2006-4-25 20:53

<P>我试了好几次了 怎么还是那个报错啊……<BR>老兄 能不能留个qq号啊?<BR></P>

happy 发表于 2006-4-26 07:59

回复:(ssffss)各位matlab大侠帮帮忙

b=10:5:30;<BR>n=length(b);<BR>x=zeros(1,n);<BR>options = optimset('Display','off');<BR>for i=1:n<BR>x(i)=fzero(@myfun,0,options,b);<BR>end

zhyuer 发表于 2006-4-26 08:22

那可能是版本的问题,我这儿是7.0版,没问题
页: [1]
查看完整版本: 各位matlab大侠帮帮忙