概率论与数理统计学习:随机向量(二)——知识总结与C语言实现案例

hello,大家好

这里是第七期概率论与数理统计的学习,我将用这篇博客去总结知识点以及用C语言实现案例的过程。
在这里插入图片描述

本期知识点:

  1. 二维连续型随机向量
  • 均匀分布
  • 二维正态分布
  1. 边缘分布
  • 边缘分布函数
  • 二维离散型随机向量的边缘概率分布
  • 二维连续型随机向量的边缘概率密度

下面先总结知识点
在这里插入图片描述

💦 二维连续型随机向量

上一期我们学习了二维离散型随机向量,那么这期就轮到连续型的啦。上一期

总所周知啊,连续型是一个区间的概率,离散型是一个一个点的概率~~那么先给出二维连续型随机向量的定义:

🌱 定义

对于二维随机向量 ( X , Y ) (X,Y) (X,Y) F ( x , y ) F(x,y) F(x,y)是它的分布函数,若存在非负函数 f ( x , y ) f(x,y) f(x,y),使得对任意实数 x , y x,y x,y,总有 F ( x , y ) = ∫ − ∞ y ∫ − ∞ x f ( u , v ) d u d v F(x,y)=\int_{-\infty}^y\int_{-\infty}^xf(u,v)dudv F(x,y)=yxf(u,v)dudv
则称 ( X , Y ) (X,Y) (X,Y)是二维连续型随机向量,称 f ( x , y ) f(x,y) f(x,y)为二维连续型随机向量 ( X , Y ) (X,Y) (X,Y)的概率密度函数,简称概率密度。

咦,等等,提问:为啥上式后面是 u , v u,v u,v的函数???
在这里插入图片描述
一般来说肯定是这样的: ∫ − ∞ y ∫ − ∞ x f ( x , y ) d x d y \int_{-\infty}^y\int_{-\infty}^xf(x,y)dxdy yxf(x,y)dxdy,前面积分上限的 x , y x,y x,y表示的是一个具体的值,后面的 f ( x , y ) d x d y f(x,y)dxdy f(x,y)dxdy中的 x , y x,y x,y则是一个变量,所以为了更好地区别它们,所以把后面的 x , y x,y x,y u , v u,v u,v来替代。

☁️ 二维连续型随机向量的概率密度的性质

🌱 f ( x , y ) ≥ 0 , − ∞ < x < + ∞ , − ∞ < y < + ∞ f(x,y)\geq0,-\infty<x<+\infty,-\infty<y<+\infty f(x,y)0,<x<+,<y<+

🌱 ∫ − ∞ + ∞ ∫ − ∞ + ∞ f ( x , y ) d x d y = 1 \int_{-\infty}^{+\infty}\int_{-\infty}^{+\infty}f(x,y)dxdy=1 ++f(x,y)dxdy=1

🌱 若 f ( x , y ) f(x,y) f(x,y)在点 ( x , y ) (x,y) (x,y)处连续,则有 ∂ 2 F ( x , y ) ∂ x ∂ y = f ( x , y ) \frac{∂^2F(x,y)}{∂x∂y}=f(x,y) xy2F(x,y)=f(x,y)

🌱 设平面 D D D是平面上的任意区域,则点 ( X , Y ) (X,Y) (X,Y)落在 D D D内的概率 P { ( X , Y ) ∈ D } = ∫ ∫ D f ( x , y ) d x d y P\{(X,Y)\in D\}=\int\int_Df(x,y)dxdy P{(X,Y)D}=Df(x,y)dxdy

最后一条性质很重要噢,它将二维连续型随机向量 ( X , Y ) (X,Y) (X,Y)在平面区域 D D D内取值的概率问题转化为一个二重积分的计算。从二重积分的几何意义可知,该概率在数值上等于以 D D D为底,以曲面 z = f ( x , y ) z=f(x,y) z=f(x,y)为顶面的曲顶柱体的体积。

不过忘了也不用太着急,在题中大多数也只是转化成在平面上的积分。

