求Matlab大神給解下面這個非線性方程組的方法

時間 2021-08-11 17:49:52

1樓:

可以用fsolve直接求出。計算方法如下:

1、%p=x(1);q=x(2);

%例如資料x隨機給出

x=round(100*rand(10,1))

n=length(x);

f=@(x)[sum(x.^x(1).*log(x))./sum(x.^x(1))-1/x(1)-sum(log(x))/n;

x(2)-(sum(x.^x(1))/n).^(1/x(1))];

options=optimset('maxfunevals',2000,'maxiter',1000);

x = fsolve(f,[0.1;5],options)

p=x(1)

q=x(2)

2、由於你的方程組的特殊性,兩個變數之間沒有耦合,q沒有出現在第一個方程中。於是更加方便的,能每次求出的結果的解法是:

clear

%p=x

x=round(100*rand(10,1))

n=length(x);

f=@(x)sum(x.^x.*log(x))./sum(x.^x)-1/x-sum(log(x))/n;

options=optimset('maxfunevals',2000,'maxiter',1000);

[x fval]= fsolve(f,0.1,options)

p=xq=(sum(x.^x)/n).^(1/x)

個人推薦用第二種方法。因為解方程組,有事fsolve會出現求解失敗。

希望對你有幫助,如若解決,望採納

2樓:穗子和子一

非線性方程組數值解法 - 正文

n個變數n個方程(n >1)的方程組表示為

(1)式中ƒi(x1,x2,…,xn)是定義在n維歐氏空間rn 的開域d上的實函式。若ƒi中至少有一個非線性函式,則稱(1)為非線性方程組。在rn 中記 ƒ= 則(1)簡寫為ƒ(尣)=0。

若存在尣*∈d,使ƒ(尣*)=0,則稱尣*為非線性方程組的解。方程組(1)可能有一個解或多個解,也可能有無窮多解或無解。對非線性方程組解的存在性的研究遠不如線性方程組那樣成熟,現有的解法也不象線性方程組那樣有效。

除極特殊的方程外,一般不能用直接方法求得精確解,目前主要採用迭代法求近似解。根據不同思想構造收斂於解尣*的迭代序列(k=0,1,…),即可得到求解非線性方程組的各種迭代法,其中最著名的是牛頓法。

matlab中如何求解符號變數的非線性方程組的解,求大神賜教!!!**如下: 65

3樓:匿名使用者

matlab中如何求解符號變數的非線性方程組的解,對於簡單明瞭的方程組可以用solve()求得。solve()求解格式為

eq1=f1(x,y,z),eq2=f2(x,y,z),eq3=f3(x,y,z)

solve(eq1,eq2,eq3)

但分析了你給出的**,我覺得只能用數值的方法求解,得到其數值解。你想要解析值是有一定的難度。

常用的數值方法,有二分法,牛頓法等等。

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

4樓:僅僅是追憶

首先定義函式:

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樓:匿名使用者

很高興為您解答,首先定義函式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

滿意請採納回答,謝謝!

6樓:匿名使用者

建立 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

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

7樓:匿名使用者

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

8樓:瑞秋老大

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急求大神幫忙跪求大神幫忙做個多元線性規劃的matlab模型

x 128453,102398,28774,90302,128.6,64.1,64.5 129227,116694,28559,90976,124.1,64.0,60.1 129988,136515,27947,92184,122.9,64.2,58.7 130756,182321,26504,94...

求大神解答!如何用HTML做下面這個網頁啊

要用到html表單元素,通過不同型別的元素實現,可以到網上找相關教程 如何用html css做出這個靜態網頁 求大神解答 5 尚學堂科技 以前我也來做過類似的源這種靜態頁面,其實每bai一塊的佈局都差du不多,做好一個其他的大同zhi小異,dao下面提供我的思路以供參考 巨集觀角度 第一 先把整體框...

用MATLAB求下面的迴歸方程,謝謝!求過程

秦晶輝聲涵 可以不用擬合工具箱,直接用矩陣除法即可!因為為線性求a1,a2即把a1,a2當成未知數,x1,x2,y a0當成已知量則x1 a1 x2 a2 y a0,即 x1,x2 a1 a2 y a0 令矩陣a x1,x2 x1 0 x2 0 x1 1 x2 1 x1 10 x2 10 b y a...