【问题标题】:How to calculate the differential coefficient in c如何计算c中的微分系数
【发布时间】:2014-07-31 07:17:40
【问题描述】:

到目前为止,非常感谢您的帮助,但我犯了一个大错误,我需要在特定点推导函数!

我必须计算一个函数的一阶导数,我真的不知道如何到达那里。如果我只需要为一个只有 X^1 的函数计算它,我会知道怎么做,但我真的被困在这里了。

旧东西: 函数可以看起来像2*x^2+1

该方法必须如下所示:double ab(double (f)(double),double x) 我的教授给了我们可能应该使用该功能的提示: (f(x0+∆x)−f(x0))/((x0+∆x)−x0).

抱歉我的英语不好,并提前感谢任何提示或提示。

【问题讨论】:

  • 取 delta=0.01 并尝试实现你给出的公式。
  • 假设您想手动逼近一个函数的导数。你会怎么做?
  • 你的函数是什么样的?你说它只是 X^1,这似乎暗示它是一个线性函数a x + b。如果是这样,那么导数就是a。您可以通过将值 x0+∆xx0 放入等式中来证明这一点。
  • 它必须能够使用所有类型的功能,所以没有特定的

标签: c math numerical-methods derivative differentiation


【解决方案1】:

此示例将帮助您入门:

#include<stdio.h>
#include <stdlib.h>


float func(float x)
{
    return(2*x*x + 1);
}

int main(){
    float h=0.01;
    float x;
    float deriv, second;

    printf("Enter x value: ");
    scanf("%f", &x);
    // derivative at x is the slope of infinitely small
    // line of the function 

    deriv = (func(x+h) - func(x))/h; // I assumed the length to be h

    //for second derivative you can use:
    second = (func(x+h) - 2*func(x) + func(x-h))/(h*h);

    printf("%f\n", deriv);
    return 0;
}

【讨论】:

  • 我曾经有过这样的想法,但我认为这是错误的,因为我没有数学参考,但由于 NPE 链接,我刚刚找到了参考,感谢你,我有一个代码参考。现在,除了错误的描述之外,我也明白了我首先做错了什么。我真的很想给你们一个正确的答案,但是我必须掷硬币:D
  • @chouaib 你是否也知道如何制作它以便它也适用于第二个推导?
  • @Akkyen 我将(f(x+h)-f(x))/h 用于一阶导数,您可以将(f(x+h) - 2f(x) + f(x-h))/h*h 用于二阶...
  • @duffymo:不,没错!我说这是一个 SAMPLE 而不是 SOLUTION 所以我可以使用任何示例函数来演示解决它的方法。之后,由他来理解和改变什么是必要的,以获得他想要的解决方案
  • 既然他明确要求 2*x*x+1,我假设你会效仿他的例子。一个无法理解这个简单想法的学生可能会傻到不看代码就剪切和粘贴代码。不过我理解你的意思。
【解决方案2】:

这个想法近似于f()x 处的一阶导数,其中割线的斜率通过点(x, f(x))(x+∆x, f(x+∆x))

Wikipedia article 应该可以帮助您入门。

【讨论】:

    猜你喜欢
    • 2019-06-05
    • 2021-06-07
    • 2014-05-02
    • 1970-01-01
    • 2021-12-16
    • 2012-05-18
    • 2022-11-09
    • 2022-04-05
    • 1970-01-01
    相关资源
    最近更新 更多