syzl 发表于 2008-3-14 09:03

麻烦各位给解这个方程式一个思路

方程式如下:

5sin(x)+sqrt(100-36cos(x))=c, c是常数,求x.
查了书和搜索,都是方程组的例子,麻烦给个思路,谢谢.

songzy41 发表于 2008-3-14 09:35

可以先改为
f(x)=5sin(x)+sqrt(100-36cos(x))-c
画个图,确定其根的区域,再用牛顿法或二分法等去求方程的根.

[ 本帖最后由 songzy41 于 2008-3-14 09:42 编辑 ]

平平淡淡 发表于 2008-3-14 09:39

先确定其根的区域,然后用fzero命令应该可以再各个区域内直接求解的吧

rap2009 发表于 2008-3-15 10:38

如果有范围要求,就给个范围来约束一下,可以记为,如果没有范围,就随便确定个数a,然后:
1、可以使用字符串表达式:
mZero = fzero('5*sin(x)+sqrt(100-36*cos(x))-c', );
注意:此时在你的要求范围内,可能没有零点值,函数将返回错误。

mZero = fzero('5*sin(x)+sqrt(100-36*cos(x))-c', a);
此时,函数将临近a处返回零点值

注意:
1)用字符串表达式来求解时,请注意要给表达式中的变量进行初始化值。如:
x = a:0.001:b;
2)如果你的变量名不是x,那么要用如下的方式来使用fzero函数:
fzero(@(变量名)(字符串表达式), 范围或数值);

2、可以使用符号表达式:
syms x;
y = 5 * sin(x)+sqrt(100-36*cos(x))-c
yFun = inline(y);
mZero = fzero(yFun, );

mZero = fzero(yFun, a);

syzl 发表于 2008-3-15 15:12

谢谢rap2009,你的答案很完美,参考书也不会有这样详细的解答,我这就去实践.
页: [1]
查看完整版本: 麻烦各位给解这个方程式一个思路