0

我需要知道如何求解一个非线性方程组但改变一个参数,这样每次你改变那个参数都会给我那个系统的结果(需要所有结果),我想到了一个 for,它正在改变参数,求解方程并将每个结果存储在电子表格中,问题是由于您无法求解系统,因此我抛出非符号数值,它们为您提供了一个必须求解的系统示例:

0 = 125 +100 * cos (x) -25 * cos (a) -175 * cos (y)
0 = 100 * sin (x) -25 * sin (a) -175 * sin (y)

在要更改的参数中a,要保持电子表格中的x和的相应值。y

4

2 回答 2

1

您需要知道如何求解非线性方程。这意味着选择一个起点,创建一个增量的、迭代的解决方案,并提供停止的容差。您需要知道,并非每个非线性方程都有解。您对起点和迭代策略的选择可能对您能否找到解决方案和流程的效率产生深远的影响。

你在这里解决什么问题?你有两个方程;我将假设两个未知数(x,y)。

在使用 Matlab 之类的工具之前,您需要更多基本信息。它可能会为您封装很多细节,但不会为您做出算法选择。你仍然需要知道一些东西,尤其是关于你的方程组。

从阅读以下内容开始:

http://www.physicsforums.com/archive/index.php/t-106606.html

我建议在 x 和 y 的范围内绘制你的方程。在开始之前,您应该知道地形是什么样的。您正在处理三角函数,因此 x 和 y 从零变化到 2π,然后重复。绘制几个 x 和 y 周期,看看你得到了什么。

于 2012-09-29T23:36:13.547 回答
0

如果你有符号工具箱,你可以使用 Matlab 的符号求解器...

syms x y a
b(1)  = 100 * sin (x) -25 * sin (a) -175 * sin (y)
b(2)  = 125 +100 * cos (x) -25 * cos (a) -175 * cos (y)
z     = solve(b,x,y)
Xsoln = simplify(z.x)
Ysoln = simplify(z.y)

其中XsolnYsoln表示根据 的值编写的解aa然后,您可以通过以下任一方式评估多个值的解决方案

aval = 0.5; % or whatever value you want
subs(Xsoln,a,aval)

或通过将解决方案转换为函数句柄并以这种方式对其进行评估(如果您需要在许多点进行评估,这是首选方法):

xf = matlabFunction(Xsoln)
xf(0.5)
于 2017-02-02T09:51:41.730 回答