编程实现一元多项式的加法运算。

时间: 2023-05-17 09:03:34 浏览: 36
可以使用数组来表示一元多项式,数组下标表示指数,数组元素表示系数。具体实现如下: ```python def add_poly(poly1, poly2): """ 实现一元多项式的加法运算 :param poly1: 一元多项式1,数组表示 :param poly2: 一元多项式2,数组表示 :return: 一元多项式1和2的和,数组表示 """ res = [0] * (max(len(poly1), len(poly2))) for i in range(len(poly1)): res[i] += poly1[i] for i in range(len(poly2)): res[i] += poly2[i] return res ``` 例如,对于多项式 $2x^3 + 3x^2 + 4x + 5$ 和 $x^2 + 2x + 1$,可以表示为数组 $[5, 4, 3, 2]$ 和 $[1, 2, 1]$,分别代表系数从低到高的多项式系数。调用 `add_poly([5, 4, 3, 2], [1, 2, 1])`,得到结果为 $2x^3 + 4x^2 + 6x + 6$,对应的数组为 $[6, 6, 4, 2]$。
相关问题

c语言编程实现一元多项式加法运算,以(0,0)作为输入结束。

#include <stdio.h> #define MAX_TERMS 100 typedef struct { float coef; // 系数 int exp; // 指数 } Term; void input_poly(Term poly[]); void add_poly(const Term poly1[], const Term poly2[], Term result[]); void print_poly(const Term poly[]); int main() { Term poly1[MAX_TERMS], poly2[MAX_TERMS], result[MAX_TERMS]; printf("请输入第一个多项式:\n"); input_poly(poly1); printf("请输入第二个多项式:\n"); input_poly(poly2); add_poly(poly1, poly2, result); printf("两个多项式相加的结果为:\n"); print_poly(result); return 0; } void input_poly(Term poly[]) { int i = 0; while (1) { printf("请输入第%d项的系数和指数:", i + 1); scanf("%f%d", &poly[i].coef, &poly[i].exp); if (poly[i].coef == 0 && poly[i].exp == 0) { break; } i++; } } void add_poly(const Term poly1[], const Term poly2[], Term result[]) { int i = 0, j = 0, k = 0; while (poly1[i].coef != 0 || poly1[i].exp != 0 || poly2[j].coef != 0 || poly2[j].exp != 0) { if (poly1[i].exp > poly2[j].exp) { result[k] = poly1[i]; i++; } else if (poly1[i].exp < poly2[j].exp) { result[k] = poly2[j]; j++; } else { result[k].coef = poly1[i].coef + poly2[j].coef; result[k].exp = poly1[i].exp; i++; j++; } k++; } result[k].coef = 0; result[k].exp = 0; } void print_poly(const Term poly[]) { int i = 0; while (poly[i].coef != 0 || poly[i].exp != 0) { if (i > 0 && poly[i].coef > 0) { printf("+"); } if (poly[i].coef != 1 && poly[i].coef != -1) { printf("%.2f", poly[i].coef); } else if (poly[i].coef == -1) { printf("-"); } if (poly[i].exp == 0) { printf("%.2f", poly[i].coef); } else if (poly[i].exp == 1) { printf("x"); } else { printf("x^%d", poly[i].exp); } i++; } printf("\n"); }

c语言编程实现一元多项式的加法运算

