C++ 牛顿迭代解非线性方程组雅克比矩阵出现奇异
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/12 23:14:09
C++ 牛顿迭代解非线性方程组雅克比矩阵出现奇异
小弟编了一个C++程序用牛顿迭代法解非线性方程组
输入初始值后
第一次迭代成功,得到雅克比矩阵及其逆矩阵
但是把第一次迭代的结果进行第二次迭代的时候
得到的雅克比矩阵是奇异的,没有逆矩阵
迭代就进行不下去了
小弟编了一个C++程序用牛顿迭代法解非线性方程组
输入初始值后
第一次迭代成功,得到雅克比矩阵及其逆矩阵
但是把第一次迭代的结果进行第二次迭代的时候
得到的雅克比矩阵是奇异的,没有逆矩阵
迭代就进行不下去了
给你一个kernel做参考吧
void Jacobi(double* A ,double* x ,double lagma ,unsigned int n)
{
\x05unsigned int i ,j ,k=0 ;
\x05unsigned int L=20 ;
\x05double temp;
\x05//double mu = 1e-12;//精度
\x05//double Fanshu1; // x的一范数
\x05double* AA=(double*)malloc((n+1)*(n+1));
\x05for(i=1;i
再问: 要求255*255的jacobian,程序太长没法贴 我想问的是,有没有这种情况: 在牛顿迭代过程中,jacobian矩阵逐渐会变得奇异? 怎样修正
再答: 是有这样的情况,是因为计算机精度所限,应该是由于每次迭代时,没有对矩阵做必要的变换。
void Jacobi(double* A ,double* x ,double lagma ,unsigned int n)
{
\x05unsigned int i ,j ,k=0 ;
\x05unsigned int L=20 ;
\x05double temp;
\x05//double mu = 1e-12;//精度
\x05//double Fanshu1; // x的一范数
\x05double* AA=(double*)malloc((n+1)*(n+1));
\x05for(i=1;i
再问: 要求255*255的jacobian,程序太长没法贴 我想问的是,有没有这种情况: 在牛顿迭代过程中,jacobian矩阵逐渐会变得奇异? 怎样修正
再答: 是有这样的情况,是因为计算机精度所限,应该是由于每次迭代时,没有对矩阵做必要的变换。