matlab求解非線性方程,Matlab解非線性方程組

2021-03-11 00:44:59 字數 5540 閱讀 7067

1樓:匿名使用者

如果你有n個未知bai數n個方程,就定du義乙個輸入輸zhi出都是n*1列向量的函式,dao然後用fsolve解。比專

如你想解方程組

x1^2+x2=7

x2^3+exp(x1)=100

就定義一屬個函式

func1=@(x)[x(1)^2+x(2)-7;x(2)^3+exp(x(1))-100];

x=fsolve(func1,[1;1])

2樓:敏感鈍感

fun=@(x)(x+0.0777)*cos(x)-sin(x)-0.0681;

>> fzero(fun,0.5)

ans =

0.2729

可以用求零點函式解

a=0.0777;

>> b=0.0681;

>> fun=@(x)(x+a)*cos(x)-sin(x)-b;

>> fzero(fun)

就可以編

版程求權解

3樓:劉賀

得不來出解析

源解bai,除非

du有zhia和b的值:dao

clear all;clc;

a=3;

b=2;

syms x

solve(eval((x+a)*cos(x)-sin(x)-b))ans =

.77394808752697357508109385553800

matlab解非線性方程組 5

4樓:匿名使用者

對於帶變數的非線性方程組,可以用matlab的for迴圈語句和vpasolve函式聯合專求解。實現方屬法:

m=0:0.01:1;

for i=1:length(m)

syms x y z

f1=cos(x)-cos(y)+cos(z)-m(i);

f2=cos(5*x)-cos(5*y)+cos(5*z);

f3=cos(7*x)-cos(7*y)+cos(7*z);

[x1(i),y1(i),z1(i)]=vpasolve(f1,f2,f3);

endx=double(x1);y=double(y1);z=double(z1);

plot(m,x,m,y,m,z)

5樓:唇硬體苫

第一零五回:錦衣軍查抄寧國府,驄馬使**平安州

matlab求解非線性方程組

6樓:我行我素

^syms m x y z

[x,y,z,m]=solve('x+y+z+m-2=0','x^版2+y^2+z^2+m^2-2=0','x*z+y*m=0','-y+2*z-3*m=0','x','y','z','m')

結果權:

x =1/4+1/4*3^(1/2)

1/4-1/4*3^(1/2)

y =1/4-1/4*3^(1/2)

1/4+1/4*3^(1/2)

z =3/4-1/4*3^(1/2)

3/4+1/4*3^(1/2)

m =3/4+1/4*3^(1/2)

3/4-1/4*3^(1/2)

7樓:匿名使用者

對於此抄類方程組,一般只能用fsolve()函式來求解。最好不用solve()函式來求解,可能會導致錯誤的結果。

首先,把x,y當作x向量,即x(1)表示變數x,x(2)表示變數y其次,用匿名函式inline()來自定義函式,即fun=inline('[4*x(1)-x(2)+exp(x(1))/10-1,-x(1)+4*x(2)+x(1)^2/8]','x')

最後,用fslove()函式來求解,即

[x,f,h]=fslove(fun,[0,0])    %[0,0]初值

執行得到

matlab解非線性方程組

8樓:匿名使用者

1. fsolve

求解非線性方程組方程:

f(x)=0

x是乙個向量,f(x)是該向量的函式向量,返回向量值

2.語法

x = fsolve(fun,x0)

x = fsolve(fun,x0,options)

[x,fval] = fsolve(fun,x0)

[x,fval,exitflag] = fsolve(...)

[x,fval,exitflag,output] = fsolve(...)

[x,fval,exitflag,output,jacobian] = fsolve(...)

3. 描述

fsolve用於尋找非線性系統方程組的零點。

x = fsolve(fun,x0)以x0為初始值,努力尋找在fun中描述的方程組。

x = fsolve(fun,x0,options) 以x0為初始值,按照指定的優化設定「options」努力尋找在fun中描述的方程組。使用optimset設定這些選項。

[x,fval] = fsolve(fun,x0)返回在解x處的目標函式fun的值

[x,fval,exitflag] = fsolve(...)返回exitflag表示退出條件。

[x,fval,exitflag,output] = fsolve(...)返回output結構,該結構包含了優化資訊。

[x,fval,exitflag,output,jacobian] = fsolve(...)返回在解x處的jacobian函式。

4. 輸入引數

4.1. fun

非線性系統方程。它是乙個函式,以x作為輸入,返回向量f。函式fun可以被指定為乙個m檔案函式的函式控制代碼。

x = fsolve(@myfun,x0)

這裡的myfun是乙個matlab函式,形如:

function f = myfun(x)

f = ... % ***pute function values at x

fun也可以是乙個非同步函式的函式控制代碼:

x = fsolve(@(x)sin(x.*x),x0);

若使用者定義的值為矩陣,則會被自動轉換為向量。

