資源簡介
MATLAB源程序代碼分享:MATLAB實現牛頓迭代法求解非線性方程組

代碼片段和文件信息
%%?Code?by?求索哥??QQ:?2787392915??微信:?mathsupp??手機:?18021503708???
%%?定義一個三元非線性方程組
clear;clc;close?all
syms?x?y?z??????????????????????????%?定義符號變量?x?y?z
f1=6/(1+(x-y).^2)+sin(pi*y/2);??????%?方程?1
f2=x*sin(pi*x)+y*sin(20*pi*y)-z;????%?方程?2
f3=x+2.0*y+z;???????????????????????%?方程?3
f=[f1;f2;f3];???????????????????????%?三個方程組成方程組
%%?計算雅克比矩陣
J=[diff(f1x)?diff(f1y)?diff(f1z)?
???diff(f2x)?diff(f2y)?diff(f2z)
???diff(f3x)?diff(f3y)?diff(f3z)];
%%?自定義牛頓迭代算法?求方程組的解
n=1;???????????????????????????????%?記錄迭代的次數
x0=[-5;0;7];???????????????????????%?迭代初值
E=1;
while?E?>?1e-4?????????????????????%?如果精度不滿足要求?則一直進行迭代?直到滿足精度為止
????x=x0(1);???????????????????????%?給?x?賦值
????y=x0(2);???????????????????????%?給?y?賦值
????z=x0(3);???????????????????????%?給?z?賦值
????x1=x0-inv(eval(J))*eval(f);????%?迭代計算?用?x0?迭代得到?x1
????E=max(abs((x1-x0)./x1));???????%?計算求解的精度
????x0=x1;?????????????????????????%?將當前得到的解?x1?賦值給?x0?做為下一次迭代的值
????n=n+1;?????????????????????????%?迭代次數加?1??
end
%%?顯示方程組的解?并將求解結果帶回方程組?驗算求解結果
x=x1(1)????%?x?的求解結果
y=x1(2)????%?y?的求解結果
z=x1(3)????%?z?的求解結果
eval(f)
%%?Code?by?求索哥??QQ:?2787392915??微信:?mathsupp??手機:?18021503708???
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????1379??2019-09-07?17:02??MATLAB實現牛頓迭代法求解非線性方程組\NewtonEqu.m
?????文件???????26508??2019-06-08?23:53??MATLAB實現牛頓迭代法求解非線性方程組\作者微信號.png
?????文件??????146678??2019-08-17?16:06??MATLAB實現牛頓迭代法求解非線性方程組\作者抖音號.png
?????文件???????91524??2019-09-06?22:56??MATLAB實現牛頓迭代法求解非線性方程組\使用牛頓迭代法求解非線性方程組.pdf
?????文件???????28141??2017-03-29?21:21??MATLAB實現牛頓迭代法求解非線性方程組\微信公眾號.jpg
?????目錄???????????0??2019-09-11?22:36??MATLAB實現牛頓迭代法求解非線性方程組\
評論
共有 條評論