c++编程来定义一个矩阵

用c++编程语言来定义一个矩阵的类,要求矩阵的几行几列自己定义,但重点是要实现矩阵的加法重载

c++

1个回答

用MATLAB列矩阵不是更方便

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c++编程来定义一个矩阵
用c++编程语言来定义一个矩阵的类,要求矩阵的几行几列自己定义,但重点是要实现矩阵的加法重载
局部聚类系数求法-用java 编程,图用邻接矩阵表示
多网络中,如果节点v1连接于节点v2,节点v2连接于节点v3,那么节点v3很可能与v1相连接。这种现象体现了部分节点间存在的密集连接性质。可以用聚类系数(CC)来表示,在无向网络中,聚类系数定义为: C = 2*n/(k*(k-1))其中,n表示在节点v的所有k个邻居间的边数。 用Java编写一个求聚类系数的程序,代码注释
分数的分母递增的矩阵的总和,采用C语言的编程实现的原理
Problem Description 我们定义如下矩阵: 1/1 1/2 1/3 1/2 1/1 1/2 1/3 1/2 1/1 矩阵对角线上的元素始终是1/1,对角线两边分数的分母逐个递增。 请求出这个矩阵的总和。 Input 每行给定整数N (N<50000),表示矩阵为 N*N.当N为0时,输入结束。 Output 输出答案,保留2位小数。 Sample Input 1 2 3 4 0 Sample Output 1.00 3.00 5.67 8.83
c语言编程时出现错误为:1.#QNAN0000000,麻烦大佬们看一下问题出在哪儿了,感谢
![图片说明](https://img-ask.csdn.net/upload/201911/11/1573471041_542290.png) # 数值分析大作业 ## c语言 这个是数值分析大作业,我是按照书上一步一步编写的,前366行都是没问题的,问题就出在双步位移QR分解那里,但是我真的无能为力了,感谢大佬们相救,感谢。 ``` 代码如下:(有些printf是我测试用的) #include<stdio.h> #include<math.h> const int n=10,L=10; double err=1e-12; //定义主函数 int main() { int i,j; double A[n][n],B[n][n]; //B[][]是为保证矩阵A(n-1)[][]不被破坏的中间矩阵 //调用函数声明 void faketriangle(double a[n][n]); //构造拟上三角化矩阵函数 void QR(double a[n][n]); void doublestepQR(double a[n][n]); printf("矩阵A为:\n"); //定义矩阵A for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(i==j) { A[i][j]=1.52*cos(1+i+1.2*(1+j)); }else { A[i][j]=sin(0.5*(1+i)+0.2*(1+j)); } printf("%0.12f\t",A[i][j]); } printf("\n"); } printf("\n"); printf("矩阵A(n-1)为:\n"); //调用构造拟上三角化矩阵函数A(n-1) faketriangle(A); for(i=0;i<n;i++) { for(j=0;j<n;j++) { B[i][j]=A[i][j]; } } printf("\n"); printf("矩阵A(n-1)分解为QR矩阵\n"); QR(A); printf("\n"); doublestepQR(B); } //构造拟上三角化矩阵函数A(n-1) 函数主体 void faketriangle(double a[n][n]) { int i,j,r; double sum,d,c,h,t; double u[n],w[n],q[n],p[n]; //算法开始迭代 for(r=0;r<n-2;r++) { sum=0; for(i=r+2;i<n;i++) { sum+=fabs(a[i][r]); } //判断是否满足a[i][r]=0(i=r+2,..,n)? if(sum>0) { sum=0; //计算d for(i=r+1;i<n;i++) { sum+=a[i][r]*a[i][r]; } d=sqrt(sum); //计算c if(a[r+1][r]>0) { c=-d; }else { c=d; } //计算h h=c*c-c*a[r+1][r]; //向量u[r]的建立 for(i=0;i<n;i++) { if(i<r+1) { u[i]=0; }else if(i==r+1) { u[i]=a[i][r]-c; }else { u[i]=a[i][r]; } // printf("%0.12f\n",u[i]); } //求解向量p for(i=0;i<n;i++) { sum=0; for(j=0;j<n;j++) { sum+=a[j][i]*u[j]; } p[i]=sum/h; // printf("%0.12f\n",p[i]); } // //求解矩阵q for(i=0;i<n;i++) { sum=0; for(j=0;j<n;j++) { sum+=a[i][j]*u[j]; } q[i]=sum/h; // printf("%0.12f\n",q[i]); } //求t sum=0; for(i=0;i<n;i++) { sum+=p[i]*u[i]; } t=sum/h; // printf("%0.12f\n",t); //求w[] for(i=0;i<n;i++) { w[i]=q[i]-t*u[i]; // printf("%0.12f\n",w[l]); } //求a(r+1) for(i=0;i<n;i++) { for(j=0;j<n;j++) { a[i][j]=a[i][j]-(w[i]*u[j]+u[i]*p[j]); // printf("%0.12f\t",a[i][j]); } // printf("\n"); } } } //输出矩阵A(n-1) for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%0.12f\t",a[i][j]); } printf("\n"); } } //将 A(n-1)矩阵进行QR分解 void QR(double a[n][n]) { int i,j,k,r; double sum,d,c,h; double Q[n][n],u[n],w[n],p[n],R[n][n],b[n][n]; //定义矩阵Q[][] for(i=0;i<n;i++) { for(j=0;j<n;j++) { if(i==j) { Q[i][j]=1; }else { Q[i][j]=0; } // printf("%0.12f\t",Q[i][j]); } // printf("\n"); } // printf("\n"); //算法迭代 for(r=0;r<n-1;r++) { sum=0; for(i=r+1;i<n;i++) { sum+=fabs(a[i][r]); } if(sum>0) { //计算d sum=0; for(i=r;i<n;i++) { sum+=a[i][r]*a[i][r]; } d=sqrt(sum); //计算c if(a[r][r]>0) { c=-d; }else { c=d; } //计算h h=c*(c-a[r][r]); //构造向量u[] for(i=0;i<n;i++) { if(i<r) { u[i]=0; }else if(i==r) { u[i]=a[i][r]-c; }else { u[i]=a[i][r]; } } //计算w[] for(i=0;i<n;i++) { sum=0; for(j=0;j<n;j++) { sum+=Q[i][j]*u[j]; } w[i]=sum; } //计算Q(r+1) for(i=0;i<n;i++) { for(j=0;j<n;j++) { Q[i][j]=Q[i][j]-w[i]*u[j]/h; } } //计算P[] for(j=0;j<n;j++) { sum=0; for(i=0;i<n;i++) { sum+=a[i][j]*u[i]/h; } p[j]=sum; } //计算a[r+1] for(i=0;i<n;i++) { for(j=0;j<n;j++) { a[i][j]=a[i][j]-u[i]*p[j]; } } } } printf("Q矩阵为:\n"); //输出Q[][]、R[][] for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%0.12f\t",Q[i][j]); } printf("\n"); } printf("\n"); printf("R矩阵为:\n"); for(i=0;i<n;i++) { for(j=0;j<n;j++) { R[i][j]=a[i][j]; printf("%0.12f\t",R[i][j]); } printf("\n"); } printf("RQ相乘后的矩阵为:\n"); //求解R[][]*Q[][] for(i=0;i<n;i++) { for(j=0;j<n;j++) { sum=0; for(k=0;k<n;k++) { sum+=R[i][k]*Q[k][j]; } b[i][j]=sum; printf("%0.12f\t",b[i][j]); } printf("\n"); } // printf("QR相乘后的矩阵为:\n"); // //求解Q[][]*R[][] // for(i=0;i<n;i++) // { // for(j=0;j<n;j++) // { // sum=0; // for(k=0;k<n;k++) // { // sum+=Q[i][k]*R[k][j]; // } // b[i][j]=sum; // printf("%0.12f\t",b[i][j]); // } // printf("\n"); // } } //以上没问题 //定义复数结构体 struct complex { double re; double im; }; //对A(n-1)进行双步位移的QR分解 void doublestepQR(double a[n][n]) { //M[][]QR分解函数声明 void MQR(double a[n][n],double M[n][n],int m); int i,j,k,m,r,l; double A[n][n],M[n][n],I[n][n],A2[n][n]; double x,y,z,sum; double s,t; struct complex lambda[n]; struct complex s1,s2; k=0;m=n-1; step3: if(fabs(a[m][m-1])<=err) { lambda[m].re=a[m][m]; lambda[m].im=0; m--; goto step4; }else { goto step5; } step4: if(m==0) { lambda[m].re=a[0][0]; lambda[m].im=0; goto step11; }else if(m==-1) { goto step11; }else { goto step3; } step5: x=a[m-1][m-1]+a[m][m]; y=a[m-1][m-1]*a[m][m]-a[m-1][m]*a[m][m-1]; z=x*x-4*y; if(z>=0) { z=sqrt(z); s1.re=(x+z)/2; s1.im=0; s2.re=(x-z)/2; s2.im=0; }else { z=sqrt(fabs(z)); s1.re=(x)/2; s1.im=(z)/2; s2.re=x/2; s2.im=(-z)/2; } step6: if(m==1) { lambda[m].re=s1.re; lambda[m].im=0; lambda[m-1].re=s2.re; lambda[m-1].im=s2.im; goto step11; }else { goto step7; } step7: if(fabs(a[m-1][m-2])<=err) { if(z>=0) { lambda[m-1].re=(x+sqrt(z))/2; //两个特征值 lambda[m-1].im=0; lambda[m-2].re=(x-sqrt(z))/2; lambda[m-2].im=0; }else { lambda[m-1].re=(x)/2; lambda[m-1].im=(sqrt(fabs(z)))/2; lambda[m-2].re=x/2; lambda[m-2].im=(-sqrt(fabs(z)))/2; } m=m-2; goto step4; }else { goto step8; } step8: if(k==L) { goto step12; }else { goto step9; } step9: // for(i=0;i<m;i++) // { // for(j=0;j<m;j++) // { // a[i][j]=a[i][j]; // } // } s=a[m-1][m-1]+a[m][m]; t=a[m-1][m-1]*a[m][m]-a[m][m-1]*a[m-1][m]; //定义矩阵I[][] for(i=0;i<m;i++) { for(j=0;j<m;j++) { if(i==j) { I[i][j]=1; }else { I[i][j]=0; } } } // printf("%M[][]为:\n"); //计算矩阵M[][] for(i=0;i<m;i++) { for(j=0;j<m;j++) { sum=0; for(l=0;l<m;l++) { sum+=a[i][l]*a[l][j]; } M[i][j]=sum-s*a[i][j]+t*I[i][j]; printf("%0.12f\t",M[i][j]); } printf("\n"); } printf("\n"); //调用M[][]QR分解、计算A(k+1)的函数 MQR(a,M,m); step10: k++; goto step3; step11: printf("特征值已计算完毕。\n"); for(i=0;i<n;i++) { printf("%0.12f+%0.12fi\n",lambda[i].re,lambda[i].im); } for(i=0;i<n;i++) { if(lambda[i].im==0) { // vector(); } } step12: printf("未得到所有特征值。\n"); } //M[][]QR分解、计算A(k+1)的函数 void MQR(double a[n][n],double M[n][n],int m) { int i,j,r; double sum,d,c,h,t; double B[n][n],C[n][n],p[n],q[n],v[n],w[n],u[n]; printf("B:\n"); for(i=0;i<m;i++) { for(j=0;j<m;j++) { B[i][j]=M[i][j]; printf("%f\t",B[i][j]); } printf("\n"); } for(i=0;i<m;i++) { for(j=0;j<m;j++) { C[i][j]=a[i][j]; } } //循环计算矩阵A(k+1) for(r=0;r<m;r++) //r的范围 { sum=0; for(i=r+1;i<m;i++) { sum+=fabs(B[i][r]); } printf("sum:\n"); printf("%0.12f\n",sum); //sum有问题 printf("\n\n\n"); printf("r:%d\n\n\n\n\n",r); if(sum>0) { //计算d sum=0; for(i=r;i<m+1;i++) { sum+=B[i][r]*B[i][r]; printf("B:%0.12f\n",B[i][r]); //B[][]? printf("\n"); } printf("sum:%0.12f\n",sum); //sum有问题 fiest!! printf("\n"); d=sqrt(sum); printf("%0.12f\n",d); //d有问题 printf("\n"); //计算c if(B[r][r]>0) { c=-d; }else { c=d; } printf("%0.12f\n",c); //c有问题 printf("\n"); //计算h h=c*(c-B[r][r]); printf("%0.12f\n",h); //h有问题 printf("\n"); //构造向量u[] for(i=0;i<m;i++) { if(i<r) { u[i]=0; }else if(i==r) { u[i]=B[i][r]-c; }else { u[i]=B[i][r]; } } //计算v[] for(i=0;i<m;i++) { sum=0; for(j=r;j<m;j++) { sum+=B[j][i]*u[j]; } v[i]=sum/h; } //计算B(r+1) for(i=0;i<m;i++) { for(j=0;j<m;j++) { B[i][j]=B[i][j]-u[i]*v[j]; } } //计算p[] for(i=0;i<m;i++) { sum=0; for(j=r;j<m;j++) { sum+=C[j][i]*u[j]; } p[i]=sum/h; } //计算q[] for(i=0;i<m;i++) { sum=0; for(j=r;j<m;j++) { sum+=C[i][j]*u[j]; } q[i]=sum/h; } //计算t sum=0; for(i=r;i<m;i++) { sum+=p[i]*u[i]; } t=sum/h; //计算w[] for(i=0;i<m;i++) { w[i]=q[i]-t*u[i]; } //计算C[r+1] for(i=0;i<m;i++) { for(j=0;j<m;j++) { C[i][j]=C[i][j]-w[i]*u[j]-u[i]*p[j]; } } }else { ; } } for(i=0;i<m;i++) { for(j=0;j<m;j++) { a[i][j]=C[i][j]; printf("%f\t",a[i][j]); } printf("\n"); } } ```
求大神帮帮忙,小妹感激不尽
按如下函数原型编程从键盘输入一个m行n列的二维数组,然后计算数组中元素的最大值及其所在的行列下标值。其中,m和n的值由用户键盘输入。已知m和n的值都不超过10。 void InputArray(int *p, int m, int n); int FindMax(int *p, int m, int n, int *pRow, int *pCol); 输入提示信息: "Input m, n:" "Input %d*%d array:\n" 输入格式:"%d,%d" 输出提示信息和格式:"max = %d, row = %d, col = %d\n" #include <stdio.h> #define M 10 #define N 10 void InputMatrix(int *p, int m, int n); int FindMax(int *p, int m, int n, int *pRow, int *pCol); int main() {                   int a[M][N], m, n, row, col, max;     printf("Input m, n:");     scanf("%d,%d", &m, &n);     InputMatrix(*a, m, n);     max = FindMax(*a, m, n, &row, &col);     printf("max = %d, row = %d, col = %d\n", max, row, col);     return 0; }               /* 函数功能:输入m*n矩阵的值 */ void InputMatrix(int *p, int m, int n) {                   int i, j;     printf("Input %d*%d array:\n", m, n);     for (i = 0; i < m; i++)     {                       for (j = 0; j < n; j++)         {                           scanf("%d", &p[i * n + j]);         }     } }               /* 函数功能:在m*n矩阵中查找最大值及其所在的行列号 */ int FindMax(int *p, int m, int n, int *pRow, int *pCol) {                   int i, j, max = p[0];     *pRow = 0;     *pCol = 0;     for (i = 0; i < m; i++)     {                       for (j = 0; j < n; j++)         {                           if (p[i * n + j] > max)             {                               max = p[i * n + j];                 *pRow = i;              /*记录行下标*/                 *pCol = j;              /*记录列下标*/             }         }     }     return max; }               那么这边小妹就看不懂了,在输入m*n矩阵的函数中在函数名中定义了一个指针变量p可以直接存储数组吗?指针不一般存储一个数的地址吗?可以存储一个数组的地址吗? 求大神赐教,小妹感激不尽
关于flex与java交互的问题
各位前辈好! 本人最近在做一个关于输气管网计算界面的项目,要用到Flex与java通信。我在java里面定义了static变量,然后在flex里面向java传值(传的值有数组类型,也有double类型),然后在java里面实现计算并返回(能不能返回数组?如何做到?在flex里输入到什么组件比较好?)到flex。现在我经过测试发现传值的过程没什么问题,但是返回到flex里老出问题,百思不得其解,请求各位援助。 下面是我的调用的java类: (注:程序运行没有什么问题的,只是没法被flex调用返回值,我是想调用Final()或者calculation()来返回getP()等) package danxiang; import java.sql.ResultSet; import com.sun.xml.internal.bind.v2.schemagen.xmlschema.List; import domain.Model; import domain.Result; import flex.messaging.io.ArrayList; public class SectionCalculationwj { static double d[]; static int start[]; public static double deta ; public static double Z; static int end[]; static double l[]; static double qq[]; static double Q0[]; static double section[]; public static int point; public static int ss; static double P0[] ; static double T0[]; public static double Th ; static double K[] ; public static double rog ; public static double cpg ; public static double Di; //下面这一部分是在flex里面调用的,从flex里面往这传值 public String initiateqq(double init[]) { qq=init; return "qq"; } public String initiatepoint(int i) { point=i; return "point"; } public String initiateSection(double init[]) { section=init; return "section"; } public String initiateStart(int init[]) { start=init; return "start"; } public String initiateEnd(int init[]) { end=init; return "end::"+end[1]; } public String initiated(double init[]) { d=init; return "D:::"+d[1]; } public String initiatel(double init[]) { l=init; return "L:::"+l[1]; } public String initiateT0(double init[]) { T0=init; return "T0"; } public String initiateQ0(double init[]) { Q0=init; return "Q0"; } public String initiateP(double init[]) { P0=init; return "P0"; } public String initiateK(double init[]) { K=init; return "K"; } public double initiatedeta(double DETA) { deta=DETA; return deta; } public double initiatess(int S) { ss=S; return ss; } public double initiaterog(double ROG) { rog=ROG; return rog; } public double initiatecpg(double C) { cpg=C; return cpg; } public double initiateDi(double di) { Di=di; return Di; } public double initiateTh(double th) { Th=th; return Th; } public double initiateZ(double zz) { Z=zz; return Z; } // // //下面是我希望调用的,并返回到flex里面。。 // public String Final() { // SectionCalculationwj aa = new SectionCalculationwj(); // aa.calculation(); // return "Hello,成功了!"; // // } public double[] calculation() { int step = 0; Result result = new Result(); //第一步,取初值 Model model = getInitValue(); //节点数 int n = model.getPoint(); //管道数 int m = model.getSection().length; //计算出A,Azz result.setA(A(model)); result.setAzz(Azz(result.getA())); result.setP(model.getP0()); result.setAverageP(averageP(model, result)); double condition; result.setQx(model.getQ0()); result.setT(model.getT0()); result.setBw(bw(result)); do { result.setSj(Sj(model, result)); double[] tempQ = {}; //算AGA之前先求出G result.setG(G(result.getSj(), result.getQx())); result.setAGA(AGA(result)); fenkuai kf = new fenkuai(); result.setP(kf.fk(result.getAGA(), model.getSs(), result.getP(), model.getQq())); result.setAverageP(averageP(model, result)); result.setDetap(detap(result)); tempQ = Qnew(result); condition = condition(tempQ, result.getQx()); for (int k = 0; k < tempQ.length; k++) { tempQ[k] = (result.getQx()[k] + tempQ[k]) / 2; } result.setQx(tempQ); // 温降 水 result.setAa(aa(model, result)); result.setT(resetT(model, result)); // 水的析出 result.setBw(bw(result)); result.setDetabw(detabw(model,result)); step += 1; } while (condition > 0.001); System.out.println(step); for (int i = 0; i < 12; i++) { System.out.println("" + result.getP()[i]); } for (int i = 0; i < 12; i++) { System.out.println("" + result.getT()[i]); } for (int i = 0; i < 11; i++) { System.out.println("" + result.getDetabw()[i]); } return result.getP(); } public double[][] A(Model model) { int[] start = model.getStart(); int[] end = model.getEnd(); double[] section = model.getSection(); int n = model.getPoint(); int m = section.length; double[][] A = new double[n][m]; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (i + 1 == start[j]) { A[i][j] = -1; } if (i + 1 == end[j]) { A[i][j] = 1; } else if (i + 1 != start[j] && i + 1 != end[j]) { A[i][j] = 0; } } } return A; } //将A矩阵转置 public double[][] Azz(double[][] A) { int n = A.length; int m = A[0].length; double[][] Azz = new double[m][n]; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { Azz[j][i] = A[i][j]; } } return Azz; } // 计算Sj public double[] Sj(Model model, Result result) { double[] section = model.getSection(); double[] D = model.getD(); double[] L = model.getL(); double[] T = result.getT(); double deta = model.getDeta(); double Z = model.getZ(); double[] averageP = result.getAverageP(); //第一步,计算lam的值 int m = section.length; double[] lam = new double[m]; double[] Sj = new double[m]; for (int i = 0; i < m; i++) { lam[i] = 0.009407 / Math.pow(D[i], (1.0 / 3)); } //第二步,计算Sj for (int i = 0; i < m; i++) { Sj[i] = -675.3515 * lam[i] * deta * Z * T[i] * L[i] / Math.pow(D[i], 5) / (2 * averageP[i]); } return Sj; } // 计算G public double[][] G(double[] Sj, double[] Q) { int m = Sj.length; double[][] G = new double[m][m]; for (int i = 0; i < m; i++) { for (int j = 0; j < m; j++) { if (i == j) { G[i][j] = 1 / Sj[i] / Math.abs(Q[i]); } else { G[i][j] = 0; } } } return G; } //计算AGA public double[][] AGA(Result result) { double[][] G = result.getG(); double[][] A = result.getA(); double[][] Azz = result.getAzz(); int n = A.length; int m = A[0].length; double AG[][] = new double[n][m]; double AGA[][] = new double[n][n]; for (int i = 0; i < A.length; i++) { for (int j = 0; j < G[0].length; j++) { for (int k = 0; k < G.length; k++) { AG[i][j] += A[i][k] * G[k][j]; } } } for (int i = 0; i < AG.length; i++) { for (int j = 0; j < Azz[0].length; j++) { for (int k = 0; k < Azz.length; k++) { AGA[i][j] += AG[i][k] * Azz[k][j]; } } } return AGA; } public double[] detap(Result result) { double[][] Azz = result.getAzz(); double[] p = result.getP(); int m = Azz.length; int n = Azz[0].length; double[] detap = new double[m]; //计算压力降 for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { detap[i] += Azz[i][j] * p[j]; } } return detap; } public double[] averageP(Model model, Result result) { double[] P = result.getP(); int[] start = model.getStart(); int[] end = model.getEnd(); int m = start.length; double[] averageP = new double[m]; for (int j = 0; j < m; j++) { averageP[j] = 0.5 * (P[start[j] - 1] + P[end[j] - 1]); } return averageP; } public double[] Qnew(Result result) { //计算新流量 double[][] G = result.getG(); double[] detap = result.getDetap(); int m = G.length; double[] Qnew = new double[m]; for (int i = 0; i < m; i++) { for (int j = 0; j < m; j++) { Qnew[i] += G[i][j] * detap[j]; } } return Qnew; } public double condition(double[] tempQ, double[] Q) { int m = tempQ.length; double condition = 0.0; for (int i = 0; i < m; i++) { condition += Math.pow((tempQ[i] - Q[i]), 2); } condition = Math.pow(condition, 0.5); return condition; } //单相温降计算 public double[] aa(Model model, Result result) { double[] Q = result.getQx(); double[] D = model.getD(); double[] K = model.getK(); double rog = model.getRog(); double cpg = model.getCpg(); double[] bw=result.getBw(); int m = Q.length; double[] aa = new double[m]; for (int i = 0; i < m; i++) { aa[i] = K[i] * Math.PI * D[i] / ((rog+bw[i]) * Q[i] * cpg )/1000000; } return aa; } public double[] resetT(Model model, Result result) { double Th = model.getTh(); int[] start = model.getStart(); int[] end = model.getEnd(); double[] T = result.getT(); double[] aa = result.getAa(); double[] l = model.getL(); double Di = model.getDi(); double[] detap = result.getDetap(); int m = aa.length; for (int i = 0; i < m; i++) { T[end[i] - 1] = Th + ((T[start[i] - 1]) - Th) * Math.exp(-aa[i] * l[i]) + Di * detap[i] / 1000000 * (1 - Math.exp(-aa[i] * l[i])) / aa[i] / l[i]; } return T; } //饱和水的计算kg/m3直接加在气体密度上 public double[] bw(Result result) { double[] T = result.getT(); double[] P=result.getP(); int m = P.length; double[] pb=new double[m];//饱和蒸汽压 double[] bw = new double[m]; // y = 0.06233 x3 + 0.60057 x2 + 46.27664 x + 643.34653 xOC,ypa for (int j = 0; j < m; j++) { pb[j] = 0.06233*Math.pow(T[j]-273.15,3)+0.60057*Math.pow(T[j]-273.15,2)+46.27664*(T[j]-273.15)+643.34653; bw[j]=803*pb[j]/(P[j]-pb[j])*0.001; } return bw; } //起终点水量变化计算 >0进水,<0析出水 单位kg public double[] detabw(Model model,Result result) { double[] bw = result.getBw(); int[] start=model.getStart(); int[] end=model.getEnd(); double[]d=model.getD(); double[]L=model.getL(); int m = start.length; double[] detabw = new double[m]; for (int j = 0; j < m; j++) { detabw[j] = (bw[end[j]-1] - bw[start[j]-1])*(Math.PI*Math.pow(d[j], 2)/4)*L[j]; } return detabw; } }
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
2019年还剩1天,我从外包公司离职了
这日子过的可真快啊,2019年还剩1天,外包公司干了不到3个月,我离职了
《面试宝典》2019年springmvc面试高频题(java)
前言 2019即将过去,伴随我们即将迎来的又是新的一年,过完春节,马上又要迎来新的金三银四面试季。那么,作为程序猿的你,是否真的有所准备的呢,亦或是安于本职工作,继续做好手头上的事情。 当然,不论选择如何,假如你真的准备在之后的金三银四跳槽的话,那么作为一个Java工程师,就不可不看了。如何在几个月的时间里,快速的为即将到来的面试进行充分的准备呢? 1、什么是Spring MVC ?简单...
计算机网络的核心概念
这是《计算机网络》系列文章的第二篇文章 我们第一篇文章讲述了计算机网络的基本概念,互联网的基本名词,什么是协议以及几种接入网以及网络传输的物理媒体,那么本篇文章我们来探讨一下网络核心、交换网络、时延、丢包、吞吐量以及计算机网络的协议层次和网络攻击。 网络核心 网络的核心是由因特网端系统和链路构成的网状网络,下面这幅图正确的表达了这一点 那么在不同的 ISP 和本地以及家庭网络是如何交换信息的呢?...
python自动下载图片
近日闲来无事,总有一种无形的力量萦绕在朕身边,让朕精神涣散,昏昏欲睡。 可是,像朕这么有职业操守的社畜怎么能在上班期间睡瞌睡呢,我不禁陷入了沉思。。。。 突然旁边的IOS同事问:‘嘿,兄弟,我发现一个网站的图片很有意思啊,能不能帮我保存下来提升我的开发灵感?’ 作为一个坚强的社畜怎么能说自己不行呢,当时朕就不假思索的答应:‘oh, It’s simple. Wait for me a few
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
20道你必须要背会的微服务面试题,面试一定会被问到
写在前面: 在学习springcloud之前大家一定要先了解下,常见的面试题有那块,然后我们带着问题去学习这个微服务技术,那么就会更加理解springcloud技术。如果你已经学了springcloud,那么在准备面试的时候,一定要看看看这些面试题。 文章目录1、什么是微服务?2、微服务之间是如何通讯的?3、springcloud 与dubbo有哪些区别?4、请谈谈对SpringBoot 和S...
Java 14 都快来了,为什么还有这么多人固守Java 8?
从Java 9开始,Java版本的发布就让人眼花缭乱了。每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份,...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试一个ArrayList我都能跟面试官扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
2020年1月中国编程语言排行榜,python是2019增长最快编程语言
编程语言比例 排名 编程语言 最低工资 工资中位数 最低工资 最高工资 人头 人头百分比 1 rust 20713 17500 5042 46250 480 0.14% 2 typescript 18503 22500 6000 30000 1821 0.52% 3 lua 18150 17500 5250 35000 2956 0.84% 4 go 17989 16...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
Idea 中最常用的10款插件(提高开发效率),一定要学会使用!
学习使用一些插件,可以提高开发效率。对于我们开发人员很有帮助。这篇博客介绍了开发中使用的插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
点击上方蓝字设为星标下面开始今天的学习~今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。1、no code 项目地址:https://github.com/kelseyhight...
Python全栈 Linux基础之3.Linux常用命令
Linux对文件(包括目录)有很多常用命令,可以加快开发效率:ls是列出当前目录下的文件列表,选项有-a、-l、-h,还可以使用通配符;c功能是跳转目录,可以使用相对路径和绝对路径;mkdir命令创建一个新的目录,有-p选项,rm删除文件或目录,有-f、-r选项;cp用于复制文件,有-i、-r选项,tree命令可以将目录结构显示出来(树状显示),有-d选项,mv用来移动文件/目录,有-i选项;cat查看文件内容,more分屏显示文件内容,grep搜索内容;>、>>将执行结果重定向到一个文件;|用于管道输出。
​两年前不知如何编写代码的我,现在是一名人工智能工程师
全文共3526字,预计学习时长11分钟 图源:Unsplash 经常有小伙伴私信给小芯,我没有编程基础,不会写代码,如何进入AI行业呢?还能赶上AI浪潮吗? 任何时候努力都不算晚。 下面,小芯就给大家讲一个朋友的真实故事,希望能给那些处于迷茫与徘徊中的小伙伴们一丝启发。(下文以第一人称叙述) 图源:Unsplash 正如Elsa所说,职业转换是...
强烈推荐10本程序员必读的书
很遗憾,这个春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终将会...
非典逼出了淘宝和京东,新冠病毒能够逼出什么?
loonggg读完需要5分钟速读仅需 2 分钟大家好,我是你们的校长。我知道大家在家里都憋坏了,大家可能相对于封闭在家里“坐月子”,更希望能够早日上班。今天我带着大家换个思路来聊一个问题...
牛逼!一行代码居然能解决这么多曾经困扰我半天的算法题
春节假期这么长,干啥最好?当然是折腾一些算法题了,下面给大家讲几道一行代码就能解决的算法题,当然,我相信这些算法题你都做过,不过就算做过,也是可以看一看滴,毕竟,你当初大概率不是一行代码解决的。 学会了一行代码解决,以后遇到面试官问起的话,就可以装逼了。 一、2 的幂次方 问题描述:判断一个整数 n 是否为 2 的幂次方 对于这道题,常规操作是不断这把这个数除以 2,然后判断是否有余数,直到 ...
立即提问