⑴ C++ 牛頓迭代解非線性方程組雅克比矩陣出現奇異
給你一個kernel做參考吧
void Jacobi(double* A , double* x , double lagma , unsigned int n)
{
unsigned int i , j , k=0 ;
unsigned int L=20 ;
double temp;
//double mu = 1e-12;//精度
//double Fanshu1; // x的一范數
double* AA=(double*)malloc((n+1)*(n+1));
for(i=1;i<=n;i++)
{
*(x+i)=1;//迭代初始值設置為1
*(AA+i*n+i) = *(A+i*n+i)-lagma; // AA=A-lagma*I
}
while(1)
{
for(i = 1 ; i<= n ; i++)
{
temp = 0;
//Fanshu1=0;
for(j = 1 ; j <= n ; j++)
if(j!=i)
temp -= *(AA+i*n+j) * *(x+j);
*(x+i) = temp/ *(AA+i*n+i);
}
k++;
if(k==L)
{
//printf("Jacobi法求解Ax=b時 迭代次數超過最大值");
break;
}
}
free(AA);
}