``` #include <stdio.h> #include <stdlib.h> typedef struct PolyNode *Polynomial; struct PolyNode{ int coef; // 系数 int expon; // 指数 Polynomial link; // 下一项 }; void Attach(int c, int e, Polynomial *pRear){ Polynomial P; // 新建节点 P = (Polynomial)malloc(sizeof(struct PolyNode)); P->coef = c; P->expon = e; P->link = NULL; // 插入节点 (*pRear)->link = P; *pRear = P; } Polynomial PolyAdd(Polynomial P1, Polynomial P2){ Polynomial P, Rear, t1, t2; int sum; // 新建头节点 P = (Polynomial)malloc(sizeof(struct PolyNode)); Rear = P; t1 = P1->link; t2 = P2->link; while(t1 && t2){ if(t1->expon == t2->expon){ // 指数相等 sum = t1->coef + t2->coef; if(sum) // 系数不为0 Attach(sum, t1->expon, &Rear); t1 = t1->link; t2 = t2->link; } else if(t1->expon > t2->expon){ // P1中指数较大 Attach(t1->coef, t1->expon, &Rear); t1 = t1->link; } else{ // P2中指数较大 Attach(t2->coef, t2->expon, &Rear); t2 = t2->link; } } // 将未处理完的项接到结果多项式中 for(; t1; t1 = t1->link) Attach(t1->coef, t1->expon, &Rear); for(; t2; t2 = t2->link) Attach(t2->coef, t2->expon, &Rear); // 删除头节点 Rear->link = NULL; P = P->link; free(P1); free(P2); return P; } void PrintPoly(Polynomial P){ if(!P){ printf("0 0\n"); return; } while(P){ printf("%d %d", P->coef, P->expon); P = P->link; if(P) printf(" "); } printf("\n"); } int main(){ Polynomial P1, P2, PP, PS; // 新建多项式P1 P1 = (Polynomial)malloc(sizeof(struct PolyNode)); P1->link = NULL; Attach(5, 0, &P1); Attach(2, 1, &P1); Attach(-3, 2, &P1); // 新建多项式P2 P2 = (Polynomial)malloc(sizeof(struct PolyNode)); P2->link = NULL; Attach(7, 1, &P2); Attach(-2, 2, &P2); Attach(4, 4, &P2); // 输出多项式P1和P2 printf("P1: "); PrintPoly(P1); printf("P2: "); PrintPoly(P2); // 多项式相加 PP = PolyAdd(P1, P2); // 输出相加结果 printf("P1 + P2: "); PrintPoly(PP); return 0; } ```

相关推荐

可以使用链表来存储一元多项式。 具体实现步骤如下: 1. 定义一个结构体来表示一项多项式,包括系数和指数两个成员变量。 2. 定义一个链表节点结构体,包括一项多项式和一个指向下一个节点的指针。 3. 定义一个函数来创建一项多项式的链表,输入系数和指数,返回一个链表头指针。 4. 定义一个函数来打印一元多项式。 5. 定义一个函数来实现一元多项式的加法运算,输入两个链表头指针,返回一个链表头指针。 6. 在主函数中,循环输入一元多项式的系数和指数,直到输入(0,0)为止。然后调用创建链表函数,分别创建两个一元多项式的链表。接着调用加法运算函数,计算并打印结果。 以下是示例代码: c #include <stdio.h> #include <stdlib.h> // 一项多项式结构体 struct PolyTerm { int coef; // 系数 int exp; // 指数 }; // 链表节点结构体 struct Node { struct PolyTerm term; // 一项多项式 struct Node* next; // 下一个节点的指针 }; // 创建一项多项式的链表,输入系数和指数,返回一个链表头指针 struct Node* createPoly(int coef, int exp) { struct Node* head = (struct Node*)malloc(sizeof(struct Node)); head->term.coef = coef; head->term.exp = exp; head->next = NULL; return head; } // 打印一元多项式 void printPoly(struct Node* head) { struct Node* p = head; while (p != NULL) { printf("%d*x^%d", p->term.coef, p->term.exp); p = p->next; if (p != NULL && p->term.coef > 0) { printf("+"); } } printf("\n"); } // 实现一元多项式的加法运算,输入两个链表头指针,返回一个链表头指针 struct Node* addPoly(struct Node* head1, struct Node* head2) { struct Node* p1 = head1; struct Node* p2 = head2; struct Node* head3 = (struct Node*)malloc(sizeof(struct Node)); struct Node* p3 = head3; while (p1 != NULL && p2 != NULL) { if (p1->term.exp > p2->term.exp) { p3->term = p1->term; p1 = p1->next; } else if (p1->term.exp < p2->term.exp) { p3->term = p2->term; p2 = p2->next; } else { p3->term.coef = p1->term.coef + p2->term.coef; if (p3->term.coef != 0) { p3->term.exp = p1->term.exp; p1 = p1->next; p2 = p2->next; } else { p1 = p1->next; p2 = p2->next; continue; } } p3->next = (struct Node*)malloc(sizeof(struct Node)); p3 = p3->next; p3->next = NULL; } while (p1 != NULL) { p3->term = p1->term; p1 = p1->next; p3->next = (struct Node*)malloc(sizeof(struct Node)); p3 = p3->next; p3->next = NULL; } while (p2 != NULL) { p3->term = p2->term; p2 = p2->next; p3->next = (struct Node*)malloc(sizeof(struct Node)); p3 = p3->next; p3->next = NULL; } p3 = head3; head3 = head3->next; free(p3); return head3; } int main() { struct Node* head1 = NULL; struct Node* head2 = NULL; struct Node* head3 = NULL; int coef, exp; printf("Input polynomial A:(coef, exp)\n"); scanf("%d%d", &coef, &exp); head1 = createPoly(coef, exp); while (coef != 0 || exp != 0) { scanf("%d%d", &coef, &exp); if (coef == 0 && exp == 0) { break; } struct Node* p = createPoly(coef, exp); p->next = head1->next; head1->next = p; } printf("Input polynomial B:(coef, exp)\n"); scanf("%d%d", &coef, &exp); head2 = createPoly(coef, exp); while (coef != 0 || exp != 0) { scanf("%d%d", &coef, &exp); if (coef == 0 && exp == 0) { break; } struct Node* p = createPoly(coef, exp); p->next = head2->next; head2->next = p; } printf("Polynomial A: "); printPoly(head1); printf("Polynomial B: "); printPoly(head2); head3 = addPoly(head1, head2); printf("Polynomial A+B: "); printPoly(head3); return 0; }
#include <stdio.h> #include <stdlib.h> #define MAX_SIZE 100 typedef struct { int coef; // 系数 int expn; // 指数 } ElemType; typedef struct { ElemType data[MAX_SIZE]; int length; } Poly; void initPoly(Poly *p) { // 初始化多项式 p->length = 0; } void printPoly(Poly p) { // 打印多项式 int i; for (i = 0; i < p.length; i++) { printf("%d", p.data[i].coef); if (p.data[i].expn == 1) { printf("x"); } else if (p.data[i].expn > 1) { printf("x^%d", p.data[i].expn); } if (i < p.length - 1) { if (p.data[i + 1].coef >= 0) { printf("+"); } } } printf("\n"); } void addPoly(Poly *pa, Poly pb) { // 多项式加法 int i, j, k; i = j = k = 0; while (i < pa->length && j < pb.length) { if (pa->data[i].expn == pb.data[j].expn) { int sum = pa->data[i].coef + pb.data[j].coef; if (sum != 0) { pa->data[i].coef = sum; i++; j++; k++; } else { i++; j++; } } else if (pa->data[i].expn < pb.data[j].expn) { i++; k++; } else { int l; for (l = pa->length - 1; l >= i; l--) { pa->data[l + 1] = pa->data[l]; } pa->data[i] = pb.data[j]; i++; j++; k++; pa->length++; } } while (j < pb.length) { pa->data[k++] = pb.data[j++]; pa->length++; } } int main() { Poly pa, pb; ElemType e; initPoly(&pa); initPoly(&pb); printf("请输入第一个多项式:\n"); while (scanf("%d,%d", &e.coef, &e.expn) == 2 && (e.coef != 0 || e.expn != 0)) { pa.data[pa.length++] = e; } printf("请输入第二个多项式:\n"); while (scanf("%d,%d", &e.coef, &e.expn) == 2 && (e.coef != 0 || e.expn != 0)) { pb.data[pb.length++] = e; } addPoly(&pa, pb); printf("多项式A + 多项式B = "); printPoly(pa); return 0; }
#include <stdio.h> #include <stdlib.h> // 定义一元多项式结构体 typedef struct Polynomial { int coef; // 系数 int exp; // 指数 struct Polynomial* next; // 指向下一个节点的指针 } Polynomial; // 创建一元多项式 Polynomial* createPolynomial() { Polynomial* head = (Polynomial*)malloc(sizeof(Polynomial)); // 创建头节点 head->next = NULL; // 头节点的next指针初始化为NULL return head; } // 插入节点 void insertNode(Polynomial* poly, int coef, int exp) { Polynomial* node = (Polynomial*)malloc(sizeof(Polynomial)); // 创建新节点 node->coef = coef; node->exp = exp; node->next = NULL; Polynomial* p = poly; // 从头节点开始遍历 while (p->next != NULL && p->next->exp > node->exp) { p = p->next; } if (p->next != NULL && p->next->exp == node->exp) { // 指数相同的节点合并系数 p->next->coef += node->coef; free(node); } else { node->next = p->next; p->next = node; } } // 释放一元多项式内存 void freePolynomial(Polynomial* poly) { Polynomial* p = poly; while (p != NULL) { Polynomial* temp = p; p = p->next; free(temp); } } // 输出一元多项式 void printPolynomial(Polynomial* poly) { if (poly->next == NULL) { printf("0\n"); return; } Polynomial* p = poly->next; while (p != NULL) { if (p->coef > 0 && p != poly->next) { printf("+"); } if (p->coef != 1 || p->exp == 0) { printf("%d", p->coef); } if (p->exp != 0) { printf("x"); if (p->exp != 1) { printf("^%d", p->exp); } } p = p->next; } printf("\n"); } // 一元多项式相加 Polynomial* addPolynomial(Polynomial* poly1, Polynomial* poly2) { Polynomial* poly = createPolynomial(); // 创建新的一元多项式用于存储结果 Polynomial* p1 = poly1->next; Polynomial* p2 = poly2->next; while (p1 != NULL && p2 != NULL) { if (p1->exp > p2->exp) { insertNode(poly, p1->coef, p1->exp); p1 = p1->next; } else if (p1->exp < p2->exp) { insertNode(poly, p2->coef, p2->exp); p2 = p2->next; } else { insertNode(poly, p1->coef + p2->coef, p1->exp); p1 = p1->next; p2 = p2->next; } } while (p1 != NULL) { // 将剩余的节点插入结果链表中 insertNode(poly, p1->coef, p1->exp); p1 = p1->next; } while (p2 != NULL) { insertNode(poly, p2->coef, p2->exp); p2 = p2->next; } return poly; } int main() { Polynomial* poly1 = createPolynomial(); // 创建第一个一元多项式 Polynomial* poly2 = createPolynomial(); // 创建第二个一元多项式 int coef, exp; // 读入第一个一元多项式 scanf("%d,%d", &coef, &exp); while (coef != 0 || exp != 0) { insertNode(poly1, coef, exp); scanf("%d,%d", &coef, &exp); } // 读入第二个一元多项式 scanf("%d,%d", &coef, &exp); while (coef != 0 || exp != 0) { insertNode(poly2, coef, exp); scanf("%d,%d", &coef, &exp); } Polynomial* poly = addPolynomial(poly1, poly2); // 一元多项式相加 printPolynomial(poly); // 输出结果 freePolynomial(poly1); // 释放内存 freePolynomial(poly2); freePolynomial(poly); return 0; }
数据结构实验一元多项式计算器 CSDN 是一种用于计算一元多项式的工具。CSDN 是中国最大的专业开发者社区和知识分享平台,提供了丰富的技术资源和编程教程,对于实验一元多项式计算器的开发和学习具有很高的参考价值。 一元多项式计算器主要涉及多项式的输入、存储、展示和计算四个方面。数据结构实验中,我们可以使用链表或数组等数据结构来存储多项式的系数和指数,并通过链表节点或数组元素之间的连接关系,实现多项式的输入和存储。同时,通过合理设置多项式的展示格式,可以让用户清晰地了解多项式的结构和细节。 在计算方面,我们可以定义多项式的加法、减法和乘法等基本运算,通过遍历多项式链表或数组,逐项对应计算。为了提高计算的效率,可以使用一些优化的算法,如快速幂算法来加速乘法过程。 在 CSDN 上,有很多优秀的技术博文和开源项目可以参考。我们可以通过搜索关键词“一元多项式计算器”或相关的技术关键词来找到相关的资源。在博文中,作者通常会介绍多项式计算器的实现思路、算法以及代码示例,我们可以学习其中的设计思想和实现方法,并参考其代码进行实践。 总之,数据结构实验一元多项式计算器 CSDN 是一个非常有用的资源平台,通过学习和借鉴其中的优秀博文和开源项目,我们可以更好地理解和掌握一元多项式计算器的设计和实现,在数据结构课程中获得更好的学习成果。
以下是Python代码实现多项式的加法、减法和乘法运算: python class Polynomial: def __init__(self, coefficients): self.coefficients = coefficients def __add__(self, other): new_coefficients = [] for i in range(max(len(self.coefficients), len(other.coefficients))): if i < len(self.coefficients) and i < len(other.coefficients): new_coefficients.append(self.coefficients[i] + other.coefficients[i]) elif i < len(self.coefficients): new_coefficients.append(self.coefficients[i]) else: new_coefficients.append(other.coefficients[i]) return Polynomial(new_coefficients) def __sub__(self, other): new_coefficients = [] for i in range(max(len(self.coefficients), len(other.coefficients))): if i < len(self.coefficients) and i < len(other.coefficients): new_coefficients.append(self.coefficients[i] - other.coefficients[i]) elif i < len(self.coefficients): new_coefficients.append(self.coefficients[i]) else: new_coefficients.append(-other.coefficients[i]) return Polynomial(new_coefficients) def __mul__(self, other): new_coefficients = [0] * (len(self.coefficients) + len(other.coefficients) - 1) for i in range(len(self.coefficients)): for j in range(len(other.coefficients)): new_coefficients[i+j] += self.coefficients[i] * other.coefficients[j] return Polynomial(new_coefficients) def __str__(self): result = "" for i, coefficient in enumerate(self.coefficients): if coefficient != 0: if i == 0: result += str(coefficient) elif i == 1: result += f"{'+' if coefficient > 0 else ''}{coefficient}x" else: result += f"{'+' if coefficient > 0 else ''}{coefficient}x^{i}" if result == "": result = "0" return result 其中,__add__ 方法实现了多项式的加法运算,__sub__ 方法实现了多项式的减法运算,__mul__ 方法实现了多项式的乘法运算。__str__ 方法用于将多项式对象转换为字符串。 使用示例: python A = Polynomial([1, 2, 3]) # A(x) = 1 + 2x + 3x^2 B = Polynomial([4, 5]) # B(x) = 4 + 5x C = A + B # 加法运算,C(x) = 5 + 7x + 3x^2 print(C) D = A - B # 减法运算,D(x) = -3 - 3x + 3x^2 print(D) E = A * B # 乘法运算,E(x) = 4 + 13x + 22x^2 + 15x^3 print(E)
以下是 Python 代码实现多项式的加法、减法和乘法运算: python class Polynomial: def __init__(self, coeffs): self.coeffs = coeffs def __add__(self, other): # 获取两个多项式的系数 if len(self.coeffs) > len(other.coeffs): coeffs1, coeffs2 = self.coeffs, other.coeffs else: coeffs1, coeffs2 = other.coeffs, self.coeffs # 对系数进行相加 result = [coeffs1[i] + (coeffs2[i] if i < len(coeffs2) else 0) for i in range(len(coeffs1))] return Polynomial(result) def __sub__(self, other): # 获取两个多项式的系数 if len(self.coeffs) > len(other.coeffs): coeffs1, coeffs2 = self.coeffs, other.coeffs else: coeffs1, coeffs2 = other.coeffs, self.coeffs # 对系数进行相减 result = [coeffs1[i] - (coeffs2[i] if i < len(coeffs2) else 0) for i in range(len(coeffs1))] return Polynomial(result) def __mul__(self, other): # 初始化结果多项式的系数 result_coeffs = [0] * (len(self.coeffs) + len(other.coeffs) - 1) # 对系数进行相乘 for i in range(len(self.coeffs)): for j in range(len(other.coeffs)): result_coeffs[i+j] += self.coeffs[i] * other.coeffs[j] return Polynomial(result_coeffs) def __str__(self): # 将多项式系数转化为字符串 result = [] for i in range(len(self.coeffs)): if self.coeffs[i] == 0: continue elif i == 0: result.append(str(self.coeffs[i])) elif i == 1: result.append(str(self.coeffs[i]) + 'x') else: result.append(str(self.coeffs[i]) + 'x^' + str(i)) return ' + '.join(result) # 测试代码 A = Polynomial([1, 2, 3]) B = Polynomial([2, 3, 4, 5]) print("A(x)=", A) print("B(x)=", B) C = A + B print("A(x) + B(x)=", C) D = A - B print("A(x) - B(x)=", D) E = A * B print("A(x) * B(x)=", E) 输出结果为: A(x)= 1 + 2x + 3x^2 B(x)= 2 + 3x + 4x^2 + 5x^3 A(x) + B(x)= 3 + 5x + 7x^2 + 5x^3 A(x) - B(x)= -1 - x - x^2 - 5x^3 A(x) * B(x)= 2 + 7x + 16x^2 + 29x^3 + 22x^4 + 15x^5 可以看到,我们成功地实现了多项式的加法、减法和乘法运算。

最新推荐

竹签数据集配置yaml文件

这个是竹签数据集配置的yaml文件,里面是我本地的路径,大家需要自行确认是否修改

半导体测试设备 头豹词条报告系列-17页.pdf.zip

行业报告 文件类型:PDF格式 打开方式:双击打开,无解压密码 大小:10M以内

ChatGPT技术在金融投资中的智能决策支持.docx

ChatGPT技术在金融投资中的智能决策支持

13、基于Jsp+MySQL的物业管理系统.zip

项目描述 主要功能有: 保安保洁管理 保修管理 房产信息管理 公告管理 管理员信息管理 业主信息管理 登录管理 技术栈 jsp + bootstrap + jquery  + DBCP 运行环境 Jdk8 + eclipse + Tomcat8.5 + mysql5.7 数据库修改后地址 url = jdbc:mysql://localhost:3306/management?characterEncoding=utf8

电力设备与新能源行业周观察中汽协公布月新能源汽车产销数据国信大丰项目海域使用申请公示-28页.pdf.zip

行业报告 文件类型:PDF格式 打开方式:直接解压,无需密码

安全文明监理实施细则_工程施工土建监理资料建筑监理工作规划方案报告_监理实施细则.ppt

安全文明监理实施细则_工程施工土建监理资料建筑监理工作规划方案报告_监理实施细则.ppt

