声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1711|回复: 10

[综合讨论] 新人求助:为什么我的被积函数积不出来?

[复制链接]
发表于 2012-11-11 16:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
计算S=∫(  6378245*(1-0.0067)./((1-0.0067.*sin(x).^2).^1.5)  )dx
fesin.m
function f = fesin(x)
            f=6378245*(1-0.0067)./((1-0.0067.*sin(x).^2).^1.5)
command 窗口
quad(@fesin,0,pi/3)
为什么运行结果是f =

  1.0e+006 *

    6.3355    6.3368    6.3405    6.3515    6.3660    6.3751    6.3836


f =

  1.0e+006 *

    6.3358    6.3384


f =

  1.0e+006 *

    6.3356    6.3362


f =

  1.0e+006 *

    6.3355    6.3357


f =

  1.0e+006 *

    6.3355    6.3356


f =

  1.0e+006 *

    6.3356    6.3358
(后面还有很长,因为版面没有复制完)

向高人求解啊~~
还有如果用符号积分的话
a=6378140;
b=6356755;
c=(a^2-b^2)/a^2;

pi=3.1415926;
syms x
M=a*(1-c)./((1-c.*(sin(x).^2)).^1.5)
S=int(M,x,0,pi/3)

结果是:
M =

850328590968027/134217728/(1-7718204252374611/1152921504606846976*sin(x)^2)^(3/2)



S =

1/1145203300354472365*(-52504077973801097849935420499976*sin(4716158420903303/4503599627370496)+52504077973801097849935420499976*sin(4716158420903303/4503599627370496)^3)/(1152921504606846976-1160639708859221587*sin(4716158420903303/4503599627370496)^2+7718204252374611*sin(4716158420903303/4503599627370496)^4)^(1/2)+7304266978122873893289984/1145203300354472365*EllipticE(sin(4716158420903303/4503599627370496),1/1073741824*7718204252374611^(1/2))

数值好像是对的,但是不知道怎么会这么会用这种分数表示...
求高人救命哪~~~~
回复
分享到:

使用道具 举报

 楼主| 发表于 2012-11-11 21:03 | 显示全部楼层
难道是我的题目太长了么...只要把被积函数换成sin(x)都可以运行了...求大神啊~~~
发表于 2012-11-12 09:29 | 显示全部楼层
  1. f=6378245*(1-0.0067)./((1-0.0067.*sin(x).^2).^1.5)
复制代码
后面加上分号,否则每次运行该行,command窗口就会显示该行的运行结果

评分

1

查看全部评分

 楼主| 发表于 2012-11-12 21:04 | 显示全部楼层

quad(@fesin,0,pi/3)

ans =

  6.6542e+006

果然居然是这个分号的关系!!谢谢您了~特别感谢~!!^_^,还有下面的第二个问题也可以请教下么?
发表于 2012-11-12 22:08 | 显示全部楼层
本帖最后由 ChaChing 于 2012-11-12 22:15 编辑

个人水平有限,原来LZ是问重复显示这问题!?
符号积分我的版本(R2009a)是会出现
Warning: Explicit integral could not be found.

发表于 2012-11-12 22:14 | 显示全部楼层
本帖最后由 ChaChing 于 2012-11-13 09:12 编辑

其实个人更好奇的是, 为何函数值第一次为1*7, 而后都为1*2 ??
习惯上都已加上分号了, 所以反而没能注意到! 我想roc/bain应该知道
或许较有空档再研究下quad函数内容
 楼主| 发表于 2012-11-13 22:28 | 显示全部楼层
ChaChing 发表于 2012-11-12 22:08
个人水平有限,原来LZ是问重复显示这问题!?
符号积分我的版本(R2009a)是会出现

我的matlab是7.0版的。它貌似是可以计算,比如说算出的M =

850328590968027/134217728/(1-7718204252374611/1152921504606846976*sin(x)^2)^(3/2)
对应着公式去找的话,850328590968027/134217728的值就是a*(1-c),两个值都是 算出的6.3354e+006,所以数值貌似是没有错的..只是不能理解为什么要用850328590968027/134217728这样一种表达方式..我同学的计算结果也是这样...不过我也没有对后面的值一一检验。
 楼主| 发表于 2012-11-13 22:45 | 显示全部楼层
ChaChing 发表于 2012-11-12 22:14
其实个人更好奇的是, 为何函数值第一次为1*7, 而后都为1*2 ??
习惯上都已加上分号了, 所以反而没能注意到! ...

quad函数是为了积这个函数才临时查的,就是照猫画虎地用,还不太清楚它到底是怎么运算的。所以我还不清楚为什么它的值是一个矩阵,也不知道它为什么会有这么多f值,也不知道它为什么第一个f值和和之后的f值的长度不同....
发表于 2012-11-14 09:37 | 显示全部楼层
第二个问题,这是matlab运算的一个规定,不论数值矩阵的元素原先是用分数还是用浮点数表示,转化后的符号矩阵都将以最接近的精确 有理数形式给出,即显示的分数形式给出。

评分

1

查看全部评分

发表于 2012-11-14 09:40 | 显示全部楼层
ChaChing 发表于 2012-11-12 22:14
其实个人更好奇的是, 为何函数值第一次为1*7, 而后都为1*2 ??
习惯上都已加上分号了, 所以反而没能注意到! ...

算法决定的,quad先选定7个积分点,将积分区域分为三个区域分别进行积分
前面7个值是7个积分点的计算结果

后面quad就采用自适应辛普森积分公式分别对三个区域进行积分
2个值的就是这个过程中不断产生的

评分

1

查看全部评分

 楼主| 发表于 2012-11-14 11:30 | 显示全部楼层
happy 发表于 2012-11-14 09:37
第二个问题,这是matlab运算的一个规定,不论数值矩阵的元素原先是用分数还是用浮点数表示,转化后的符号矩 ...

理解了~!谢谢您~~~~~~~~~~~~~
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-29 06:55 , Processed in 0.120426 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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