求解方程组的实现

对于方程组,我们分为一元二次方程、一元二次方程、二元一次方程组和线性方程组来分析。下面为大致的划分思路:

一元一次方程

这是最简单的方程,例如a*x=b,利用C语言写出程序:(一元一次非常简单,Java也就不重复了)

C语言:

#include<stdio.h>
int main()
{float a,b,x;scanf("%f%f",&a,&b);x= b/a;printf("%f",x);}

一元二次方程

一元二次方程的求解有多种方法,例如开方法、配方法、因式分解、求根公式等等,我们采用求根公式来进行求解:

求根公式如下:

所以,对于一元二次方程的求解,根据公式求即可。

C语言:

#include<stdio.h>
#include<math.h>
int main()
{double a,b,c,disc,x1,x2;char key; while(1){printf("一元二次方程为ax*x+bx+c=0,请输入a,b,c的值:\n");scanf("%lf%lf%lf",&a,&b,&c);disc=b*b-4*a*c;if(disc == 0){x1=-b/(2*a);x2=x1;printf("方程的两个实根为x1=x2=%lf\n",x1);} else if(disc < 0 )printf("方程没有实数根。\n"); else{x1 = (-b + sqrt(disc))/(2*a);x2 = (-b - sqrt(disc))/(2*a);printf("方程两个实根为x1=%lf,x2=%lf\n",x1,x2);} printf("是否继续?是的话输入y,否输入n\n");scanf("%s",&key); if(key == 'y')continue;else if(key == 'n')break;else{printf("输入错误,关闭程序。\n"); break;}}
}

Java:

import java.util.Scanner;
public class Oo {public static void main(String[] args) {while(true){Scanner in=new Scanner(System.in);System.out.println("一元二次方程为ax*x+bx+c=0,请输入a,b,c的值:");System.out.print("请输入a的值:");double a = in.nextDouble();System.out.print("请输入b的值:");double b = in.nextDouble();System.out.print("请输入c的值:");double c = in.nextDouble();double disc=b*b-4*a*c;if(disc == 0){double x1=-b/(2*a);double x2=x1;System.out.println("方程的两个实根为x1=x2="+x1);} else if(disc < 0 )System.out.println("方程没有实数根。");else{double x1 = (-b + Math.sqrt(disc))/(2*a);double x2 = (-b - Math.sqrt(disc))/(2*a);System.out.println("方程两个实根为x1="+x1+",x2="+x2);} System.out.println("是否继续?是的话输入1,否输入0");int key = in.nextInt();if(key == 1)continue;else if(key == 0)break;else{System.out.println("输入错误,关闭程序。");break;}}}
}

二元一次方程

1、问题描述:

给定一个二元一次方程组,形如:

a1 * x + b1 * y = c1;

a2 * x + b2 * y = c2;

求解x,y。

2、设计思路:

二元一次方程组是由两个含有两个未知数的方程组成的,要求解,就要把二元转化为一元。初中的时候我们学过,要用最大公约数完成消元的目的,

以下为详细思路过程,理解的人可以跳过:
a1 * a2为x的系数的最大公约数,将1式* a2,2式*a1来达成上下两式系数相同,然后1式-2式,消除x,解出y的值,同理解出x的值。(或者把y的值回代求得x的解。同理,也可以消去y先求x的值。)

3、实现

C语言:

#include<stdio.h>
int main()
{int a1,b1,c1;int a2,b2,c2;int a3,b3,c3;int a4,b4,c4;int x,y;printf("给定一个二元一次方程组,形如:\na1 * x + b1 * y = c1;\na2 * x + b2 * y = c2;\n");printf("请输入a1,b1,c1,a2,b2,c2的值:\n"); scanf("%d%d%d%d%d%d",&a1,&b1,&c1,&a2,&b2,&c2);a3 = a1*a2;       a4 = a2*a1;b3 = b1*a2;        b4 = b2*a1;c3 = c1*a2;        c4 = c2*a1;y = (c3-c4)/(b3-b4);a3 = a1*b2;       a4 = a2*b1;b3 = b1*b2;        b4 = b2*b1;c3 = c1*b2;        c4 = c2*b1;x = (c3-c4)/(a3-a4);printf("求得x和y的值为\nx= %d,y= %d\n",x,y);return 0;
}

