打开一个终端,执行下面的命令:sudo rm /var/crash/
这个 *** 作会删除所有在/var/crash目录下的所有内容。这样你就不会再被这些报告以前程序错误的d窗所扰。但是如果又有一个程序崩溃了,你就会再次看到“检测到系统程序错误”的错误。你可以再次删除这些报告文件,或者你可以禁用Apport来彻底地摆脱这个错误d窗。
2、彻底地摆脱Ubuntu中的系统错误d窗
要禁止Apport,并且彻底地摆脱Ubuntu系统中的程序崩溃报告,打开一个终端,输入以下命令:
gksu gedit /etc/default/apport
这个文件的内容是:
# 设置0表示禁用Apportw,或者1开启它。
# 你可以用下面的命令暂时关闭它:
# sudo service apport start force_start=1
enabled=1
把enabled=1改为enabled=0。保存并关闭文件。完成之后你就再也不会看到d窗报告错误了。很显然,如果我们想重新开启错误报告功能,只要再打开这个文件,把enabled设置为1就可以了。
/
本程序在linux g++下编译通过
bool svd(vector<vector<double> > A, int K, vector<vector<double> > &U, vector<double> &S, vector<vector<double> > &V);
A: 输入待分解矩阵
U[0],U[1],,U[K-1]: 前K大奇异值对应的左奇异向量
S[0],S[1],,S[K-1]: 前K大奇异值 S[0]>=S[1]>=>=S[K-1]
V[0],V[1],,V[K-1]: 前K大奇异值对应的右奇异向量
/
#include <cmath>
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <vector>
using namespace std;
const int MAX_ITER=100000;
const double eps=00000001;
double get_norm(double x, int n){
double r=0;
for(int i=0;i<n;i++)
r+=x[i]x[i];
return sqrt(r);
}
double normalize(double x, int n){
double r=get_norm(x,n);
if(r<eps)
return 0;
for(int i=0;i<n;i++)
x[i]/=r;
return r;
}
inline double product(doublea, double b,int n){
double r=0;
for(int i=0;i<n;i++)
r+=a[i]b[i];
return r;
}
void orth(double a, double b, int n){//|a|=1
double r=product(a,b,n);
for(int i=0;i<n;i++)
b[i]-=ra[i];
}
bool svd(vector<vector<double> > A, int K, vector<vector<double> > &U, vector<double> &S, vector<vector<double> > &V){
int M=Asize();
int N=A[0]size();
Uclear();
Vclear();
Sclear();
Sresize(K,0);
Uresize(K);
for(int i=0;i<K;i++)
U[i]resize(M,0);
Vresize(K);
for(int i=0;i<K;i++)
V[i]resize(N,0);
srand(time(0));
double left_vector=new double[M];
double next_left_vector=new double[M];
double right_vector=new double[N];
double next_right_vector=new double[N];
int col=0;
for(int col=0;col<K;col++){
double diff=1;
double r=-1;
while(1){
for(int i=0;i<M;i++)
left_vector[i]= (float)rand() / RAND_MAX;
if(normalize(left_vector, M)>eps)
break;
}
for(int iter=0;diff>=eps && iter<MAX_ITER;iter++){
memset(next_left_vector,0,sizeof(double)M);
memset(next_right_vector,0,sizeof(double)N);
for(int i=0;i<M;i++)
for(int j=0;j<N;j++)
next_right_vector[j]+=left_vector[i]A[i][j];
r=normalize(next_right_vector,N);
if(r<eps) break;
for(int i=0;i<col;i++)
orth(&V[i][0],next_right_vector,N);
normalize(next_right_vector,N);
for(int i=0;i<M;i++)
for(int j=0;j<N;j++)
next_left_vector[i]+=next_right_vector[j]A[i][j];
r=normalize(next_left_vector,M);
if(r<eps) break;
for(int i=0;i<col;i++)
orth(&U[i][0],next_left_vector,M);
normalize(next_left_vector,M);
diff=0;
for(int i=0;i<M;i++){
double d=next_left_vector[i]-left_vector[i];
diff+=dd;
}
memcpy(left_vector,next_left_vector,sizeof(double)M);
memcpy(right_vector,next_right_vector,sizeof(double)N);
}
if(r>=eps){
S[col]=r;
memcpy((char )&U[col][0],left_vector,sizeof(double)M);
memcpy((char )&V[col][0],right_vector,sizeof(double)N);
}else{
cout<<r<<endl;
break;
}
}
delete [] next_left_vector;
delete [] next_right_vector;
delete [] left_vector;
delete [] right_vector;
return true;
}
void print(vector<vector<double> > &A){
}
int main(){
int m=10;
int n=8;
int k=5;
//分解一个108的矩阵A,求其前5个奇异值和奇异向量
srand(time(0));
vector<vector<double> > A;
Aresize(m);
for(int i=0;i<m;i++){
A[i]resize(n);
for(int j=0;j<n;j++)
A[i][j]=(float)rand()/RAND_MAX-05;
}
cout<<"A="<<endl;
for(int i=0;i<Asize();i++){
for(int j=0;j<A[i]size();j++){
cout<<setw(12)<<A[i][j]<<' ';
}
cout<<endl;
}
cout<<endl;
vector<vector<double> > U;
vector<double> S;
vector<vector<double> > V;
svd(A,k,U,S,V);
cout<<"U="<<endl;
for(int i=0;i<U[0]size();i++){
for(int j=0;j<Usize();j++){
cout<<setw(12)<<U[j][i]<<' ';
}
cout<<endl;
}
cout<<endl;
cout<<"S="<<endl;
for(int i=0;i<Ssize();i++){
cout<<setw(7)<<S[i]<<' ';
}
cout<<endl;
cout<<"V="<<endl;
for(int i=0;i<V[0]size();i++){
for(int j=0;j<Vsize();j++){
cout<<setw(12)<<V[j][i]<<' ';
}
cout<<endl;
}
return 0;
}
以上就是关于ubuntu系统启动时reservedsvdcode108全部的内容,包括:ubuntu系统启动时reservedsvdcode108、svd分解 c语言实现、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)