编写方程代码

创建一个函数以编写方程代码。此函数应具有签名 dydx = mat4ode(x,y,lambda),其中:

x 是自变量。

y 是因变量。

lambda 是表示特征值的未知参数。

您可以用代换法 y1=y 和 y2=y′ 将马蒂厄方程写成一阶方程组,

y1′=y2,

y2′=-(λ-2qcos(2x))y1。

则对应的函数是

function dydx = mat4ode(x,y,lambda) % equation being solved

dydx = [y(2)

-(lambda - 2*q*cos(2*x))*y(1)];

end

注意:所有函数都作为局部函数包含在示例的末尾。

编写边界条件代码

现在,编写一个函数,该函数返回在边界点处的边界条件的残差值。此函数应具有签名 res = mat4bc(ya,yb,lambda),其中:

ya 是在区间 [a,b] 开始处的边界条件的值。

yb 是在区间 [a,b] 结束处的边界条件的值。

lambda 是表示特征值的未知参数。

此问题在区间 [0,π] 内有三个边界条件。要计算残差值,您需要将边界条件设置为 g(x,y)=0 形式。在此形式中,边界条件是

y′(0)=0,

y′(π)=0,

y(0)-1=0。

则对应的函数是

function res = mat4bc(ya,yb,lambda) % boundary conditions

res = [ya(2)

yb(2)

ya(1)-1];

end

创建初始估计值

最后,创建解的初始估计值。您必须对两个解分量 y1=y(x) 和 y2=y′(x) 以及未知参数 λ 提供初始估计值。

对于此问题,余弦函数满足三个边界条件,因此有助于提供较好的初始估计值。使用返回 y1 和 y2 的估计值的函数,编写 y 的初始估计值的代码。

function yinit = mat4init(x) % initial guess function

yinit = [cos(4*x)

-4*sin(4*x)];

end

使用区间为 [0,π] 的 10 点网格、初始估计值函数以及 λ 的估计值 15 调用 bvpinit。

lambda = 15;

solinit = bvpinit(linspace(0,pi,10),@mat4init,lambda);

求解方程

使用 ODE 函数、边界条件函数和初始估计值调用 bvp4c。

sol = bvp4c(@mat4ode, @mat4bc, solinit);

参数值

打印 bvp4c 求得的未知参数 λ 的值。此值是马蒂厄方程的第四个特征值 (q=5)。

fprintf('Fourth eigenvalue is approximately %7.3f.\n',...

sol.parameters)

Fourth eigenvalue is approximately 17.097.

对解进行绘图

使用 deval 计算 bvp4c 在区间 [0,π] 中的 100 个点处计算的解。

xint = linspace(0,pi);

Sxint = deval(sol,xint);

对两个解分量进行绘图。绘图显示了与第四个特征值 λ4=17.097 相关联的特征函数(及其导数)。

plot(xint,Sxint)

axis([0 pi -4 4])

title('Eigenfunction of Mathieu''s Equation.')

xlabel('x')

ylabel('y')

legend('y','y''')

局部函数

此处列出了 BVP 求解器 bvp4c 为计算解而调用的局部辅助函数。您也可以将这些函数作为它们自己的文件保存在 MATLAB 路径上的目录中。

function dydx = mat4ode(x,y,lambda) % equation being solved

q = 5;

dydx = [y(2)

-(lambda - 2*q*cos(2*x))*y(1)];

end

%-------------------------------------------

function res = mat4bc(ya,yb,lambda) % boundary conditions

res = [ya(2)

yb(2)

ya(1)-1];

end

%-------------------------------------------

function yinit = mat4init(x) % initial guess function

yinit = [cos(4*x)

-4*sin(4*x)];

end

%-------------------------------------------

