网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月11日漏签0天
mathematica吧 关注:19,926贴子:74,240
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 3回复贴,共1页
<<返回mathematica吧
>0< 加载中...

计算复变量函数在NURBS上的积分

  • 只看楼主
  • 收藏

  • 回复
  • 王云飞的天空
  • 还分不清
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

p1 = {-1, 0};
p2 = {1, 0};
p3 = {0, 1};
curve = BSplineCurve[{p1, p3, p2}];
{RegionQ[curve], RegionDimension[curve]}
ContourIntegrate[Sin[z], z \[Element] curve]
NContourIntegrate[Sin[z], z \[Element] curve]
除了手动构造NURBS曲线函数以外,有没有直接利用BSplineCurve或BSplineFunction计算积分的方法,
我尝试了DiscretizeRegion,结果不是很满意


  • 王云飞的天空
  • 还分不清
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

我原本预期a,a1,a2应该是相等的
但是,我可能想当然了


2026-01-11 06:11:20
广告
不感兴趣
开通SVIP免广告
  • N_update
  • 安装激活
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
以前写的,不过是三维版的,而且是分段函数,直接从定义出发,用grad提取系数,做成矩阵乘法,你扩展下怎么把分段函数搞成一个就可以了
segmentFit[path_] := Module[
{basis, A, len, i, path1, fun, coe, P},
g[k_, n_] := Subscript[P, k]*1/n! \!\(
\*UnderoverscriptBox[\(\[Sum]\), \(i = 0\), \(n - k\)]\(
\*SuperscriptBox[\((\(-1\))\), \(i\)]*Binomial[n + 1, i]*
\*SuperscriptBox[\((t + n - k - i)\), \(n\)]\)\);(*B样条线定义*)
len = 2;(*多项式最高次*)
basis = Table[t^i, {i, 0, len}];
coe = CoefficientList[Plus @@ Table[g[i, len], {i, 0, len}],
t];(*B样条线:系数*)
A = Grad[coe, Table[Subscript[P, i], {i, 0, len}]];
path1 = Prepend[path, (path[[1]] - path[[2]]) + path[[1]]];
path1 = Append[path1, Last[path] + (Last[path] - path[[-2]])];
fun = Table[
basis . A . Take[path1, {i, i + len}] // N, {i, 1,
Length[path1] - len}];
Return[fun];
]
Compile[{{path}}, segmentFit]
path = {{30, 0, 0}, {30 + 14/Sqrt[249], 20/Sqrt[249], 20/Sqrt[
249]}, {32.20470703921131`, 1.3906289084343317`,
2.7671279831555884`}, {33.09192098994558`, 2.6580774094832877`,
4.034576484204544`}, {33.11954143398565`, 2.9390588704641174`,
6.014547829869958`}, {32.50729927398154`, 4.456873016879327`,
7.164069362706715`}, {33.39451322471581`, 5.724321517928283`,
8.431517863755671`}, {34.56600017798742`, 5.876252184970187`,
10.045375165603202`}, {35.56858636708187`, 7.606803929329527`,
10.048780093195823`}, {36.45580031781614`, 8.874252430378483`,
11.316228594244778`}};
v = segmentFit[path];
(*Show[Graphics3D[{{Blue,PointSize[0.01],Point[path]}},ImageSize\
\[Rule]Large],
ParametricPlot[v,{t,0,1}]]*)
ParametricPlot3D[v, {t, 0, 1}]


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 3回复贴,共1页
<<返回mathematica吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示