数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
查看: 10074|回复: 16

【求助】各位老师倒数函数曲线长度怎么积分

[复制链接]
发表于 2019-5-3 21:52 | 显示全部楼层 |阅读模式
本帖最后由 awei 于 2019-5-3 14:04 编辑

如下图,x>0,f(x)=10/x在区间[1,10]上的长度

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
发表于 2019-5-4 12:27 | 显示全部楼层
曲线积分不会?
回复 支持 反对

使用道具 举报

发表于 2019-5-4 12:31 | 显示全部楼层
本帖最后由 markfang2050 于 2019-5-4 12:32 编辑

L=∫1,10] √[1+(f '(x))^2] dx
回复 支持 反对

使用道具 举报

发表于 2019-5-4 12:34 | 显示全部楼层
将区间 [1,10] n 等分,在每个小条形区域内,用直线段代替曲线段,最后相加,就是曲线段的长的近似值,取极限即得长度 .
每小段的长=△x/cosα=△x*√[1+(tanα)^2]=△x*√[1+(f '(x))^2] ,
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2019-5-4 13:39 | 显示全部楼层
刚在网上找到答案,老师们已经回帖,多谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-4 14:50 | 显示全部楼层
曲线积分出来是复数,不会玩了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-4 23:38 | 显示全部楼层
谢谢永远老师

点评

学哥好,俺不是老师,论坛里的elim、simple、陆老师,他们才是高校数学系老师  发表于 2019-5-4 23:45
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-4 23:44 | 显示全部楼层
永远 发表于 2019-5-4 14:35
楼主本层中的程序参数是否有笔误?

的确第一次有笔误,后来改正了,仍有虚部,可能软件版本不一样吧

点评

在加工生产当中,不用微积分,直接把物体放在三维投影仪下进行全尺寸扫描,然后扫描到的尺寸录入专业软件结合cad软件作近似测量,然后一点一点加,虽然精度不是很好,但是完全符合生产需要了  发表于 2019-5-4 23:58
我也问过同类题目,不过无人问津,时隔多久,看楼主发这个帖子,难道楼主找到好方法啦?  发表于 2019-5-4 23:49
我的是9.0版本的,  发表于 2019-5-4 23:47
回复 支持 反对

使用道具 举报

发表于 2019-5-5 02:22 | 显示全部楼层
数值计算积分没学?编个积分程序计算好了。辛普森法
回复 支持 反对

使用道具 举报

发表于 2019-5-5 02:41 | 显示全部楼层
本帖最后由 markfang2050 于 2019-5-5 03:25 编辑

#include <math.h>
#include <stdio.h>
#include<stdlib.h>
#include <time.h>
double f(double x)
//辛普森(Simpson)公式是牛顿-科特斯公式当n=2时的情形,也称为三点公式。//
//利用区间二等分的三个点来进行积分插值。其科特斯系数分别为1/6,4/6,1/6。//
{
        double y;
        y=sqrt(1.0000+100.0000/(x*x*x*x));
        return y;
}

double simpsom(double a,double b,double eps,double (*f)(double))
{
        int n,k;
        double h,t1,t2,s1,s2,ep,p,x;
        n=1;
        h=b-a;
        t1=h*((*f)(a)+(*f)(b))/2.0;
        s1=t1;
        ep=eps+1.0;
        while(ep>=eps)
        {
                p=0.0;
                for(k=0;k<=n-1;k++)
                {
                        x=a+(k+0.5)*h;
                        p=p+(*f)(x);
                }
                t2=(t1+h*p)/2.0;
                s2=(4.0*t2-t1)/3.0;
                ep=fabs(s2-s1);
                t1=t2;
                s1=s2;
                n=n+n;
                h=h/2.0;
        }
        return s2;
}
void main()
{
        clock_t begin, end;
    double  cost;
    begin = clock();

        double a,b,eps,t,f(double);
        a=1.0;
        b=10.0;
        eps=0.0000001;
        t=simpsom(a,b,eps,f);
        printf("t=%e\n",t);

    end = clock();
    cost = (double)(end - begin) / CLOCKS_PER_SEC;
       
    printf("%lf seconds\n", cost);
    system("pause");

}

结果:14.60846
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2025-8-4 04:27 , Processed in 0.081391 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表