若jacobian能被計算出來且通過options = optimset('jacobian','on')設定jacobian選項為」on」,則函式fun必須在第2個輸出引數中返回x處的jacobian值j(它是乙個矩陣)。注意:通過檢查nargout的值,當fun被只帶乙個輸出引數呼叫的情況下,該函式可避免計算j,僅只有乙個輸出引數。

(這種情況下,優化演算法僅需要知道f而不需j)。

function [f,j] = myfun(x)

f = ... % objective function values at x

if nargout > 1 % two output arguments

j = ... % jacobian of the function evaluated at x

end4.2. options

提供該函式有關的特定資訊。

5. 輸出引數

5.1. exitflag

乙個用來表示演算法終止原因的整數。

1:函式收斂到x

2:x的變化已經處在容許範圍內

3:殘差變化已經處在容許範圍內

4:搜尋方向飛幅度比指定的誤差小

5:迭代次數超過options.maxiter或函式估值的次數超過options.funevals

-1:演算法被輸出函式終止

-2:演算法似乎收斂到乙個非根點。

-3:可信半徑變得太小

-4:沿當前方向的線性搜尋不能足夠地減小殘差

5.2. output

包含關於優化資訊的乙個結構,其具有如下字段:

iterations:已經迭代的次數

funccount:函式估值的次數

algorithm:所使用的演算法

cgiterations:pcg迭代次數(僅適用於大規模演算法)

stepsize:最終採取的步長(僅適用於中等規模演算法)

firstorderopt:第1階優化的觀測值 。

5.3. options

優化設定。一些選項設定用於所有演算法,部分與大規模演算法(large-scale algrithm)。相關,部分與中等規模演算法相關。

可以使用optimset改變其中的設定。largescale選項指定使用哪種演算法。

設為『on』使用大規模演算法,設為『off』使用中等規模演算法。

5.3.1. medium-scale and large-scale algorithms

如下選項用於大規模和中等規模演算法:

derivativecheck:將使用者提供導數與有限差分導數相比較

diagnostics:顯示被解函式的診斷資訊

diffmaxchange:有限差分變數中的最大變化

diffminchange:有限差分變數中的最小變化

display:顯示的級別,『off『不顯示輸出,』iter『顯示每一步迭代的輸出,』final『顯示最終的輸出(預設)

funvalcheck:檢查目標函式值是否有效。設為『on』,當函式返回值為複數、inf或nan將返回乙個錯誤,設為『off』將不顯示錯誤。

jacobian:設為『on』,fsolve將使用使用者定義的jacobian或jacobian資訊來估值目標函式,若設為『off』,則使用有限差分逼近jacobian。

maxfunevals:最大允許估值次數

maxiter:最大迭代次數

outputf**:指定乙個或多個輸出函式,優化函式在每乙個迭代過程中將呼叫這些函式。

plotf**s:演算法執行時顯示進度條。從預定義中選擇或自定義進度條。

指定@optimplotx顯示當前的點,@optimplotfunccount列印出函式的計數,@optimplotfval列印出函式值,@optimplotresnorm列印出殘差範數,@optimplotstepsize列印出步長,@optimplotfirstorderopt列印優化引數的第1階。

tolfun:函式值的終止誤差。

tolx:x的終止誤差

5.3.2. 僅適用於large-scale algorithm

jacobmult:jacobian乘法函式的函式控制代碼

jacobpattern

maxpcgiter

precondbandwidth

tolpcg

5.3.3. 僅適用於medium-scale algorithm

nonleqnalgorithm:

'dogleg' — trust-region dogleg algorithm

(default)

'lm' — levenberg-marquardt

'gn' — gauss-newton

linesearchtype:'lm' (levenberg-marquardt)

'gn' (gauss-***wton) algorithms.

6. 使用優化工具箱完成以上函式操作

命令:optimtool

寫出非線性方程,積分,微分方程的Matlab數值計算和符號計算的方法

這麼複雜的問題。你分開問或許還有人答。數值方法 解非線性方程 組 用fsolve 解一階常微分方程 組 用ode系列函式 符號計算方法 解非線性方程 組 用solve 解常微分方程 組 用dsolve 微分方程初值問題數值解法,主要介紹了求解常微分方程的matlab符號法 常微分方程數值解的基本原理...

線性方程求解,線性方程求解?

計算方法第三章 線性方程組的解法 1 3 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 線性方程組的解法 你這種常規解法太繁瑣。應為 係數矩陣行列式第 2,3 列都加到第 1 列,第2,3 行都分別減去第 1 行,得 a 2 1 2,1,且 2 時,a 0...

用QR分解法求解線性方程組的matlab程式

matlab做qr分解只是一條語句而已 q,r qr a 那麼線性方程組ax b的解 x r q b matlab怎麼用qr分解求解rq分解 假設要對a進行rq分解 則首先對a的逆進行qr分解 q r qr inv a 即inv a q r,兩邊同時取逆,有a inv r inv q 這樣就完成了a...