matlab 求未知函数,求解具有未知参数的 BVP相关推荐

  1. matlab数组求一阶导数,用matlab求符号函数数组或函数矩阵的导数实例教程

    用matlab求符号函数数组或函数矩阵的导数实例教程 在符号矩阵中,矩阵的每个元素都可以存放符号函数,这是对符号函数数组的求到运算是对数组元素逐个进行的.接下来就以实例向大家介绍一下用matlab对符 ...

  2. MATLAB求分段函数

    MATLAB求分段函数 x = input('') if x<0 && x~=-3fx=x*x+x-6 elseif x>=0 && x<5 & ...

  3. 已知 方程 用 matlab 求表达式,已知自变量,因变量和函数表达式,可以用matlab求出函数表达式中的未知参数吗...

    答:这不是解方程,这是曲线拟合.如果你的已知的dr,R只有一个点,那么你的未知数是有无数个解的. cftool,拟合函数有一个选项是自定义函数. 答:用polyfit函数,即多项式拟合函数 设x=X- ...

  4. matlab函数积分怎么写,Matlab求分段函数的积分

    (一)前言 本文介绍一个使用Matlab进行求分段函数积分值的方法. 首先介绍如何使用int()对连续函数进行积分的求解,然后介绍一个对分段函数进行求积分的例子. (二)使用Matlab求定积分 Ma ...

  5. Matlab求分段函数的积分

    (一)前言 本文介绍一个使用Matlab进行求分段函数积分值的方法. 首先介绍如何使用int()对连续函数进行积分的求解,然后介绍一个对分段函数进行求积分的例子. (二)使用Matlab求定积分 Ma ...

  6. matlab pdepe函数边界,科学网-使用MATLAB中pdepe函数求解一维偏微分方程-邓浩鑫的博文...

    由于自己科研水平较低,记录的各种体会更多的是给自己做个小结,错误之处,欢迎大家指正. 使用MATLAB求解偏微分方程或者方程组,大致有三类方法.第一种是使用MATLAB中的PDE Toolbox,PD ...

  7. matlab的fmincon函数如何传入额外参数或数据?

    文章目录 一.关于matlab的fmincon函数 二.使用匿名函数句柄传入额外参数或数据例子 一.关于matlab的fmincon函数   fmincon是matlab的带约束的非线性优化模型的求解 ...

  8. matlab求非线性函数的解,MATLAB求解非线性方程(转)

    1.解方程 最近有多人问如何用matlab解方程组的问题,其实在matlab中解方程组还是很方便的,例如,对于代数方程组Ax=b(A为系数矩阵,非奇异)的求解,MATLAB中有两种方法: (1)x=i ...

  9. matlab求分段函数的值.,如何用MATLAB求分段函数的最小值和最大值?

    7.1.1 分段线性插值 所谓分段线性插值就是通过插值点用折线段连接起来逼近原曲线,这也是计算机绘制图形的基本原理.实现分段线性插值不需编制函数程序,MATLAB自身提供了内部函数interp1其主要 ...

最新文章

  1. Windows系统管理大师、畅销书作者William R.Stanek的又一经典力作
  2. c++入门代码_Golang Gin 实战(一)| 快速安装入门
  3. react useRef()函数
  4. 如何debug 右键菜单执行逻辑 - Test BSP Application page implementation
  5. 深度学习之循环神经网络(3)梯度传播
  6. 遍历数组长度_Java基础之数组
  7. c++语言int最大值,c++ 关于如何获取int型的最大值
  8. Ranger知识地图
  9. 2013年全国大学生电子设计竞赛C题-旋转倒立摆
  10. 联想19/20财年录得强劲的营业额 税前利润创历史新高 力克挑战,勇攀高峰
  11. landesk 卸载_landesk怎么卸载,软件卸载不了怎么办
  12. 投入和产出比例是衡量信息化成功的最主要标准
  13. 报错:Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.
  14. IOS7使用吐槽(抛弃拟物化您还能走多远.........)
  15. 【Java】每日一点Java小知识 --- day6
  16. 文学-诗经,乌托邦,巨人传,作家,居士类
  17. 怎么提取抖音里的音乐制作手机铃声
  18. 基于socket的FreeD数据收发
  19. 微信公众号h5分享到朋友圈,超详细的讲解
  20. Can‘t resolve ‘redux‘ in

热门文章

  1. 回归分析中R方和调整R方的区别
  2. 项目经理责任制核心要点·构建项目经理的选聘体系
  3. 华为交换机端口限速配置
  4. 机器学习基本知识(内容来自斯坦福公开课)course 1
  5. TiDB Sysbench 性能对比测试报告 - v5.1.4 对比 v6.0.0 DMR
  6. Spring——Spring学习教程(详细)(上篇)——IOC、AOP
  7. 架构系列---探探的微服务架构
  8. javascript,一幅图让你看懂DIV拖拽
  9. 重新认识串口,使用交叉还是直连串口线
  10. 可进可退,jQuery图片、视频、flash播放插件prettyPhoto使用记录