如何解决在 Scilab 上求解非线性二阶微分方程?
我需要解决以下问题
Public Sub PivotFieldsChange()
Dim ValType As String,param As String
Dim pf As PivotField
Dim pt As PivotTable
Application.ScreenUpdating = False
Sheet = "mysheet"
'select between % calculated column or normal column
If Range("Z1").Value = 1 Then
ValType = "%"
Else: ValType = ""
End If
Application.EnableEvents = False
For Each pt In Sheets(Sheet).PivotTables
Select Case pt.Name
Case "case1": param = "param1"
Case "case2": param = "param2"
Case "case3": param = "param3"
Case Else: GoTo line1
End Select
pt.PivotFields("Values").PivotItems("X").Visible = False
pt.PivotFields("Values").PivotItems("Y").Visible = False
pt.PivotFields (param & ValType & "_X")
pt.PivotFields(param & ValType & "_X").Orientation = xlDataField
pt.PivotFields (param & ValType & "_Y")
pt.PivotFields(param & ValType & "_Y").Orientation = xlDataField
For Each pf In pt.DataFields
pf.Function = xlAverage
pf.Caption = Right(pf.Caption,1)
Next
line1:
Next pt
Application.EnableEvents = True
End Sub
我发现很难求解,因为 -cos(y)y''+sin(y)y'^2+sin(y)=0,y'(0)=y'(1)=0,such that y=y(t)
项和边界条件。
解决方法
这是您的 bvp 的 Scilab 代码
-cos(y)y''+sin(y)y'^2+sin(y)=0,y'(0)=y'(1)=0,y(0)=0,y (1)=1.5
但不同的边界条件没有给出简单的解决方案。您必须首先将 y'' 写为 y 和 y' 的函数。函数 fsub
计算 y'' 作为 u=[y,y']
function ysecond=fsub(x,u)
y=u(1);
yprime=u(2);
ysecond = sin(y)/cos(y)*(1+yprime^2);
end
function g=gsub(i,u),y=u(1);
select i
case 1 then // x=zeta(1)=0
g = y // y(0)=0
case 2 then // x=zeta(2)=1
g = y-1.5 // y(1)=1.5
end
end
N=1;
m=2;
x_low=0
x_up=1;
xpoints=linspace(0,1,100);
zeta=[0,1];
u = bvodeS(xpoints,m,N,x_low,x_up,fsub,gsub,zeta)
plot(xpoints,u(1,:))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。