MATLAB大神请进。。用打靶法或者bvp方法都行。 求一下这个多自变量 常微分方程组边值问题!

MATLAB大神请进。。用打靶法或者bvp方法都行。 求一下这个多自变量 常微分方程组边值问题!,第1张

4个微分方程应该只有4个约束(包括初值或终值)吧?

但按照你给的初值和终值,一共有6个约束。

可以这样理解:如果4个初值都给定了,那么微分方程就有充足的条件可以直接求解了,不一定保证终值符合你的要求。

写入以下程序就能实现

j=0;

for i=1:30

if ((c(i)>ucl)|(c(i)<lcl))

j=j+1;

end

end

MATLAB(矩阵实验室)是MATrix LABoratory的缩写,是一款由美国The MathWorks公司出品的商业数学软件。MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可以用来创建用户界面及与调用其它语言(包括C,C++和FORTRAN)编写的程序。

利用hist函数可以方便实现分区间统计的功能

具体语法

n = hist(Y)

将数据Y,分区间统计

函数默认会根据数据Y的范围分成10个区间

返回的n是一个长度为10的数列,表示每个区间数据的统计数量

n = hist(Y,x)

可以指定一个数列x,函数会以数列x中的每个数为中心,分区间统计

n = hist(Y,nbins)

可以指定一个整数nbins,指定要分区间的个数

[n,xout] = hist()

可以多返回一个数列xout,返回每个区间中点的数值

如果过不要返回值,直接

hist(Y)

函数还会直接画出分区间统计的柱状图

在matlab中,科学计数法用如下形式表示:

314e5

表示31410^5=314000

另外,如果需要以科学计数法的形式表示,那么需要在执行语句前加如下语句:

formatshortE

举例如下:

>> format shortE

>> pi

ans=

31416e+00。

扩展资料:

数学函数

MATLAB数学函数库包括了大量的计算算法。从基本算法如四则运算、三角函数,到复杂算法如矩阵求逆、快速傅里叶变换等。

语言

MATLAB语言是一种高级的基于矩阵/数组的语言,它有程序流控制、函数、数据结构、输入/输出和面向对象编程等特色。用这种语言能够方便快捷建立起简单运行快的程序,也能建立复杂的程序。

图形处理

图形处理系统使得MATLAB能方便的图形化显示向量和矩阵,而且能对图形添加标注和打印。它包括强大的二维三维图形函数、图像处理和动画显示等函数。

程序接口

MATLAB应用程序接口(API)是一个使MATLAB语言能与C、Fortran等其它高级编程语言进行交互的函数库。该函数库的函数通过调用动态链接库(DLL)实现与MATLAB文件的数据交换。

其主要功能包括在MATLAB中调用C和Fortran程序,以及在MATLAB与其它应用程序间建立客户、服务器关系。

参考资料来源:百度百科-MATLAB

你可以使用背景相减法求出d孔位置;然后边缘检测,或者种子算法求出d孔;然后用Freeman链表算出轮廓,求出圆心坐标;最后计算分数。如果你能给出跟详细的信息,或许可以写出完整的matlab程序。

你这个是常微分方程组。

一般可以用龙格库塔法来做。

自己写程序的话,龙格库塔会麻烦一些,此时你可以考虑用简单的差分代替微分。不过在MATLAB里面龙格库塔也显得方便很多。

我只能你一个例子。这里自变量是z,函数是S(z),R(z),对于你的四个变量也是类似的。

dR/dz=4R(z)-2R(z)S(z)

dS/dz=R(z)S(z)-3S(z)

且R(0)=2,S(0)=3

在Matlab里输入edit myequm

打开一个窗口,你将下在代码输入:

代码的主要功能是描述上面那两个微分方程组。

function result=myequ(t,x)

result=[4x(1)-2x(1)x(2);x(1)x(2)-3x(2)];

保存为myequm

在Matlab中。输入:

z_end=10;

x0=[2,3]; %初值

[t,x]=ode45('myequ',[0,z_end],x0);

plot(t,x);

title('Z-RS函数图像');

/以上只是一般地微分方程的解法/

然而你的条件里面既有初始值,也在终始值。

这方面我也没有接触过,但是我有听说过可以用打靶算法。

这个打靶算法,你再请教一些高人吧。

我不知道你弄这个问题是需要实验求解还是数学求解

数学求解容易:求出所有可以整除6或整除8个个数:2000/6+2000/8-2000/(6和8的最小公倍数)=333+250-83=500 (所有取值向下取整)

从而概率为:(2000-500)/2000=075

如果使用MATLAB实验求解,如下程序

m=2000; %总数

n=0; %计数器

k=100000; %matlab计算次数

for i=1:k

rou=ceil(randm); %随机生成一个1到m的整数

if mod(rou,6)~=0 & mod(rou,8)~=0

%不被6整除且不被8整除时取整

n=n+1;

end

end

n/k

这个程序每次运算结果不一样,因为是随机实验,可以调整K的大小开考虑试验次数,其结果基本上是在075左右的

1、第一步打开matlab,在命令行窗口中输入a=[1 3 5;6 7 8],创建一个二维数组。

2、第二步输入length(a(:)),统计a数组的元素个数。

3、第三步按回车键,可以看到a数组元素个数为6。

以上就是关于MATLAB大神请进。。用打靶法或者bvp方法都行。 求一下这个多自变量 常微分方程组边值问题!全部的内容,包括:MATLAB大神请进。。用打靶法或者bvp方法都行。 求一下这个多自变量 常微分方程组边值问题!、matlab 循环自加,以实现计数功能、如何用计数器程序将符合不同区间的数据个数统计出来MATLAB等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10174594.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存