"REGISTOR:SSD内部非结构化数据处理平台"

REGISTOR:SSD存储裴舒怡,杨静,杨青,罗德岛大学,深圳市大普微电子有限公司。公司本文介绍了一个用于在存储器内部进行规则表达的平台REGISTOR。Registor的主要思想是在存储大型数据集的存储中加速正则表达式(regex)搜索,消除I/O瓶颈问题。在闪存SSD内部设计并增强了一个用于regex搜索的特殊硬件引擎,该引擎在从NAND闪存到主机的数据传输期间动态处理数据为了使regex搜索的速度与现代SSD的内部总线速度相匹配,在Registor硬件中设计了一种深度流水线结构,该结构由文件语义提取器、匹配候选查找器、regex匹配单元(REMU)和结果组织器组成。此外,流水线的每个阶段使得可能使用最大等位性。为了使Registor易于被高级应用程序使用,我们在Linux中开发了一组API和库,允许Registor通过有效地将单独的数据块重组为文件来处理SSD中的文件Registor的工作原

typeerror: invalid argument(s) 'encoding' sent to create_engine(), using con

这个错误通常是由于使用了错误的参数或参数格式引起的。create_engine() 方法需要连接数据库时使用的参数,例如数据库类型、用户名、密码、主机等。 请检查你的代码,确保传递给 create_engine() 方法的参数是正确的,并且符合参数的格式要求。例如,如果你正在使用 MySQL 数据库,你需要传递正确的数据库类型、主机名、端口号、用户名、密码和数据库名称。以下是一个示例: ``` from sqlalchemy import create_engine engine = create_engine('mysql+pymysql://username:password@hos

数据库课程设计食品销售统计系统.doc

数据库课程设计食品销售统计系统.doc

海量3D模型的自适应传输

为了获得的目的图卢兹大学博士学位发布人:图卢兹国立理工学院(图卢兹INP)学科或专业:计算机与电信提交人和支持人:M. 托马斯·福吉奥尼2019年11月29日星期五标题:海量3D模型的自适应传输博士学校:图卢兹数学、计算机科学、电信(MITT)研究单位:图卢兹计算机科学研究所(IRIT)论文主任:M. 文森特·查维拉特M.阿克塞尔·卡里尔报告员:M. GWendal Simon,大西洋IMTSIDONIE CHRISTOPHE女士,国家地理研究所评审团成员:M. MAARTEN WIJNANTS,哈塞尔大学,校长M. AXEL CARLIER,图卢兹INP,成员M. GILLES GESQUIERE,里昂第二大学,成员Géraldine Morin女士,图卢兹INP,成员M. VINCENT CHARVILLAT,图卢兹INP,成员M. Wei Tsang Ooi,新加坡国立大学,研究员基于HTTP的动态自适应3D流媒体2019年11月29日星期五,图卢兹INP授予图卢兹大学博士学位,由ThomasForgione发表并答辩Gilles Gesquière