怎么把mathematica 所得近似解带入另一个函数求值?如:算出f(x)=0的近似解x0,要最后输出g(x0),指令怎么写

如题所述

这,这,这这这这这……
首先,因为看到了同学你在楼下的追问里贴的代码,现在我很感兴趣,同学你和这边的楼主是什么关系:http://zhidao.baidu.com/question/503492494.html?oldq=1#answer-1262800839

我想我在那边已经说过了,你的基本语法是错的,就算你把首字母改成了大写,不在自变量上加方括号也依然是错的。你非得要用这个二分法来求解,那也先把你语法的错误改掉:
f[x_] := (10 - 5 Cos[x])/Sin[x] + (12 - 5 Sin[x])/Cos[x]

然后你的程序就可以正常运行了,然后由于你用的是循环反复赋值,现在你的所谓x0,就已经存在那个x里了,不信你另起一段敲个x再Shift+Enter试试?所以,这时候你直接输g[x]就能得到你要的东西了。

而实际上,以上解题方法也根本不是mathematica式的做法,最为简单高效的方法,应该是如pencilpine所给的那样,使用FindRoot求数值解,再使用ReplaceAll(也就是那个 /. )把所得的解赋给其他方程。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-11
g[x]/.FindRoot[f[x]==0,{x,x0}]
第2个回答  2012-12-10
我知道追问

可以说一下么
f[x_] := (10 - 5 Cosx)/Sinx + (12 - 5 Sinx)/Cosx
a0 = 0.; b0 = Pi/2.; delta = 10^(-2); k0 = 100;
a = a0; b = b0; Do[x = (a + b)/2; Print[x];
If[f'[x] == 0, break[], If[N[f'[x]*f'[b]] < 0, a = x, b = x]];
If[N[Abs[b - a]] < delta, break[],
If[k == k0, Print[失败]]], {k, k0}]
我已经写到这里了 g(x)随便是什么函数都行 关键是不会表达形式

相似回答