数值积分的
3视图(30天)
显示旧的评论
我处理一个问题找到准确的数值积分。具体地说,介绍了积分使用最佳逼近方案(勒让德多项式)近似一个矢量值函数的不定积分是不容易被明确写下来。提供的代码如下:
r1 = 0.7;r2 = 1;r3 = r2 - r1;d = 8;
信谊y真实
勒= [];
为我= 0:d
l =[多项式系数(legendreP(我,(2 / r1) * y + 1)) 0 (1 d - i)];
勒=[勒;l];
结束
腿= [];
为我= 0:d
l =[多项式系数(legendreP(我,(2 * y + r1 + r2) / r3)) 0 (1 d - i)];
腿=[腿;l];
结束
信谊x
t = [];
为我= 0:d
t = [t;x ^我);
结束
xp = t;
lp =勒* xp;la =腿* xp;
fi1 = [exp (sin (x));exp (cos (x)));fi2 = (sin (x ^ 2);cos (x ^ 2)];
ny1 =大小(fi1, 1);ny2 =大小(fi2, 1);纽约= ny1 + ny2;
ga1 = fi1 * lp ';ga2 = fi2 *拉';
Ga1 =双(int (Ga1 x, r1, 0) *诊断接头(2。* (0:d) + 1) * (1 / r1));
Ga2 =双(int (Ga2 x, r2, r1) *诊断接头(2。* (0:d) + 1) * (1 / r3));
ep1 = fi1 - Ga1 * lp;ep2 = fi2 - Ga2 *拉;
E1 =双(int (ep1 * ep1 ', x, r1, 0));E2 =双(int (ep2 * ep2的,x, r2, r1));
代码没问题,直到d = 8时返回一个错误状态,双不能输入表达式转换为双数组。如果输入表达式包含符号变量,使用VPA。
我试过vpa函数但仍会发生同样的问题。
一种可能会建议使用积分数值积分而不是int。然而,数值积分似乎产生不准确的结果相比,符号表示。注意,误差矩阵E1和E2变得极其小当近似度d变得大。
总而言之,这里的问题是如何提取,或者准确地计算如果有人建议,E1和E2的数值。
谢谢!
接受的答案
沃尔特·罗伯森
2016年11月7日
如果你改变你的第一线
信谊n
r1 = 0.7;r2 = 1;r3 = r2 - r1;d = 8;di = n * (d + 1);
然后你可以完全通过E1。之后,不幸的是MATLAB并不知道如何做积分,即使有一个封闭的解。你需要切换到数字:
FF = ep2 * ep2 ';
FF1 = matlabFunction(简化(FF (1));
FF2 = matlabFunciton(简化(FF (2));
E2(1) =积分(FF1, r2, r1);
E2(2) =积分(FF2 r2, r1);