用MATLAB解多元非線性方程組,求大神

2021-05-05 05:15:35 字數 3951 閱讀 8547

1樓:僅僅是追憶

首先定義函式:

function f=fx(x)

f(1)=3*x(1)-cos(x(2)*x(3))-0.5;

f(2)=x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06;

f(3)=exp(-x(1)*x(2))+20*x(3)+(10*pi-3)/3;

>> x=fsolve(@fx,[1,1,1])最後求得

x =0.5000    0.0000   -0.5236

2樓:匿名使用者

很高興為您解答,首先定義函式myfun

function f = myfun(x)f = [3*x(1)-cos(x(2)*x(3))-0.5;

x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06;

exp(-x(1)*x(2))+20*x(3)+(10*pi-3)/3];

前面這段函式定義在myfun.m檔案中

主程式如下:

[x,fval]=fsolve(@myfun,[0,0,0]);

x(1)

x(2)

x(3)

最後求得

x(1)=0.5000

x(2)=0.0000

x(3)=-0.5236

滿意請採納回答,謝謝!

3樓:匿名使用者

建立 myfun.m 檔案

function f = myfun(x,a)

e = a(1);

i = a(2);

r0 = a(3);

r1 = a(4);

t = a(5);

a = a(6);

v = a(7);

rho = a(8);

f = [ (t - rho * a * v^2) *

sin(x(3)) * x(1) - (t * cos(x(3)) + rho * a * v^2 - rho * a * v^2 *

cos(x(3))) * x(2) - e*i/(r0 + r1);

(1/3) * (t - rho * a * v^2) *

sin(x(3)) * x(1)^3 - (1/2) * (t * cos(x(3)) + rho * a * v^2 - rho *

a * v^2 * cos(x(3))) * x(2) * x(1)^2 - e* i * x(2);

(t - rho * a * v^2) * sin(x(3)) *

x(1)^2 - (t * cos(x(3)) + rho * a * v^2 - rho * a * v^2 *

cos(x(3))) * x(2) * x(1) - e* i * x(3)];

建立乙個執行檔案

clcclear

a = zeros(8);

display('# pls input the known

parameters: #')

a(1) = input('e = ');

a(2) = input('i = ');

a(3) = input('r0 = ');

a(4) = input('r1 = ');

a(5) = input('t = ');

a(6) = input('a = ');

a(7) = input('v = ');

a(8) = input('rho = ');

display('# pls input the initial

point: #')

x0 = zeros(3);

% make a

starting guess at the solution

x0(1) = input('x1 = ');

x0(2) = input('y1 = ');

x0(3) = input('phi = ');

options =

optimset('display','iter');

% option to display

output

[x,fval] = fsolve(@(x)

myfun(x,a),x0,options)

% call solver

執行,輸入已知的幾個引數,再輸入初始搜尋點,即可!

4樓:匿名使用者

fx.m

function f=fx(x)

f(1)=3*x(1)-cos(x(2)*x(3))-0.5;

f(2)=x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06;

f(3)=exp(-x(1)*x(2))+20*x(3)+(10*pi-3)/3;

>> x=fsolve(@fx,[1,1,1])x =0.5000 0.0000 -0.5236

5樓:瑞秋老大

1.首先定義函式myfun

function f = myfun(x)

f = [3*x(1)-cos(x(2)*x(3))-0.5;

x(1)^2-81*(x(2)+0.1)^2+sin(x(3))+1.06;

exp(-x(1)*x(2))+20*x(3)+(10*pi-3)/3];

2.前面這段函式定義在myfun.m檔案中。

主程式如下:

[x,fval]=fsolve(@myfun,[0,0,0]);

x(1)

x(2)

x(3)

3.最後求得:

x(1)=0.5000

x(2)=0.0000

x(3)=-0.5236

擴充套件資料

matlab的簡介

matlab是美國mathworks公司出品的商業數學軟體,用於演算法開發、資料視覺化、資料分析以及數值計算的高階技術計算語言和互動式環境,主要包括matlab和simulink兩大部分。

非線性方程組數值解法

20世紀60年代中期以後,發展了兩種求解非線性方程組(1)的新方法。一種稱為區間迭代法或稱區間牛頓法,它用區間變數代替點變數進行區間迭代,每迭代一步都可判斷在所給區間解的存在惟一性或者是無解。

如何用matlab解多元非線性方程組?

6樓:謊言如此動聽

使用solve函式。

舉個例子,解非線性方程組

e69da5e887aa62616964757a686964616f31333365633837 x^2+y^3=10 x^3-y^2=1 其中x,y為方程組的未知量 在matlab的命名視窗中輸入:

syms x y  [x y]=solve('x^2+y=10','x^2-y^2=1','x','y')  即可  輸出計算結果為:

x =       (37^(1/2)/2 + 21/2)^(1/2)     (21/2 - 37^(1/2)/2)^(1/2)  -(21/2 - 1/2*37^(1/2))^(1/2)  -(1/2*37^(1/2) + 21/2)^(1/2)

y =    - 37^(1/2)/2 - 1/2    37^(1/2)/2 - 1/2    37^(1/2)/2 - 1/2  - 37^(1/2)/2 - 1/2

具體solve函式的使用方法,通過輸入help solve來學習。

20世紀60年代中期以後,發展了兩種求解非線性方程組(1)的新方法。

一種稱為區間迭代法或稱區間牛頓法,它用區間變數代替點變數進行區間迭代,每迭代一步都可判斷在所給區間解的存在惟一性或者是無解。這是區間迭代法的主要優點,其缺點是計算量大。

另一種方法稱為不動點演算法或稱單純形法,它對求解域進行單純形剖分,對剖分的頂點給一種恰當標號,並用一種有規則的搜尋方法找到全標號單純形,從而得到方程(1)的近似解。

這種方法優點是,不要求f(□)的導數存在,也不用求逆,且具有大範圍收斂性,缺點是計算量大。

matlab求解非線性約束方程,求教 如何用matlab解帶約束的非線性方程組

用fmincon函式就可以解決,以下是fmincon的說明,你照葫蘆畫就可以了。這個函式的基本形式為 x fmincon fun,x0,a,b,aeq,beq,lb,ub,nonlcon,options 其中fun為你要求最小值的函式,可以單寫乙個檔案設定函式,如以上給的例子中。1.如果fun中有n...

牛頓迭代法求解非線性方程的c程式設計

數值方法書上不是有 牛頓法是牛頓在17世紀提出的一種求解方程f x 0.多數方程不存在求根公式,從而求精確根非常困難,甚至不可能,從而尋找方程的近似根就顯得特別重要。設r是f x 0的根,選取x0作為r初始近似值,過點 x0,f x0 做曲線y f x 的切線l,l的方程為y f x0 f x0 x...

用行列式解線性方程組,如何用行列式解線性方程組?請舉例說明下。

2.增廣矩陣 a,b 2 1 5 1 8 1 3 0 6 9 0 2 1 2 5 1 4 7 6 0 初等行變換為 1 3 0 6 9 0 7 5 13 10 0 2 1 2 5 0 7 7 12 9 初等行變換為 1 3 0 6 9 0 7 5 13 10 0 2 1 2 5 0 0 2 1 1 ...