首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >黎曼和方程

黎曼和方程
EN

Stack Overflow用户
提问于 2017-03-29 11:01:48
回答 1查看 184关注 0票数 1

我有一个公式,可以找到黎曼和的中点值,但它在输入系数3, 4, 0以及10个矩形的-11的上下限时,没有提供正确的中点值。

代码语言:javascript
复制
float getMidPoint(int final, int initial, int rectangle, int coefficient1, int coefficient2, int coefficient3)
{
    float deltaX;
    float sumMidPoint;
    float f_X;
    float x;
    x = initial;
    deltaX = (final - initial) / rectangle;
    while(x < final)
    {
        f_X = pow((coefficient1 * x), 2) + (coefficient2 * x) + coefficient3;

        sumMidPoint += f_X * deltaX;
        x = x + deltaX;
    }
    return (sumMidPoint);
}

我不确定为什么我没有得到正确的sumMidPoint值。测试用例的sumMidPoint = 1.980000平方。单位

EN

回答 1

Stack Overflow用户

发布于 2017-03-29 11:10:45

两个问题:

  1. final、initial和rectangle都是整数,因此要进行整数除法:

(最终-首字母)/ rectangle = 2/20 = 0.1表示浮点型,0表示整型

要进行更正,请至少将其中一个设置为float,但最好同时设置两个:

代码语言:javascript
复制
float final, float initial

你的第二个错误在公式中: 3x^2是3*(x,2)。您写了(3x)^2。

  1. 另外,为了安全起见,不要忘记在使用sumMidPoint变量之前对其进行初始化:

float sumMidPoint = 0;

以下是我的代码的最终版本:

代码语言:javascript
复制
#include <stdio.h>
#include <math.h>

float getMidPoint(float final, int initial, int rectangle, int   coefficient1, int coefficient2, int coefficient3) {
    float deltaX = (final - initial) / rectangle;
    float sumMidPoint = 0;
    float f_X;
    float x = initial + deltaX / 2;

    for(int i=0; i< rectangle; i++)
    {
        f_X = (coefficient1 * pow( x, 2)) + (coefficient2 * x) + coefficient3;

        sumMidPoint += f_X * deltaX;
        x = x + deltaX;
    }
    return(sumMidPoint);

}

int main() {
    printf("Result: %f\n", getMidPoint(1, -1, 10, 3, 4, 0));
    return(0);
}

输出:结果: 1.980000

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43083534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档