簡體   English   中英

在MATLAB中求解非線性方程

[英]Solve nonlinear equation in matlab

我需要知道如何求解非線性方程組但改變參數的方法,以便每次更改該參數都會拋出該系統的結果(需要所有結果),我認為這是改變參數的原因,求解方程式,每個結果都存儲在電子表格中,問題是由於您無法求解系統,因此我拋出了非符號數值,它們為您提供了必須求解的系統示例:

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

在要更改的參數是a和要去保持的相應值xy在電子表格中。

您需要知道如何求解非線性方程。 這意味着選擇一個起點,創建一個增量的迭代解決方案,並為停止提供容忍度。 您需要知道並非每個非線性方程都有一個解。 您對起點和迭代策略的選擇可能會對您能否找到解決方案和過程效率產生深遠影響。

您在這里要解決什么? 您有兩個方程式; 我假設兩個未知數(x,y)。

您需要更多基本信息,才能使用Matlab之類的工具。 它可能為您封裝了許多細節,但不會為您選擇算法。 您仍然必須了解一些知識,尤其是關於方程組的知識。

首先閱讀如下內容:

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

我建議在x和y范圍內繪制方程式。 開始之前,您應該知道地形的外觀。 您正在處理觸發函數,因此x和y從零到2π變化,然后重復。 畫出x和y的幾個周期,看看你得到了什么。

如果您具有符號工具箱,則可以使用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表示用a的值表示的解。 然后,您可以評估在多個值的解決方案, a由要么做

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

或通過將解決方案轉換為函數句柄並以此方式進行評估(如果您需要在許多地方進行評估,則這是首選方法):

xf = matlabFunction(Xsoln)
xf(0.5)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM