彩笔凡 发表于 2023-12-12 16:14:02

求助

1. 用递归方法求n阶勒让德多项式的值,递归公式为
                1    (n=0)
pn(x)=      x    (n=1)
               ((2n-1)*x-pn-1(x)-(n-1)*pn-2(x))/n n>=1
思路:从多项中看到Pn(x)和Pn-1(x)、Pn-2(x)需要采用同样的算法实现,可以用递归的方法实现。递归结束的条件有2个:n=0或n=1。

FishC 发表于 2023-12-12 16:14:23

好的,下面是用递归方法求解n阶勒让德多项式的代码:

def legendre(n, x):
    if n == 0:
      return 1
    elif n == 1:
      return x
    else:
      return ((2 * n - 1) * x * legendre(n - 1, x) - (n - 1) * legendre(n - 2, x)) / n

n = int(input("请输入阶数n:"))
x = float(input("请输入x的值: "))

result = legendre(n, x)
print("P%d(%f) = %f" % (n, x, result))

运行结果示例:
请输入阶数n:3
请输入x的值: 0.5
P3(0.5) = -0.437500

希望对你有帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

彩笔凡 发表于 2023-12-12 16:15:02

FishC 发表于 2023-12-12 16:14
好的,下面是用递归方法求解n阶勒让德多项式的代码:



c语言编程

FishC 发表于 2023-12-12 16:15:09

彩笔凡 发表于 2023-12-12 16:15
c语言编程

当然可以!请问你有什么具体的问题或者需求,需要我帮你解答或者提供代码示例吗?

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

彩笔凡 发表于 2023-12-12 16:15:45

FishC 发表于 2023-12-12 16:15
当然可以!请问你有什么具体的问题或者需求,需要我帮你解答或者提供代码示例吗?

以上回复来自 FishC ...

用c语言编写
1. 用递归方法求n阶勒让德多项式的值,递归公式为
                1    (n=0)
pn(x)=      x    (n=1)
               ((2n-1)*x-pn-1(x)-(n-1)*pn-2(x))/n n>=1
思路:从多项中看到Pn(x)和Pn-1(x)、Pn-2(x)需要采用同样的算法实现,可以用递归的方法实现。递归结束的条件有2个:n=0或n=1。

FishC 发表于 2023-12-12 16:16:10

彩笔凡 发表于 2023-12-12 16:15
用c语言编写
1. 用递归方法求n阶勒让德多项式的值, ...

好的,下面是用C语言实现递归方法求解n阶勒让德多项式的代码示例:

#include <stdio.h>

double legendre(int n, double x) {
    if (n == 0) {
      return 1;
    } else if (n == 1) {
      return x;
    } else {
      return ((2 * n - 1) * x * legendre(n - 1, x) - (n - 1) * legendre(n - 2, x)) / n;
    }
}

int main() {
    int n;
    double x;

    printf("请输入阶数n:");
    scanf("%d", &n);
    printf("请输入x的值:");
    scanf("%lf", &x);

    double result = legendre(n, x);
    printf("P%d(%f) = %f\n", n, x, result);

    return 0;
}

运行结果示例:

请输入阶数n:3
请输入x的值:0.5
P3(0.500000) = -0.437500

希望对你有帮助!如果还有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

彩笔凡 发表于 2023-12-12 16:21:46

FishC 发表于 2023-12-12 16:16
好的,下面是用C语言实现递归方法求解n阶勒让德多项式的代码示例:



代码报错
C:\Users\Administrator\Desktop\学习软件\Text1.c(18) : error C2143: syntax error : missing ';' before 'type'
C:\Users\Administrator\Desktop\学习软件\Text1.c(19) : error C2065: 'result' : undeclared identifier
执行 cl.exe 时出错.

FishC 发表于 2023-12-12 16:22:10

彩笔凡 发表于 2023-12-12 16:21
代码报错
C:\Users\Administrator\Desktop\学习软件\ ...

抱歉,看起来你在代码中遇到了一些语法错误。错误1发生在第18行,错误2发生在第19行。错误1的原因是缺少一个分号,而错误2是因为变量result未声明。

下面是更正后的代码:

#include <stdio.h>

double legendre(int n, double x) {
    if (n == 0) {
      return 1;
    } else if (n == 1) {
      return x;
    } else {
      return ((2 * n - 1) * x * legendre(n - 1, x) - (n - 1) * legendre(n - 2, x)) / n;
    }
}

int main() {
    int n;
    double x;
    printf("请输入阶数n:");
    scanf("%d", &n);
    printf("请输入x的值:");
    scanf("%lf", &x);
    double result = legendre(n, x);
    printf("P%d(%f) = %f\n", n, x, result);
    return 0;
}

请确保将代码粘贴到C语言的源文件中,并使用合适的编译器进行编译和运行。如果仍然遇到问题,请提供具体的错误提示信息,以便我更好地帮助你解决问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

彩笔凡 发表于 2023-12-12 16:24:34

FishC 发表于 2023-12-12 16:22
抱歉,看起来你在代码中遇到了一些语法错误。错误1发生在第18行,错误2发生在第19行。错误1的原因是缺少 ...

