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毫秒