利用牛顿法接非线性方程组的Matlab程序实例
生活随笔
收集整理的這篇文章主要介紹了
利用牛顿法接非线性方程组的Matlab程序实例
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
首先將線性方程組寫成f(x)=0的形式,編寫第一個Matlab函數(shù)
function f = fun() % 求解: % 3*x1-cos(x2*x3)-1/2 = 0 % x1^2-81*(x2+0.1)^2+sin(x3)+1.06 = 0 % exp(-x1*x2)+20*x3+(10*pi-3)/3 = 0 % 求解精度為0.00001syms x1 x2 x3 f1 = 3*x1-cos(x2*x3)-1/2; f2 = x1^2-81*(x2+0.1)^2+sin(x3)+1.06; f3 = exp(-x1*x2)+20*x3+(10*pi-3)/3; f = [f1 f2 f3];然后是方程組的Jacobi矩陣,編寫第二個Matlab函數(shù)
function df = dfun()f = fun(); df = [diff(f,'x1'); diff(f, 'x2'); diff(f, 'x3')]; df = df';然后求解方程組的程序
function x = newton(x0, eps, N) % x0是初值,可以任取,不需要滿足方程組 % 最后得到的解與初值選取有關 % eps為精度 % N最大迭代次數(shù)for i = 1:Nf = eval(subs(fun(), {'x1', 'x2', 'x3'}, {x0(1), x0(2), x0(3)}));df = eval(subs(dfun(), {'x1', 'x2', 'x3'}, {x0(1), x0(2), x0(3)}));x = x0 - f/df;if norm(x - x0) < epsfor j = 1:length(x)fprintf('%.2f\t', x(j));endbreak;endx0 = x; end總結
以上是生活随笔為你收集整理的利用牛顿法接非线性方程组的Matlab程序实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dosbox更新加载的文件夹
- 下一篇: Centos下本地连接postgresq