Java:

import java.util.Scanner;
public class To {public static void main(String[] args) {// TODO Auto-generated method stubwhile(true) {Scanner sc = new Scanner(System.in);System.out.println("给定一个二元一次方程组,形如:");System.out.println("a1 * x + b1 * y = c1;");System.out.println("a2 * x + b2 * y = c2;");System.out.println("请输入a1,b1,c1,a2,b2,c2的值:");int a1 = sc.nextInt();int b1 = sc.nextInt();int c1 = sc.nextInt();int a2 = sc.nextInt();int b2 = sc.nextInt();int c2 = sc.nextInt();int y = (c2*a1 - a2*c1)/(a1*b2-a2*b1);int x = (c1-b1*y)/a1;System.out.println("解为   x="+x+"  y="+y);System.out.println("是否继续?是的话输入1,否输入0");int key = sc.nextInt();if(key == 1)continue;else if(key == 0)break;else{System.out.println("输入错误,关闭程序。");break;}}}
}

线性方程组

含有n个未知数的线性方程组称为n元线性方程组。

当其右端的常数项b1,b2,…,bn不全为零时,线性方程组称为非齐次线性方程组。当常数项全为零时,线性方程组称为齐次线性方程组.

系数构成的行列式称为该方程组的系数行列式D,即

当D≠0时,根据线性代数的克莱姆法则可知,线性方程组的解存在且唯一

直接法

如果所有运算都是精确进行的,那么经过有限步运算就可以求出方程组精确解的方法。

在实际计算过程中,由于舍入误差的存在和影响,直接法一般只能求得方程组的近似解。对于中等规模的线性方程组(n<200),由于直接法的准确性和可靠性高,一般都用直接法求解。

在直接法里,我们采用高斯消元法中的列主元消元法和Doolitle分解法来解决问题。

高斯消元法

高斯消元法的步骤:消元和回代

列主元消去法的解题过程如下图,把每一列的最大值选出,将这一行与第一行交换,再把第一列的其他行化为0,再看除去第一行第一列的矩阵,重复上面步骤,直到将系数矩阵转换成上三角形式

public class EquationSolver {/*** @列主元高斯消去法*/static double a[][];static double b[];static double x[];static int n;static int n2; //记录换行的次数public static void Elimination() {  //消元PrintA();for (int k = 0; k < n; k++) {Wrap(k);for (int i = k + 1; i < n; i++) {double l = a[i][k] / a[k][k];a[i][k] = 0.0;for (int j = k + 1; j < n; j++)a[i][j] = a[i][j] - l * a[k][j];b[i] = b[i] - l * b[k];}System.out.println("第" + k + "次消元后:");PrintA();}}public static void Back()//回代{x[n - 1] = b[n - 1] / a[n - 1][n - 1];for (int i = n - 2; i >= 0; i--)x[i] = (b[i] - jisuan(i)) / a[i][i];}public static double jisuan(int i) {double he = 0.0;for (int j = i; j <= n - 1; j++)he = he + x[j] * a[i][j];return he;}public static void Wrap(int k) {//换行double max = Math.abs(a[k][k]);int n1 = k;                   //记住要交换的行for (int i = k + 1; i < n; i++)     //找到要交换的行{if (Math.abs(a[i][k]) > max) {n1 = i;max = Math.abs(a[i][k]);}}if (n1 != k) {n2++;System.out.println("当k=" + k + "时,要交换的行是:" + k + "和" + n1);for (int j = k; j < n; j++)  //交换a的行{double x1;x1 = a[k][j];a[k][j] = a[n1][j];a[n1][j] = x1;}double b1;   //交换b的行b1 = b[k];b[k] = b[n1];b[n1] = b1;System.out.println("交换后:");PrintA();}}public static void Determinant() {//求行列式double DM = 1.0;for (int i = 0; i < n; i++) {double a2 = a[i][i];DM = DM * a2;}double n3 = (double) n2;DM = DM * Math.pow(-1.0, n3);System.out.println("该方程组的系数行列式:det A = " + DM);}public static void PrintA() {//输出增广矩阵System.out.println("增广矩阵为:");for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++)System.out.print(a[i][j] + "    ");System.out.print(b[i] + "    ");System.out.print("\n");}}public static void Print() {//输出方程的根System.out.println("方程组的根为:");for (int i = 0; i < n; i++)System.out.println("x" + i + " = " + x[i]);}public static void main(String[] args) {//Scanner as=new Scanner(System.in);System.out.println("输入方程组的元数:");//n=as.nextInt();n = 2;a = new double[n][n];b = new double[n];x = new double[n];double inputA[][] = {{1, 1}, {1, -1}};a = inputA;double inputB[] = {2, 0};b = inputB;double inputX[] = {1, 1};System.out.println("输入方程组的系数矩阵a:");
//        for(int i=1;i<=n;i++)
//          for(int j=1;j<=n;j++)
//              a[i][j]=as.nextDouble();System.out.println("输入方程组矩阵b:");
//        for(int i=1;i<=n;i++)
//          b[i]=as.nextDouble();Elimination();Back();Print();Determinant();}
}

Doolitle分解法

不选主元的Doolittle分解法

//Doolittle/分解法/不选主元
#include<stdio.h>int main()
{//定义求行列式的值的函数dkdouble dk(int n, double a[n][n]){//i为行,j代表列int i=0,j=0;//sum代表行列式的值double sum=0;//x用来判断加减,p代表余子式的行数,q用来决定余子式某行与a某行的关系int x,p,q;//b用来存储余子式double b[n-1][n-1];if (n==1){return a[0][0];}else{for(i=0;i<n;i++){for (p=0;p<n-1;p++){for(j=0;j<n-1;j++){if (p<i){q=0;}else{q=1;}b[p][j]=a[p+q][j+1];}}if (i%2==0){x=1;}else{x=-1;}sum+=a[i][0]*dk(n-1,b)*x;}return sum;}}//获取方阵Aint n,i,j,k,t;printf("请输入方阵A的阶数:");//n代表方阵阶数scanf("%d",&n);//a[n][n]存储待分解的方阵double a[n][n];for(i=0;i<n;i++){printf("输入方阵A的第%d行\n",(i+1));for (j=0;j<n;j++){scanf("%lf",&a[i][j]);}}//判断是否符合Doolittle分解条件//对矩阵A点的前n-1个顺序主子式进行判定int judge(int n, double a[n][n]){double dk_A=1;k=1;while (dk_A!=0){double b[k][k];for(i=0;i<k;i++){for(j=0;j<k;j++){b[i][j]=a[i][j];}}dk_A=dk(k,b);if (dk_A==0){printf("不符合Doolittle分解条件!\n");return 0;break;}k=k+1;if(k>=n){printf("符合doolittle分解条件!\n");return 1;break;}}}int judge_A=0;judge_A=judge(n,a);//符合分解条件时,代入公式进行Doolittle分解if(judge_A==1){for(k=0;k<n;k++){if (k==0){for(j=k;j<n;j++){a[k][j]=a[k][j];}if (k<n-1){for(i=k+1;i<n;i++){a[i][k]=a[i][k]/a[k][k];}}}else{for(j=k;j<n;j++){for(t=0;t<k;t++){a[k][j]=a[k][j]-a[k][t]*a[t][j];}}if (k<n-1){for(i=k+1;i<n;i++){for(t=0;t<k;t++){a[i][k]=a[i][k]-a[i][t]*a[t][k];}a[i][k]=a[i][k]/a[k][k];}}}}}//输出上三角阵和下三角阵,放在A的位置上for(i=0;i<n;i++){printf("\n");for(j=0;j<n;j++){printf("%lf  ",a[i][j]);}}}

Doolittle 分解法

选主元的 Doolittle 分解法

#include<stdio.h>
#include<math.h>int main()
{//定义求行列式的值的函数dkdouble dk(int n, double a[n][n]){//i为行,j代表列int i=0,j=0;//sum代表行列式的值double sum=0;//x用来判断加减,p代表余子式的行数,q用来决定余子式某行与a某行的关系int x,p,q;//b用来存储余子式double b[n-1][n-1];if (n==1){return a[0][0];}else{for(i=0;i<n;i++){for (p=0;p<n-1;p++){for(j=0;j<n-1;j++){if (p<i){q=0;}else{q=1;}b[p][j]=a[p+q][j+1];}}if (i%2==0){x=1;}else{x=-1;}sum+=a[i][0]*dk(n-1,b)*x;}return sum;}}//获取方阵Aint n,i,j,k,t;printf("请输入方阵A的阶数:");//n代表方阵阶数scanf("%d",&n);//a存储待分解的方阵double a[n][n];//s[n]存储中间量,b[n]存储常数项,y[n]存储y,x[n]存储解double s[n],b[n],y[n],x[n];//M[k]用来存储第k个主元所在的行号int M[n];for(i=0;i<n;i++){printf("输入方阵A的第%d行\n",(i+1));for (j=0;j<n;j++){scanf("%lf",&a[i][j]);}}printf("输入b:\n");for(i=0;i<n;i++){scanf("%lf",&b[i]);}//计算A的行列式,判断能否进行分解double judge_A;judge_A=dk(n,a);if(judge_A==0){printf("不符合选主元的Doolittle分解条件!\n");}else{printf("符合分解条件!\n");//作分解QA=LUfor(k=0;k<n;k++){for(i=0;i<n;i++){if(i<k){s[i]=0;}else{if (k==0){s[i]=a[i][k];}else{s[i]=a[i][k];for(t=0;t<k;t++){s[i]=s[i]-a[i][t]*a[t][k];}}}}printf("%lf\n",s[k]);//找主元int max_k=0;double max_s=fabs(s[0]);double temp;for(i=0;i<n;i++){if(fabs(s[i])>max_s){max_k=i;max_s=fabs(s[i]);}}M[k]=max_k;//交换,使得主元在对角线上if (M[k]!=k){temp=s[k];s[k]=s[M[k]];s[M[k]]=temp;for(t=0;t<n;t++){temp=a[k][t];a[k][t]=a[M[k]][t];a[M[k]][t]=temp;}}//代入公式,计算a[k][k]=s[k];if (k!=0){if(k!=n-1){for(j=k+1;j<n;j++){for(t=0;t<k;t++){a[k][j]=a[k][j]-a[k][t]*a[t][j];}}for (i=k+1;i<n;i++){a[i][k]=s[i]/a[k][k];}}}else{for(i=k+1;i<n;i++){a[i][k]=s[i]/a[k][k];}}}//求Qb//第二大步if (n>1){for(k=0;k<n-1;k++){double temp;t=M[k];temp=b[k];b[k]=b[t];b[t]=temp;}}//求解方程Ly=Qb&Ux=yy[0]=b[0];if(n>1){for(i=1;i<n;i++){y[i]=b[i];for(t=0;t<i;t++){y[i]=y[i]-a[i][t]*y[t];}}}x[n-1]=y[n-1]/a[n-1][n-1];if(n>1){for(i=n-2;i>=0;i--){x[i]=y[i];for(t=i+1;t<n;t++){x[i]=x[i]-a[i][t]*x[t];}x[i]=x[i]/a[i][i];}}}//输出上三角阵和下三角阵,放在A的位置上printf("所给方阵的选主元的Doolittle分解为:\n");for(i=0;i<n;i++){printf("\n");for(j=0;j<n;j++){printf("%lf ",a[i][j]);}}//输出解printf("\n方程的解为:\n");for(i=0;i<n;i++){printf("%lf ",x[i]);}}

迭代法

/*** 用迭代法求 平方根
公式:求a的平方根的迭代公式为:
X[n+1]=(X[n]+a/X[n])/2
要求前后两次求出的差的绝对值少于0.00001.
输出保留3位小数* @author 六木木**/
import java.util.Scanner;
public class Java1021 {Scanner input=new Scanner(System.in);double a=input.nextDouble();double c;double b;public void sqrt() {b=a/2;while(Math.abs(b-c)>0.00001) {c=(b+a/b)/2;b=c;}System.out.printf("%.3f",b);System.out.println();System.out.println(String.format("%.3f", b));}public static void main(String[] args) {Java1021 s=new Java1021();s.sqrt();}
}

转载自:https://blog.csdn.net/qq_44807195/article/details/107506045


高斯赛德尔迭代法(Gauss–Seidel method)


package linear_equation;import java.util.Scanner;/*使用高斯赛德尔迭代法求解线性方程组*/
public class Gauss_Seidel_Iterate {/*求下三角*/private static float[][] find_lower(float data[][],int k){int length=data.length;float data2[][]=new float[length][length];if(k>=0){for(int i=0;i<=length-k-1;i++){for(int j=0;j<=i+k;j++){data2[i][j]=data[i][j];}}for(int i=length-k;i<length;i++){for(int j=0;j<length;j++){data2[i][j]=data[i][j];}}}else{for(int i=-k;i<length;i++){for(int j=0;j<=i+k;j++){data2[i][j]=data[i][j];}}}return data2;}/*求原矩阵的负*/private static float[][] opposite_matrix(float[][] data){int M=data.length;int N=data[0].length;float data_temp[][]=new float[M][N];for(int i=0;i<M;i++){for(int j=0;j<N;j++){data_temp[i][j]=-data[i][j];}}return data_temp;}/*原矩阵去掉第i+1行第j+1列后的剩余矩阵*/private static float[][] get_complement(float[][] data, int i, int j) {/* x和y为矩阵data的行数和列数 */int x = data.length;int y = data[0].length;/* data2为所求剩余矩阵 */float data2[][] = new float[x - 1][y - 1];for (int k = 0; k < x - 1; k++) {if (k < i) {for (int kk = 0; kk < y - 1; kk++) {if (kk < j) {data2[k][kk] = data[k][kk];} else {data2[k][kk] = data[k][kk + 1];}}} else {for (int kk = 0; kk < y - 1; kk++) {if (kk < j) {data2[k][kk] = data[k + 1][kk];} else {data2[k][kk] = data[k + 1][kk + 1];}}}}return data2;}/* 计算矩阵行列式 */private static float cal_det(float[][] data) {float ans=0;/*若为2*2的矩阵可直接求值并返回*/if(data[0].length==2){ans=data[0][0]*data[1][1]-data[0][1]*data[1][0];}else{for(int i=0;i<data[0].length;i++){/*若矩阵不为2*2那么需求出矩阵第一行代数余子式的和*/float[][] data_temp=get_complement(data, 0, i);if(i%2==0){/*递归*/ans=ans+data[0][i]*cal_det(data_temp);}else{ans=ans-data[0][i]*cal_det(data_temp);}}}return ans;}/*计算矩阵的伴随矩阵*/private static float[][] ajoint(float[][] data) {int M=data.length;int N=data[0].length;float data2[][]=new float[M][N];for(int i=0;i<M;i++){for(int j=0;j<N;j++){if((i+j)%2==0){data2[i][j]=cal_det(get_complement(data, i, j));}else{data2[i][j]=-cal_det(get_complement(data, i, j));}}}return trans(data2);}/*转置矩阵*/private static float [][]trans(float[][] data){int i=data.length;int j=data[0].length;float[][] data2=new float[j][i];for(int k2=0;k2<j;k2++){for(int k1=0;k1<i;k1++){data2[k2][k1]=data[k1][k2];}}/*将矩阵转置便可得到伴随矩阵*/return data2;}/*求矩阵的逆,输入参数为原矩阵*/private static float[][] inv(float [][] data){int M=data.length;int N=data[0].length;float data2[][]=new float[M][N];float det_val=cal_det(data);data2=ajoint(data);for(int i=0;i<M;i++){for(int j=0;j<N;j++){data2[i][j]=data2[i][j]/det_val;}}return data2;}/*矩阵加法*/private static float[][] matrix_add(float[][] data1,float[][] data2){int M=data1.length;int N=data1[0].length;float data[][]=new float[M][N];for(int i=0;i<M;i++){for(int j=0;j<N;j++){data[i][j]=data1[i][j]+data2[i][j];}}return data;}/*矩阵相乘*/private static float[][] multiply(float[][] data1,float[][] data2){int M=data1.length;int N=data1[0].length;int K=data2[0].length;float[][] data3=new float[M][K];for(int i=0;i<M;i++){for(int j=0;j<K;j++){for(int k=0;k<N;k++){data3[i][j]+=data1[i][k]*data2[k][j];}}}return data3;}/*输入参数为原矩阵和一个整数,该整数代表从对角线往上或往下平移的元素个数*/private static float[][] find_upper(float[][] data,int k){int length=data.length;int M=length-k;float[][] data2=new float[length][length];if(k>=0){for(int i=0;i<M;i++){for(int j=k;j<length;j++){data2[i][j]=data[i][j];}k+=1;}}else {for(int i=0;i<-k;i++){for(int j=0;j<length;j++){data2[i][j]=data[i][j];}}for(int i=-k;i<length;i++){for(int j=i+k;j<length;j++){data2[i][j]=data[i][j];}}}return data2;}/*m*n矩阵与n维向量的乘法*/private static float[] multiply2(float[][] data1,float[] data2){int M=data1.length;int N=data1[0].length;float[] data3=new float[M];for(int k=0;k<M;k++){for(int j=0;j<N;j++){data3[k]+=data1[k][j]*data2[j];}}return data3;}/*向量加法*/private static float[] matrix_add2(float[] data1,float[] data2){int M=data1.length;float data[]=new float[M];for(int i=0;i<M;i++){data[i]=data1[i]+data2[i];}return data;}/*求两向量之差的二范数(用于检验误差)*/private static double cal_error(float[] X1,float[] X2){int M=X1.length;double temp=0;for(int i=0;i<M;i++){temp+=Math.pow((X1[i]-X2[i]),2);}temp=Math.sqrt(temp);return temp;}/*求矩阵的对角矩阵*/private static float[][] find_diagnal(float A[][]) {int m = A.length;int n = A[0].length;float B[][] = new float[m][n];for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {if (i == j) {B[i][j] = A[i][j];}}}return B;}/*高斯赛德尔迭代法*/private static float[] Gauss_Seidel_method(float[][] A,float[] B,float[] X){float D[][]=find_diagnal(A);float L[][]=find_lower(A, -1);float U[][]=find_upper(A, 1);float temp1[][]=inv(matrix_add(D, L));float temp2[][]=opposite_matrix(temp1);float B0[][]=multiply(temp2, U);float F[]=multiply2(temp1, B);return matrix_add2(multiply2(B0, X), F);}public static void main(String[] args) {System.out.println("输入系数矩阵的行和列数:");Scanner scan=new Scanner(System.in);int M=scan.nextInt();System.out.println("输入方程组右侧方程值的维度:");int K=scan.nextInt();if(M!=K){System.out.println("方程组个数和未知数个数不等!");System.exit(0);}System.out.println("输入系数矩阵:");float[][] A=new float[M][M];for(int i=0;i<M;i++){for(int j=0;j<M;j++){A[i][j]=scan.nextFloat();}}System.out.println("输入值向量");float[] B=new float[M];for(int i=0;i<M;i++){B[i]=scan.nextFloat();}System.out.println("输入初始迭代向量:");float[] X=new float[M];for(int i=0;i<M;i++){X[i]=scan.nextFloat();}System.out.println("输入误差限:");float er=scan.nextFloat();float temp[]=new float[M];while(cal_error((temp=Gauss_Seidel_method(A, B, X)), X)>=er){X=temp;}
//      while(cal_error((temp=Gauss_Seidel_method(A, B, X)), X)>=er){//          X=temp;
//
//      }X=temp;System.out.println("高斯赛德尔计算得到的解向量为:");for(int i=0;i<M;i++){System.out.println(X[i]+" ");}System.out.println();}
}

代码实现 | 方程组的实现相关推荐

  1. python皮卡丘编程代码_再接再厉,用python编程13行代码解方程组(纯字符)

    因为是示例为主,我们将方程组限制在二元一次方程组:x,y两个变量,两个方程.类似这样: 每个方程有两个变量,x和y,形式为:ax+by+c=d 由于这次有了两个方程,我们提取参数的代码就适合提炼为一个 ...

  2. 幂模函数方程组的解法(一)

    print(pow(2, e, n)) print(pow(4, e, n)) print(pow(8, e, n))''' 128509160179202 518818742414340 35855 ...

  3. MATLAB基础教程(6)——使用matlab求解线性方程组

    目录 今日任务: 一般方程: 方程组(目前仅讨论方程个数和未知数个数一样的情况): 额外知识 咦,咋跑题了 左除和右除 今日总结: 今日任务: 在数学中经常遇见的一个问题就是方程求解,特别是线性代数中 ...

  4. HDCTF2023 Writeup

    序 pwn 做完了,别的方向的也有打一点. PWN pwnner 伪随机数,种子也给出来了.先写个生成对应随机数的 c 程序. // gcc 1.c -o 1 #include <stdio.h ...

  5. 药方的量化方法笔记(学习与尝试):第二回 第三次 药方的拆解 量化方法的形式的发展 对药的量化分析

    药方拆解 皮炎湿疹荨麻疹相关药方 详细内容见 第二回 第二次,这里只保留文章的标题目录,因为文章中有太多 Latex 公式,所以编辑起来太卡了,只能分几次更新.) 全虫方 · 赵炳南 全虫方在 第二回 ...

  6. MATLAB 求函数极值的内置函数一览表(实则优化算法函数汇总)

    MATLAB 求函数极值的内置函数一览表 收集了几乎所有的 MATLAB 内置的优化函数,可收藏,需要时查阅. 文章目录 MATLAB 求函数极值的内置函数一览表 简介 概览 求函数极值(或最大值最小 ...

  7. 软件测试数学基础,大学数学基础实验-中国大学mooc-题库零氪

    1 MATLAB软件基础 MATLAB软件基础单元测验 1.以下不属于matlab 主面板的是 ( ) A.变量 B.主页 C.绘图 D.应用程序 2.MATLAB语法规定的标点符号中,用于注释的符号 ...

  8. 隐私合规:收集SDK部分介绍

    com.meizu.cloud.pushsdk.SystemReceiver 魅族推送服务是由魅族公司为开发者提供的消息推送服务,开发者可以向集成了魅族 push SDK 的客户端实时地推送通知或者消 ...

  9. 迭代法求解非线性方程组(含python代码)

    1. 迭代法求解非线性方程组的原理         参考西安交大数值分析教材 2. 迭代法求解非线性方程组的计算过程 牛顿法求解非线性方程组的计算过程如下 弦割法与牛顿法类似,弦割法将牛顿法中的偏导数 ...

  10. 超定方程组最小二乘法(内含代码)

    超定方程组最小二乘法 今天做了一个计算方法的作业,在网上没有找到类似的参考资料,很多同学用Python直接调用库函数来写很方便,但是我认为用c或者c++来写对初学者来说是更大的锻炼: 代码已经调试好了 ...

最新文章

  1. 在数据库创建表的时候,时间设置为什么类型,会随着每次提交的时间发生变化
  2. kafka中controller的作用_Kafka 常见问题汇总
  3. apache+tomcat的架构
  4. 转载:div和flash层级关系问题
  5. [Leetcode][第32题][JAVA][最长有效括号][动态规划][栈][正向逆向结合]
  6. phpcms前台注入导致任意文件读取漏洞
  7. 安兔兔发布9月份Android性能榜:855霸榜,华为竟垫底
  8. 内核如何为系统调用的参数传递参数
  9. 将ListT转化成 DataTable--调整可空类型的转化错误
  10. 使用 Electron 打印到 PDF
  11. vbs文件放在java工程中如何调用_VBS教程:在 VBScript 中使用对象
  12. vue实现坐标拾取器功能demo
  13. rabbitmq消息队列--restTemplate实现跨域请求--获取JSON字符串
  14. bin文件夹关于dll引用的注意事项
  15. 基于Spring Boot的个人博客系统的设计与实现 毕业设计-附源码271611
  16. android+自定义dns解析,安卓手机玩dnsmasq 搭建自己的DNS服务器
  17. 如何查询快递单号物流
  18. 基于TextRank算法的单领域多文本摘要(英文摘要)
  19. 了解一下密钥交换算法ECDH
  20. CCF推荐会议 | 计算机理论:截稿日期纵览(含ESA,CONCUR等)

热门文章

  1. lg手机历史机型_lg手机大全【详细介绍】
  2. 【mindspore】数据加载报错,提示The pointer[cnode] is null.
  3. switchHosts下载地址
  4. 华为交换机基本配置命令详解
  5. linux系统中文输入法下载64位下载,Linux中文输入法|fcitx中文输入法 V4.2.6 官方安装版...
  6. linux(中文输入法,显示语言)
  7. 最棒的java代码生成器
  8. C语言system的用法
  9. 01-SQL基本语句
  10. 三星固态硬盘linux驱动,三星固态硬盘驱动NVMe Driver