用c语言编写
2. 输入10个学生5门课的成绩,分别用函数实现下列功能
(1)计算每个学生的平均分;
(2)计算每门课的平均分;
(3)找出所有50个分数中的最高的分数所对应的学生和课程;
思路:因有多个学生的多个课程,在进行存放的时候可以采用多维数组;计算之前要先赋值,可自定义函数实现赋值。(1)要计算每名学生的平均分,按行计算,(2)计算每门课的平均分,按列计算,要考虑列应该在外层循环;(3)第三步可用选择法,依次比较,并记下学号和课程号。
注意因行号、列号、及数组会有多个函数使用,因此可使用全局数组、全局变量。

FishC 发表于 2023-12-12 16:27:41

彩笔凡 发表于 2023-12-12 16:24
用c语言编写
2. 输入10个学生5门课的成绩,分别用函 ...

下面是用C语言编写的实现上述功能的代码:

#include <stdio.h>

#define STUDENTS 10
#define COURSES 5

float scores;

void inputScores() {
    printf("请输入%d个学生的%d门课的成绩:\n", STUDENTS, COURSES);
    for(int i = 0; i < STUDENTS; i++) {
      printf("请输入第%d个学生的成绩:\n", i+1);
      for(int j = 0; j < COURSES; j++) {
            scanf("%f", &scores);
      }
    }
}

void calculateStudentAverage() {
    for(int i = 0; i < STUDENTS; i++) {
      float sum = 0;
      for(int j = 0; j < COURSES; j++) {
            sum += scores;
      }
      float average = sum / COURSES;
      printf("第%d个学生的平均分为:%f\n", i+1, average);
    }
}

void calculateCourseAverage() {
    for(int j = 0; j < COURSES; j++) {
      float sum = 0;
      for(int i = 0; i < STUDENTS; i++) {
            sum += scores;
      }
      float average = sum / STUDENTS;
      printf("第%d门课的平均分为:%f\n", j+1, average);
    }
}

void findHighestScore() {
    int highestStudent = 0;
    int highestCourse = 0;
    float highestScore = scores;
   
    for(int i = 0; i < STUDENTS; i++) {
      for(int j = 0; j < COURSES; j++) {
            if(scores > highestScore) {
                highestScore = scores;
                highestStudent = i+1;
                highestCourse = j+1;
            }
      }
    }
   
    printf("最高分数为:%f,对应的学生是第%d个学生,课程是第%d门课\n", highestScore, highestStudent, highestCourse);
}

int main() {
    inputScores();
    calculateStudentAverage();
    calculateCourseAverage();
    findHighestScore();
   
    return 0;
}

你可以根据需要进行调整和扩展。希望对你有帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

彩笔凡 发表于 2023-12-12 16:52:19

FishC 发表于 2023-12-12 16:27
下面是用C语言编写的实现上述功能的代码:



用python编写
2. 输入10个学生5门课的成绩,分别用函数实现下列功能
(1)计算每个学生的平均分;
(2)计算每门课的平均分;
(3)找出所有50个分数中的最高的分数所对应的学生和课程;
思路:因有多个学生的多个课程,在进行存放的时候可以采用多维数组;计算之前要先赋值,可自定义函数实现赋值。(1)要计算每名学生的平均分,按行计算,(2)计算每门课的平均分,按列计算,要考虑列应该在外层循环;(3)第三步可用选择法,依次比较,并记下学号和课程号。
注意因行号、列号、及数组会有多个函数使用,因此可使用全局数组、全局变量。

FishC 发表于 2023-12-12 16:53:02

彩笔凡 发表于 2023-12-12 16:52
用python编写
2. 输入10个学生5门课的成绩,分别用函 ...

下面是用Python编写的实现上述功能的代码:

STUDENTS = 10
COURSES = 5

scores = [ * COURSES for _ in range(STUDENTS)]

def inputScores():
    print("请输入%d个学生的%d门课的成绩:" % (STUDENTS, COURSES))
    for i in range(STUDENTS):
      print("请输入第%d个学生的成绩:" % (i+1))
      for j in range(COURSES):
            scores = float(input())

def calculateStudentAverage():
    for i in range(STUDENTS):
      sum = 0
      for j in range(COURSES):
            sum += scores
      average = sum / COURSES
      print("第%d个学生的平均分为:%f" % (i+1, average))

def calculateCourseAverage():
    for j in range(COURSES):
      sum = 0
      for i in range(STUDENTS):
            sum += scores
      average = sum / STUDENTS
      print("第%d门课的平均分为:%f" % (j+1, average))

def findHighestScore():
    highestScore = scores
    highestStudent = 1
    highestCourse = 1
    for i in range(STUDENTS):
      for j in range(COURSES):
            if scores > highestScore:
                highestScore = scores
                highestStudent = i + 1
                highestCourse = j + 1
    print("最高分数为:%f,对应的学生是第%d个学生,课程是第%d门课" % (highestScore, highestStudent, highestCourse))

inputScores()
calculateStudentAverage()
calculateCourseAverage()
findHighestScore()

你可以根据需要进行调整和扩展。希望对你有帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 求助