新人求助:为什么我的被积函数积不出来?
计算S=∫(6378245*(1-0.0067)./((1-0.0067.*sin(x).^2).^1.5))dxfesin.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
(后面还有很长,因为版面没有复制完)
向高人求解啊~~{:{12}:}
还有如果用符号积分的话
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))
数值好像是对的,但是不知道怎么会这么会用这种分数表示...
求高人救命哪~~~~ {:{16}:}难道是我的题目太长了么...只要把被积函数换成sin(x)都可以运行了...求大神啊~~~ f=6378245*(1-0.0067)./((1-0.0067.*sin(x).^2).^1.5)后面加上分号,否则每次运行该行,command窗口就会显示该行的运行结果 happy 发表于 2012-11-12 09:29 static/image/common/back.gif
后面加上分号,否则每次运行该行,command窗口就会显示该行的运行结果
quad(@fesin,0,pi/3)
ans =
6.6542e+006
果然居然是这个分号的关系!!谢谢您了~特别感谢~!!^_^,还有下面的第二个问题也可以请教下么? 本帖最后由 ChaChing 于 2012-11-12 22:15 编辑
个人水平有限,原来LZ是问重复显示这问题!?
符号积分我的版本(R2009a)是会出现
Warning: Explicit integral could not be found.
本帖最后由 ChaChing 于 2012-11-13 09:12 编辑
其实个人更好奇的是, 为何函数值第一次为1*7, 而后都为1*2 ??
习惯上都已加上分号了, 所以反而没能注意到! 我想roc/bain应该知道
或许较有空档再研究下quad函数内容 ChaChing 发表于 2012-11-12 22:08 static/image/common/back.gif
个人水平有限,原来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这样一种表达方式..我同学的计算结果也是这样...不过我也没有对后面的值一一检验。 ChaChing 发表于 2012-11-12 22:14 static/image/common/back.gif
其实个人更好奇的是, 为何函数值第一次为1*7, 而后都为1*2 ??
习惯上都已加上分号了, 所以反而没能注意到! ...
{:{15}:}quad函数是为了积这个函数才临时查的,就是照猫画虎地用,还不太清楚它到底是怎么运算的。所以我还不清楚为什么它的值是一个矩阵,也不知道它为什么会有这么多f值,也不知道它为什么第一个f值和和之后的f值的长度不同.... 第二个问题,这是matlab运算的一个规定,不论数值矩阵的元素原先是用分数还是用浮点数表示,转化后的符号矩阵都将以最接近的精确 有理数形式给出,即显示的分数形式给出。 ChaChing 发表于 2012-11-12 22:14 static/image/common/back.gif
其实个人更好奇的是, 为何函数值第一次为1*7, 而后都为1*2 ??
习惯上都已加上分号了, 所以反而没能注意到! ...
算法决定的,quad先选定7个积分点,将积分区域分为三个区域分别进行积分
前面7个值是7个积分点的计算结果
后面quad就采用自适应辛普森积分公式分别对三个区域进行积分
2个值的就是这个过程中不断产生的 happy 发表于 2012-11-14 09:37 static/image/common/back.gif
第二个问题,这是matlab运算的一个规定,不论数值矩阵的元素原先是用分数还是用浮点数表示,转化后的符号矩 ...
理解了~!谢谢您~~~~~~~~~~~~~
页:
[1]