一个经过有限差分法处理的非线性方程组 比如说变量是x,y,z 但这些变量在方程组里是x(k)x(k-1)等这样表示的 比如说x(k)-x(k-1)-y(k)+z(k)=0 这样的一个方程组用牛顿迭代法解 如何编写代码 方程组 雅克比矩阵如何表示 望高人指点 最好举个列子(有代码)
程序很简单的,有点基础的都能编。但是有一个点必须提醒你,Jacobe矩阵的计算。
两种方法:
解析Jacobe。就是需要你具体的研究非线性方程组的解析表达式,通过求导的方法,得到解析表示的Jacobe矩阵。
数值Jacobe。不需要具体研究方程组的解析式,只需要一个知道输入输出关系的黑盒子。先输入一个x0,得到y0,再输入x0+dx,得到y1,dy/dx=(y1-y0)/dx,dx很小,取10E-6即可,用割线斜率代替导数。
两种给你方法都是常用的办法,各有利弊。
不好意思 可能我说的不太清楚 牛顿迭代法我懂 问题是我不知道如何用matlab语言将方程组 雅克比矩阵 以及变量编写出来 最好举个近似的实例
追答你用matlab做2个子程序function,分别用来计算函数值和雅克比,牛顿迭代法是主程序
追问两个function子程序我都知道 普通的牛顿迭代法解非线性方程组 我也会编写(变量x,y,z就单独的变量 而在方程式中没有x(k),x(k+1)等之类的) 我不知道如何编写我这样的 变量x 在方程式中就有x(k) x(k+1) x(k-1) y z 也是如x这样
追答你得确定x(k-1),x(k),x(k+1)哪个是未知量,哪个是已知量。一般来说,取x(k+1)为未知量,那么x(k),x(k-1)都是历史量,都是已知的,只需要查找内存记录。迭代计算只要关心未知量就可以了。
需要提醒你一下,做二阶以上的积分时,需要做计算启动。因为你输入的初值,只能给出一个x(0),还需要由初始的导数,倒退估算一个x(-1)。这个估算一般就是线性估算了,精度足够。有了x(-1),x(0),你才能计算x(1)。
举个例子吧(要代码) 说了这么多 看不懂
追答兄弟,写这类代码是要花钱的~~
追问钱不是问题 问题是你能不能解决问题
追答我们就是专门做求解器的
matlab数值计算案例分析的目录
第1章MATLAB编程基础11.1 矩阵的基本操作与基本运算11.1.1 矩阵的基本操作11.1.2 矩阵的基本运算21.1.3 *与 .*和\/与.\/ 的区别31.1.4 使用find函数索引符合某些特定条件的矩阵元素31.1.5 eps函数与避免除以0的方法41.2 MATLAB的数据结构41.3 变量、脚本与函数81.3.1 变 量81.3.2 ...