☁️ 均匀分布

🌱 定义

D D D是平面上的有界区域,其面积为 d d d,若二维随机向量 ( X , Y ) (X,Y) (X,Y)的概率密度函数为 f ( x , y ) = { 1 d     , ( x , y ) ∈ D 0     , 其它 f(x,y)=\begin{cases} \frac{1}{d}~~~,(x,y)\in D\\ 0~~~,其它\\ \end{cases} f(x,y)={d1   ,(x,y)D0   ,其它

则称 ( X , Y ) (X,Y) (X,Y)服从 D D D上的均匀分布,这个跟随机变量服从的均匀分布类似,用所占面积除以总面积即可。

☁️ 二维正态分布

🌱 定义

设二维随机向量 ( X , Y ) (X,Y) (X,Y)的概率密度函数为 f ( x , y ) = 1 2 π σ 1 σ 2 1 − ρ 2 e − 1 2 ( 1 − ρ ) 2 [ ( x − μ 1 ) 2 σ 1 2 − 2 ρ ( x − μ 1 ) ( y − μ 2 ) ρ 1 ρ 2 + ( y − μ 2 ) 2 σ 2 2 ] , − ∞ < x < + ∞ , − ∞ < y < + ∞ f(x,y)=\frac{1}{2\pi\sigma_{1}\sigma_{2}\sqrt{1-\rho^2}}e^{-\frac{1}{2(1-\rho)^2}[\frac{(x-\mu_{1})^2}{\sigma_{1}^2}-2\rho\frac{(x-\mu_{1})(y-\mu_{2})}{\rho_{1}\rho_{2}}+\frac{(y-\mu_{2})^2}{\sigma_{2}^2}]},-\infty<x<+\infty,-\infty<y<+\infty f(x,y)=2πσ1σ21ρ2 1e2(1ρ)21[σ12(xμ1)22ρρ1ρ2(xμ1)(yμ2)+σ22(yμ2)2],<x<+,<y<+

式中 μ 1 , μ 2 \mu_{1},\mu_{2} μ1,μ2为实数, σ 1 > 0 , σ 2 > 0 , ∣ ρ ∣ < 1 \sigma_{1}>0,\sigma_{2}>0,|\rho|<1 σ1>0,σ2>0,ρ<1,则称 ( X , Y ) (X,Y) (X,Y)服从参数为 μ 1 , μ 2 , σ 1 , σ 2 , ρ \mu_{1},\mu_{2},\sigma_{1},\sigma_{2},\rho μ1,μ2,σ1,σ2,ρ的二维正态分布,记作 ( X , Y ) (X,Y) (X,Y)~ N ( μ 1 , μ 2 , σ 1 2 , σ 2 2 , ρ ) N(\mu_{1},\mu_{2},\sigma_{1}^2,\sigma_{2}^2,\rho) N(μ1,μ2,σ12,σ22,ρ),同时称 ( X , Y ) (X,Y) (X,Y)是二维正态随机向量。

emm…看看就好,看看就好…
在这里插入图片描述

💦 边缘分布

☁️ 边缘分布函数

二维随机向量 ( X , Y ) (X,Y) (X,Y)作为一个整体,具有分布函数 F ( x , y ) F(x,y) F(x,y),它们的分量 X X X Y Y Y都是随机变量,也有自己的分布函数,将它们分别记为 F ( x ) F(x) F(x) F ( y ) F(y) F(y),依次称为 X X X Y Y Y边缘分布函数。那么 F ( x , y ) F(x,y) F(x,y)就称为 X X X Y Y Y联合分布函数

别太在意这个边缘与联合,它们都只是相对于彼此的一个名称而已。

边缘分布函数 F ( x ) F(x) F(x) F ( y ) F(y) F(y)都可以由 F ( x , y ) F(x,y) F(x,y)确定:
F ( x ) = P { X ≤ x } = P { X ≤ x , Y ≤ + ∞ } = F ( x , + ∞ ) F(x)=P\{X\leq x\}=P\{X\leq x,Y\leq +\infty\}=F(x,+\infty) F(x)=P{Xx}=P{Xx,Y+}=F(x,+)
F ( y ) = P { Y ≤ y } = P { X ≤ + ∞ , Y ≤ y } = F ( + ∞ , y ) F(y)=P\{Y\leq y\}=P\{X\leq +\infty,Y\leq y\}=F(+\infty,y) F(y)=P{Yy}=P{X+,Yy}=F(+,y)

☁️ 二维离散型随机向量的边缘分布概率

离散型离散型,它表示一个一个的概率,着重强调这个“点”嗷。

那么它的边缘概率分布是啥形式呢?

相当于先确定一个 X X X,然后 P { X = x i } P\{X=x_{i}\} P{X=xi}就表示它的概率,注意这里没有限制 Y Y Y的取值,也就是说要把所有 Y Y Y的全部取值都考虑进去。

也许结合一下“官方”知识更好理解一点呢👇:

( x , y ) (x,y) (x,y)是二维离散型随机向量,其概率分布为 P { X = x i , Y = y i } = p i j P\{X=x_{i},Y=y_{i}\}=p_{ij} P{X=xi,Y=yi}=pij
那么 P { X = x i } = p i 1 + p i 2 + . . . + p i j P\{X=x_{i}\}=p_{i1}+p_{i2}+...+p_{ij} P{X=xi}=pi1+pi2+...+pij

同理, P { Y = y j } = p 1 j + p 2 j + . . . + p i j P\{Y=y_{j}\}=p_{1j}+p_{2j}+...+p_{ij} P{Y=yj}=p1j+p2j+...+pij

怎样,懂否?
在这里插入图片描述
有了上面的基础,再给出它的定义

🌱 定义:

p i ⋅ = P { X = x i } = ∑ j p i j , i = 1 , 2 , . . . p_{i·}=P\{X=x_{i}\}=\sum_{j}p_{ij},i=1,2,... pi=P{X=xi}=jpij,i=1,2,...
p ⋅ j = P { Y = y j } = ∑ i p i j , j = 1 , 2 , . . . p_{·j}=P\{Y=y_{j}\}=\sum_{i}p_{ij},j=1,2,... pj=P{Y=yj}=ipij,j=1,2,...

分别称 p i ⋅ p_{i·} pi p ⋅ j p_{·j} pj X X X Y Y Y的边缘概率分布。bin~
在这里插入图片描述
别着急,还有一个小节的知识点!!

☁️ 二维连续型随机向量的边缘概率密度

这个有了前面的基础,我相信你们能够理解的
在这里插入图片描述
( X , Y ) (X,Y) (X,Y)是二维连续型随机向量,其概率密度函数为 f ( x , y ) f(x,y) f(x,y),由上一节可知
F ( x ) = F ( x , + ∞ ) = ∫ − ∞ + ∞ ∫ − ∞ x f ( u , v ) d u d v = ∫ − ∞ x [ ∫ − ∞ + ∞ f ( u , v ) d v ] d u F(x)=F(x,+\infty)=\int_{-\infty}^{+\infty}\int_{-\infty}^xf(u,v)dudv=\int_{-\infty}^x[\int_{-\infty}^{+\infty}f(u,v)dv]du F(x)=F(x,+)=+xf(u,v)dudv=x[+f(u,v)dv]du
在这里插入图片描述
注意了噢(因为我在学的时候就没注意)

f ( u ) = ∫ − ∞ + ∞ f ( u , v ) d v     ( 1 ) f(u)=\int_{-\infty}^{+\infty}f(u,v)dv~~~(1) f(u)=+f(u,v)dv   (1)
(上式右边部分就是上上式那个 [ ] [] []中的那部分,需要跟上上式连起来一起思考!下式也一样!)

那么有 F ( x ) = ∫ − ∞ x f ( u ) d u     ( 2 ) F(x)=\int_{-\infty}^xf(u)du~~~(2) F(x)=xf(u)du   (2)

那么此时此刻,恰如彼时彼刻,上式中的 f ( u ) f(u) f(u)不就是 F ( x ) F(x) F(x)的概率密度函数吗? f ( u ) f(u) f(u)的表达式如 ( 1 ) (1) (1),这样,我们就得到了二维连续型随机向量的概率密度。

好!又来一个定义

🌱 定义:

f ( x ) = ∫ − ∞ + ∞ f ( x , y ) d y f(x)=\int_{-\infty}^{+\infty}f(x,y)dy f(x)=+f(x,y)dy
f ( y ) = ∫ − ∞ + ∞ f ( x , y ) d x f(y)=\int_{-\infty}^{+\infty}f(x,y)dx f(y)=+f(x,y)dx
分别为 X X X Y Y Y的概率密度函数,!!!前提 X , Y X,Y X,Y都是连续型的随机变量。

呼~要结束了吧
在这里插入图片描述

真的真的只有最后一点了…

通过上面的内容,我们可以得到,对于服从矩形区域 D = { ( x , y ) : a ≤ x ≤ b , c ≤ y ≤ d } D=\{(x,y):a\leq x\leq b,c\leq y\leq d\} D={(x,y):axb,cyd}上均匀分布的 ( X , Y ) (X,Y) (X,Y),两个边缘概率密度分别为:
f ( x ) = { 1 b − a    , a ≤ x ≤ b 0        , 其它 f(x)=\begin{cases} \frac{1}{b-a}~~,a\leq x\leq b\\ 0~~~~~~,其它\\ \end{cases} f(x)={ba1  ,axb0      ,其它

f ( y ) = { 1 d − c    , c ≤ y ≤ d 0        , 其它 f(y)=\begin{cases} \frac{1}{d-c}~~,c\leq y\leq d\\ 0~~~~~~,其它\\ \end{cases} f(y)={dc1  ,cyd0      ,其它

注意噢,这是对于矩形区域而言,对于其它区域上的均匀分布,不一定有上述结论!!

over over 啦!!!
在这里插入图片描述

💦 C语言实现案例

  1. 设二维随机向量 ( X , Y ) (X,Y) (X,Y)的概率密度函数为 f ( x , y ) = { a ( 6 − x − y ) , 0 ≤ x ≤ 1 , 0 ≤ y ≤ 2 0                     , 其它 f(x,y)=\begin{cases} a(6-x-y),0\leq x\leq 1,0\leq y\leq2\\ 0~~~~~~~~~~~~~~~~~~~,其它\\ \end{cases} f(x,y)={a(6xy),0x1,0y20                   ,其它
    1)确定常数a
    2)求 P { X ≤ 0.5 , Y ≤ 1.5 } P\{X\leq0.5,Y\leq 1.5\} P{X0.5,Y1.5}

分析:首先,做题是非常简单的,由二维连续型随机向量的概率密度函数的性质可知, ∫ − ∞ + ∞ ∫ − ∞ + ∞ f ( x , y ) d x d y = 1 \int_{-\infty}^{+\infty}\int_{-\infty}^{+\infty}f(x,y)dxdy=1 ++f(x,y)dxdy=1。凭此就可求出 a a a的值,然后第二问就是简单的换一下积分上下限即可。然而用代码实现起来却别有一番难度。下面先给出我自己写的代码,再做一些分析。
1):

#include <stdio.h>
#include <math.h>
typedef struct
{
	int coe[2];		// coefficient of each item ——每一项的系数
	int X;			// the power of x of each item ——每一项中x的幂
	int Y;			// the power of t of each item ——每一项中y的幂
}Expre;

// Reduction of a fraction function ——约分函数
void Abbreviation(int *a)
{
	while(a[0] % 2 == 0 && a[1] % 2 == 0)
	{
		a[0] /= 2;
		a[1] /= 2;
	}
	
	for(int i = 3 ;i < a[1] / 2 ; i += 2)
	{
		while(a[0] % i == 0 && a[1] % i == 0)
		{
			a[0] /= i;
			a[1] /= i;
		}
	}
}

// The difference of fraction a and fraction b ——两个分数a、b的差
int* Differ(int* a,int* b)
{
	if(a[0] == 0)
	{
		b[0] *= -1;
		return b;
	}
	else if(b[0] == 0)
	{
		return a;
	}
	int t;
	t = a[1];
	a[1] *= b[1];
	a[0] *= b[1];
	b[1] *= t;
	b[0] *= t;
	a[0] -= b[0];
	Abbreviation(a);
	return a;
}

// The integral function ——积分函数
void Integral(Expre* ex,int* floor,int* ceil,char pos)
{
	if(pos == 'x')  // integrate x ——对x进行积分
	{
		printf("Please input the value of ceil:");		// 输入积分上限
		scanf("%d,%d",ceil,ceil + 1);
		printf("Please input the value of floor:");		//输入积分下限
		scanf("%d,%d",floor,floor + 1);
		for(int i = 0 ; i < 3 ; i++)
		{
			ex[i].X += 1;								// the power of x +1 ——x的幂加1
			ex[i].coe[1] *= ex[i].X;					// the coefficient divide the power of x ——系数再除以x的幂
			for(int j = 0 ; j < 2 ; j++)
				ceil[j] = pow(ceil[j],ex[i].X);			// put ceilling into the x ——将积分上限带入x
			for(int j = 0 ; j < 2 ; j++)
				floor[j] = pow(floor[j],ex[i].X);		// put floor into the x ——将积分下限带入x
			int* a = Differ(ceil,floor);                // calculate the difference of the values after we put ceil and floor into x ——计算带入值后积分上下限的差
			// then multiply the differenve with the coefficient of the item ——然后将这个差乘原来的系数
			ex[i].coe[1] *= a[1];
			ex[i].coe[0] *= a[0];
			Abbreviation(ex[i].coe);
			// we have embodied x,so we need to eliminate it ——因为我们已经对x进行积分了,所以后面的式子就没有x了
			ex[i].X = 0;
		}
	}
	else  			// integrate y ——对y进行积分
	{
		printf("Please input the value of ceil:");
		scanf("%d,%d",ceil,ceil + 1);
		printf("Please input the value of floor:");
		scanf("%d,%d",floor,floor + 1);
		for(int i = 0 ; i < 3 ; i++)
		{
			ex[i].Y += 1;
			ex[i].coe[1] *= ex[i].Y;
			for(int j = 0 ; j < 2 ; j++)
				ceil[j] = pow(ceil[j],ex[i].Y);
			for(int j = 0 ; j < 2 ; j++)
				floor[j] = pow(floor[j],ex[i].Y);
			int* a = Differ(ceil,floor);
			ex[i].coe[1] *= a[1];
			ex[i].coe[0] *= a[0];
			Abbreviation(ex[i].coe);
			ex[i].Y = 0;
		}
	}
}

// calculate a,the function changes with different conditions ——计算a,这个函数随着情况的不同而不同
void Calculate(Expre* ex)
{
	int a[2] = {12,1};
	for(int i = 1 ; i < 3 ; i++)
	{
		int t = a[1];
		a[1] *= ex[i].coe[1];
		a[0] *= ex[i].coe[1];
		ex[i].coe[1] *= t;
		ex[i].coe[0] *= t;
		a[0] -= ex[i].coe[0];
	}
	a[1] = a[0];
	a[0] = 1;
	Abbreviation(a);
	printf("The result is: a=%d/%d",a[0],a[1]);
}

int main()
{
	Expre ex[3];
	printf("Please input the values of coefficient and power of each item.\n"); // ——输入每一项的系数和x、y的幂
	for(int i = 0 ; i < 3 ; i++)
	{
		printf("The NO.%d set of data is:",i + 1);
		scanf("%d,%d,%d,%d",&ex[i].coe[0],&ex[i].coe[1],&ex[i].X,&ex[i].Y);
	}
	printf("\n");
	printf("The polynomial is :\n");
	for(int i = 0 ; i < 3 ; i++)
	{
		printf("%d/%d*a*x^%d*y^%d\n",ex[i].coe[0],ex[i].coe[1],ex[i].X,ex[i].Y);
	}
	printf("\n");
	int floor[2],ceil[2];
	char pos[2] = {'x','y'};				// pos denotes the one that you want to integrate ——pos表示你要对哪个变量积分
	Integral(ex,floor,ceil,pos[0]);			// the first integration ——第一次积分
	Integral(ex,floor,ceil,pos[1]);			// the second integration ——第二次积分
	printf("\n");
	printf("After the second integration,the polynimial is:\n");
	for(int i = 0 ; i < 3 ; i++)
	{
		printf("%d/%d*a*x^%d*y^%d\n",ex[i].coe[0],ex[i].coe[1],ex[i].X,ex[i].Y);
	}
	printf("\n");
	Calculate(ex);
	return 0;
}

在这里插入图片描述

分析:

  1. 积分:首先,这个题目涉及到对一个多项式的积分,说实话这个难度特别大。我想了又想也就想出了一个比较笨的方法。
    由于这个题只涉及到两个未知数(变量),所以我们可以把这个多项式的每一项分为3个部分:系数、x的幂、y的幂。然后用结构体来存储每一项的数据。
    积分也需要特别注意一下:
  • 数学上的积分规则,本题就是一个幂函数,也就是每一次积分不只幂要增加,它的系数也要除以一个增加后的变量的幂。例如对于 x x x,此时 X = 1 , a [ 0 ] = 1 , a [ 1 ] = 1 X=1,a[0]=1,a[1]=1 X=1,a[0]=1,a[1]=1。对它积分后, 1 2 x 2 \frac12x^2 21x2,则 X = 2 , a [ 0 ] = 1 , a [ 1 ] = 1 ∗ X = 2 X=2,a[0]=1,a[1]=1 * X=2 X=2,a[0]=1,a[1]=1X=2
  • 积一次分后,也就是带入积分上下限并做了计算后,积分的那个变量的幂要置零,因为已经将具体的值带入那个变量去做计算了。
  1. 系数:其次就是每一项的系数,为了更好地与题目相结合,我这里将系数都看作分数,用一个大小为2的整型数组来存储它,例如 a [ 0 ] = 2 , a [ 1 ] = 3 a[0]=2,a[1]=3 a[0]=2,a[1]=3就表示的是 2 3 \frac23 32,那么0呢就用 a [ 0 ] = 0 , a [ 1 ] = 0 a[0]=0,a[1]=0 a[0]=0,a[1]=0来表示。
  2. 计算:由于相关计算都是对数组进行操作,针对的是分数,所以有点绕,不太直观。

2):

#include <stdio.h>
#include <math.h>
typedef struct
{
	int coe[2];	
	int X;		
	int Y;			
}Expre;


void Abbreviation(int *a)
{
	while(a[0] % 2 == 0 && a[1] % 2 == 0)
	{
		a[0] /= 2;
		a[1] /= 2;
	}
	
	for(int i = 3 ;i <= a[1] / 2 ; i += 2)
	{
		while(a[0] % i == 0 && a[1] % i == 0)
		{
			a[0] /= i;
			a[1] /= i;
		}
	}
}


int* Differ(int* a,int* b)
{
	if(a[0] == 0)
	{
		b[0] *= -1;
		return b;
	}
	else if(b[0] == 0)
	{
		return a;
	}
	int t;
	t = a[1];
	a[1] *= b[1];
	a[0] *= b[1];
	b[1] *= t;
	b[0] *= t;
	a[0] -= b[0];
	Abbreviation(a);
	return a;
}


void Integral(Expre* ex,int* floor,int* ceil,char pos)
{
	if(pos == 'x')  
	{
		printf("Please input the value of ceil:");	
		scanf("%d,%d",ceil,ceil + 1);
		printf("Please input the value of floor:");	
		scanf("%d,%d",floor,floor + 1);
		for(int i = 0 ; i < 3 ; i++)
		{
			int a[2];
			int b[2];
			ex[i].X += 1;							
			ex[i].coe[1] *= ex[i].X;				
			for(int j = 0 ; j < 2 ; j++)
				a[j] = pow(ceil[j],ex[i].X);			
			for(int j = 0 ; j < 2 ; j++)
				b[j] = pow(floor[j],ex[i].X);		
			int* t = Differ(a,b);               
			ex[i].coe[1] *= t[1];
			ex[i].coe[0] *= t[0];
			Abbreviation(ex[i].coe);

			ex[i].X = 0;
		}
	}
	else  			
	{
		printf("Please input the value of ceil:");
		scanf("%d,%d",ceil,ceil + 1);
		printf("Please input the value of floor:");
		scanf("%d,%d",floor,floor + 1);
		for(int i = 0 ; i < 3 ; i++)
		{
			ex[i].Y += 1;
			ex[i].coe[1] *= ex[i].Y;
			for(int j = 0 ; j < 2 ; j++)
				ceil[j] = pow(ceil[j],ex[i].Y);
			for(int j = 0 ; j < 2 ; j++)
				floor[j] = pow(floor[j],ex[i].Y);
			int* a = Differ(ceil,floor);
			ex[i].coe[1] *= a[1];
			ex[i].coe[0] *= a[0];
			Abbreviation(ex[i].coe);
			ex[i].Y = 0;
		}
	}
}


int main()
{
	Expre ex[3];
	printf("Please input the data of each item:\n");
	for(int i = 0 ; i < 3 ; i++)
	{
		printf("input the data of the No.%d item:",i + 1);
		scanf("%d,%d,%d,%d",&ex[i].coe[0],&ex[i].coe[1],&ex[i].X,&ex[i].Y);
	}
	printf("The initital polynomial is:\n");
	for(int i = 0 ; i < 3 ; i++)
	{
		printf("%d/%d*x^%d*y^%d\n",ex[i].coe[0],ex[i].coe[1],ex[i].X,ex[i].Y);
	}
	int ceil[2],floor[2];
	char pos[2] = {'x','y'};
	Integral(ex,ceil,floor,pos[0]);
	printf("\n");
	printf("The result of the first integration.\n");
	for(int i = 0 ; i < 3 ; i++)
	{
		printf("%d/%d*x^%d*y^%d\n",ex[i].coe[0],ex[i].coe[1],ex[i].X,ex[i].Y);
	}
	Integral(ex,ceil,floor,pos[1]);
	printf("\n");
	printf("The result of the second integration.\n");
	for(int i = 0 ; i < 3 ; i++)
	{
		printf("%d/%d*x^%d*y^%d\n",ex[i].coe[0],ex[i].coe[1],ex[i].X,ex[i].Y);
	}
	printf("\n");
	int* a = Differ(ex[0].coe,ex[1].coe);
	a = Differ(a,ex[2].coe);
	printf("The result is: %d/%d",a[0],a[1]);
	return 0;
}

在这里插入图片描述
第二问的代码大致一样,与第一问的差别也只是主函数上的一些差别。

☁️ 代码总结

这期主要是拓展了一下实现积分的思路,但仍有一下的局限性:

  1. 只针对于幂函数
  2. 积分上下限只能是某个具体的值,不能是关于一个变量的函数。例如 ∫ 0 1 d x ∫ 0 − x + 1 y d y \int_{0}^1dx\int_{0}^{-x+1}ydy 01dx0x+1ydy。其中积分后如何将 − x + 1 -x+1 x+1带进去是一个待解决的问题
  3. 系数的表示及相关运算太麻烦

若大家有什么意见,欢迎前来指正~

这期就到这里了,下期再见!
在这里插入图片描述
PS:这期案例为啥只有一个题?害,这一个题我可用代码写了好几天呢,咱就是说,够用就行!而且主要是锻炼咱写代码的思路,而不是非要每个题都用C去实现。
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值