在包含未知变量的Matlab中求解积分?

时间:2017-04-24 13:15:17

标签: matlab function numerical-methods integral numerical-integration

任务是通过使用数值方法创建可展开的曲面,在Matlab中创建锥形帽。我已经完成了3个部分2.我的问题是关于第3部分,我需要计算可以包含帽子的最小矩形纸面。我需要计算纸张的材料浪费。

您可以跳过长篇背景并转到最后一段

背景:

锥形帽可以用倾斜的锥体创建,其尖端位于(a; 0; b)并且带有圆形底座。

x = Rcos u, 
y = Rsin u
z = 0
0<_ u >_2pi

与 R,a和b的已知值

Given differentialequations

epsilon和eta(&#39; n&#39;)是当参数u从0到2pi时的曲线x-和y-值,alpha是曲线在点处的倾斜角度(epsilon,eta) )。 A的起始值: u=0, alhpa=0, epsilon=0, eta=0

曲线在B处停止,其中参数u已达到2pi。

1。 我使用Runge-Kutta-4绘制曲线并显示尖端位于P = (0, sqrt(b^2 + (R-alpha)^2))

2。 我表明,通过在RK4中使用较小的间隔,我仍然可以获得相当好的准确度,但问题是曲线不是平滑的。因此,我在每个区间使用了Hermite-epspoon和eta的插值作为u的函数,以获得更好的曲线。

3。 好的,现在我需要计算可以包含帽子的最小矩形纸面和纸张的材料浪费的大小。如果模板中的结束角度α(2pi)是pi或pi / 2,则材料浪费将更少。我现在得到了R&amp; alpha(R = 7.8和alpha = 5.5),我的任务是计算锥形帽将使用构造标准alpha(2pi)= pi(然后对于alpha(2pi)= pi / 2)获得的高度另一个大小的帽子。)

所以我采用了上面的第一个等式(包含b的表达式)并将其重写为积分: The integral

问题

我的理解是我需要在matlab中解决这个积分,然后选择b使得alpha(2pi)-pi = 0(使用上面给出的标准)。 给出R和alpha的值,并且t被定义为更早的区间(在我做RK4的第1部分中)。因此,当积分求解时,我得到f(b)= 0,我应该能够用例如割线方法解决?但是我无法用matlab函数来解决积分问题,因为我当然没有b的值,这就是我要找的东西。那我该怎么办呢? matlab中是否有可以使用的函数?

1 个答案:

答案 0 :(得分:1)

您可以使用alpha的微分方程,并测试b的不同值,直到满足条件alpha(2pi)=pi。例如:

b0=1 %initial seed
b=fsolve(@find_b,b0) %use the function fsolve or any of your choice

要解决的功能是:

function[obj]=find_b(b)
    alpha0=0 %initual valur for alpha at u=0
    uspan=[0 2*pi] %range for u
    %Use the internal ode solver or any of your choice
    [u,alpha] = ode45(@(u,alpha) integrate_alpha(u,alpha,b), uspan, alpha0);

    alpha_final=alpha(end) %Get the last value for alpha (at u=2*pi)

    obj=alpha_final-pi %Function to be solved
end

整合可以这样完成:

function[dalpha]=integrate_alpha(u,alpha,b)

      a=1; %you can use the right value here
      R=1; %you can use the right value here

      dalpha=(R-a*cos(u))/sqrt(b^2+(R-a*cos(u))^2); 

end