Matlab 版 (精华区)

发信人: hahn (有奇@选择遗忘的自由), 信区: Matlab
标  题: [合集] 请教求解方程!
发信站: 哈工大紫丁香 (Sat Aug  5 19:06:55 2006), 站内

────────────────────────────────────────
  yushanren (专找德标麻烦)         于  (Tue May  9 12:31:11 2006)  说道:


  tanx-x=a;(x,a 都是标量。)
  求解x。
  在Matlab怎么表示x(a为自变量的表达式),或者得到x的值(a为常量)
  请问在matlab中如何实现?
  谢谢!


────────────────────────────────────────
  feifeifool (努力学习)            于  (Tue May  9 12:51:36 2006)  说道:

参考4815。
【 在 yushanren (专找德标麻烦) 的大作中提到: 】
:   tanx-x=a;(x,a 都是标量。)
:   求解x。
:   在Matlab怎么表示x(a为自变量的表达式),或者得到x的值(a为常量)
: ...................



────────────────────────────────────────
  yushanren (专找德标麻烦)         于  (Tue May  9 19:11:49 2006)  说道:


【 在 feifeifool (努力学习) 的大作中提到: 】
: 参考4815。

fzero(inline('tanx-x-20'),3);
这个可以解,假如是这样:

a=2;
fzero(inline('tanx-x-a'),3);
就不行了,
而我的这个要求是不断对a赋值,求出新的x值;
请问这样有没有办法?




────────────────────────────────────────
  feifeifool (努力学习)            于  (Tue May  9 20:32:57 2006)  说道:

写一个例子:
Jie=[];
yes_no=[];
a=1;
while a<=20
    x=sym('x');
    z1=tan(x)-x-a;
    [x1,fval,exitflag] =fzero(inline(z1),10);
    Jie=[Jie,x1];
    yes_no=[yes_no,exitflag];
    a=a+1;
end

【 在 yushanren (专找德标麻烦) 的大作中提到: 】
: fzero(inline('tanx-x-20'),3);
: 这个可以解,假如是这样:
: a=2;
: fzero(inline('tanx-x-a'),3);
: 就不行了,
: 而我的这个要求是不断对a赋值,求出新的x值;
: 请问这样有没有办法?





────────────────────────────────────────
  yushanren (专找德标麻烦)         于  (Tue May  9 21:05:05 2006)  说道:


【 在 feifeifool (努力学习) 的大作中提到: 】
: 写一个例子:
: Jie=[];
: yes_no=[];
: a=1;
: while a<=20
:     x=sym('x');
:     z1=tan(x)-x-a;
:     [x1,fval,exitflag] =fzero(inline(z1),10);
: ...................


这个可以运算,但是好象结果不对;
我对fzero ,inline函数不怎么了解,
fzero(inline(z1),10);   后面的10代表什么啊


────────────────────────────────────────
  feifeifool (努力学习)            于  (Tue May  9 21:25:19 2006)  说道:

10按照帮助文件中说的是求解函数在10附近的点的零点

【 在 yushanren (专找德标麻烦) 的大作中提到: 】
: 这个可以运算,但是好象结果不对;
: 我对fzero ,inline函数不怎么了解,
: fzero(inline(z1),10);   后面的10代表什么啊
: ...................



────────────────────────────────────────
  yushanren (专找德标麻烦)         于  (Tue May  9 21:28:55 2006)  说道:


【 在 yushanren (专找德标麻烦) 的大作中提到: 】
: 这个可以运算,但是好象结果不对;
: 我对fzero ,inline函数不怎么了解,
: fzero(inline(z1),10);   后面的10代表什么啊


>> fzero(inline(tan(x)-x-10),3)

ans =

   -7.8540
>> tan(-7.8540)-(-7.8540)

ans =

  5.4456e+004

>> tan(1.4839)-1.4839

ans =

    9.9951
可见结果出问题了,不过在解
>> fzero(inline('x^0.5+x^2-18'),3)

ans =

     4
是正确的.
难道说不适合解我那种方程?
我对这些函数不怎么明白,做优化时,需要解方程.
你帮我看看吧,拜托了.


────────────────────────────────────────
  feifeifool (努力学习)            于  (Tue May  9 22:00:28 2006)  说道:

建议你把函数的图形画出来,或者分别画函数tanx和x+10的图线,其交点就为你要求的零
点。大约判断一下零点的位置。不行的话,建议你使用牛顿迭代等数值方法求解,fzer
o的后面的提示说求的零点必须穿过是穿过x轴,上面举了个例子y=x^2,这个函数的零点
并不是与x轴相交,这样子这个函数就会失效。根据help fzero的说明,我感觉这个方法是基于类似二分法求解的,这个是求非线性方程中最基本的方法。


【 在 yushanren (专找德标麻烦) 的大作中提到: 】
: ans =
:    -7.8540
: ans =
: ...................



[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.579毫秒