用matlab编写向前欧拉公式解微分方程的程序时不能正确调用函数句柄,请高手帮忙看一看。不胜感激!!

作者&投稿:长斩 (若有异议请与网页底部的电邮联系)
向前欧拉公式在Matlab解微分方程初值解的问题~

你的 funfcn函数 在哪里 啊,没有定义,也不是 MATLAB函数库中已有 函数

用matlab求解偏微分方程组时,其程序存在几个小问题:
1、u变量不能以向量变量来表示。u(1)应改写为u1,u(2)应改写为u2
2、同理, surf(x,t,u(1))应改写为surf(x,t,u1),surf(x,t,u(2))应改写为surf(x,t,u2)
3、更改后,可以得到其数值解


修改为如下代码,请拷贝运行:
function ansbaidu()
clc
clear all
y0=1;
a=0;
b=1;
h=0.1;
[x,y]=euler2('odefun',y0,a,b,h); % 第一个参数是你要求解的函数名
function [x,y]=euler2(FUN,y0,a,b,h) %注意函数句柄变量的定义形式
% 常微分方程向前欧拉算法
% 参数说明
% odefun:微分方程描述函数,也就是f(x,y)
% y0:初值
% a,b:积分区间
% h:步长
x=(a:h:b)';
k=length(x);
y=zeros(1,k)';
y(1)=y0;
for n=1:(k-1)
y(n+1)=y(n)+h*feval(FUN,x(n),y(n)); %需要借助feval函数运行你的odefun
% FUN(x(i),y(i))
end
y=y'
function z=odefun(x,y)
z=y+2*x;

运行结果:
y =

1.0000 1.1000 1.2300 1.3930 1.5923 1.8315 2.1147 2.4462 2.8308 3.2738 3.7812


matlab中如何创建一个向量
matlab创建列向量有一下几种办法:已知数据的条件下:假设数据为1 2 3 4 5。1.1 使用‘号转置:1.2 使用;号分割:仅创建,不在意数据的具体值 2.1 使用ones()函数 2.2 使用zeros()函数 拓展:一般创建列向量,就是对行向量进行转置即可,列向量在许多matlab操作中是必要的形式,如神经网...

matlab中的脚本程序怎么编写?
在matlab的command window 的窗口中,输入edit 文件名(文件名一般以字母开头),如下:>> edit main 再回车,就会在左侧的current folder里面新建一个名为mian的.m文件,弹出编辑窗口,在编辑窗口输入你要编写的程序即可。也可以直接点击matlab左上角的新建按钮,新建一个文件,即New script,在里面编写...

matlab如何编程
首先,在我们的桌面上找到matlab软件的图标,将鼠标移到该位置双击点开,这时电脑屏幕会弹出matlab软件的主界面。其次,在这里我们不提倡在中间的那一栏直接写程序(对于初学者),因为每写一步这里就会运行一步而且保存的时间不长,我们需要新建一个界面并在其中书写程序。首先我们在左上角找到File这一选项...

如何在MATLAB中输入列向量?
方法一:直接输入列向量:A=[1;2;3;4]方法二:运用linspace函数,A=linspace(a,b,n),其中a代表第一个元素值,b代表最后一个元素值,n代表向量位数。这时得到的A是行向量,再将A转置即为列向量:A=A';方法三:运用冒号生成法,A=a:d:b, 其中a代表第一个元素值,b代表最后一个元素值,d...

求如何编写matlab程序
(1)代码如下:clc;clear;f = inline('0*(t<0)+t.*(t>=0&t<2)+2*(t>=2&t<3)-1*(t>=3&t<=5)+0*(t>5)', 't');figure(1);t1=[0:0.01:5];x1=f(t1);plot(t1,x1);set(gca, 'xtick', [0:1:5]);set(gca, 'ytick', [-1:1:2]);axis([0 5 -1.5 ...

MATLAB中M文件的编写与调试的过程是什么?
Matlab一个高级的矩阵\/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似...

用MATLAB编写函数:编写一个函数文件,以向量为参数,对向量元素进行排序并...
mA = SortData(A, 1)mA = SortData(A, 2)function mA = SortData(A, type)获取矩阵的最大值 输入参数:A——向量 type——排序类型:1为升序、0为降序 输出参数:mA——排序后的向量if nargin < 2 默认为升序排序 type = 1;end A = A(:)';if type == 2 mA = sort(A, '...

用matlab语言编写显示一幅彩色图像程序
看下这个程序function main()主要思想是从两幅图像中选取信息,然后置乱成一幅图像。这样可以从要加密的多幅(2*n幅)图像中,按照上述思想,得到一半数目(n幅)的图像。对得到的图像进行自适应算法的隐藏,又可以得到(n-1)幅的图像。对(n-1)幅的图像进行Arnold变换,得到(n-1)幅的图像作为密钥,...

急,matlab怎么编写向量之间夹角公式,如下
c=dot(a,b)\/norm(a,2)\/norm(b,2)c就是cos的值,如果要求角度,用rad2deg(acos(c))。

matlab分段函数怎么编写
matlab分段函数编写的操作方法和步骤如下:1、第一步,在计算机桌面上打开MATLAB软件,如下图所示。2、其次,完成上述步骤后,单击matlab软件左上方的“新建”按钮以创建脚本文件,如下图所示。3、接着,完成上述步骤后,定义变量,如下图红框标注所示。4、然后,完成上述步骤后,建立一个循环来求解分段...

岢岚县18673256591: matlab解微分方程用欧拉法求y'= - y+x+1,y(0)=1 -
旁岭齐迈:[答案] y=dsolve('Dy+y-x-1','y(0)=1','x') 结果: y = x+exp(-x)

岢岚县18673256591: matlab 微分方程组求解 -
旁岭齐迈: lz需要给出y_0的初值~ 这个方程满足李普希兹条件,因此,解存在唯一并且可以唯一延拓到边界,应用lax等价定理可以知道,向前欧拉法具有二阶的收敛速度……所以可以尝试用向前欧拉法编写:我刚学matlab~写的程序一般,希望lz见谅:这...

岢岚县18673256591: (2) 设方程式为y'= - 40y,y(0)=2用欧拉数值方法与ode45求方程式的数值解 请大神用MATLAB编写啊
旁岭齐迈: 欧拉方法 第一步:建立并保存名为 funfcn1.m 的 m 文件函数; function f=funfcn1(x,y) f=-40*y; 第二步:建立并保存名为Qeuler1.m的m文件函数; function[X,Y,n]=Qeuler1(funfcn,x0,y0,b,h) x=x0;n=(b-x0)/h;X=zeros(n,1);y=y0;Y=zeros(n,1);k=1;X(k)=...

岢岚县18673256591: 谁能提供一下欧拉方法的matlab代码 -
旁岭齐迈: %步长h=0.01时,误差会减小.function euler clc;clear; h=0.1;x0=1;y0=0;k=0; x=x0;y=y0;xfinal=1.9; f=inline('1-y') while x<xfinalk=k+1;y=y+h*feval(f,y);Y(:,k)=y;x=x+h; end t=x0:h:xfinal Y=[0,Y] y=dsolve('Dy=1-y','y(1)=0');%解析解,即真值 y=subs(...

岢岚县18673256591: MATLAB 的欧拉算法怎么写 -
旁岭齐迈: 式有:y(k+1)=y(k)-30*h*y(k+1) 变形求得:y(k+1)=y(k)/(30*h+1) 故MATLAB程序有:h=0.05; x=[0:h:1]; y(1)=1; for k=1:length(x)-1y(k+1)=y(k)/(30*h+1); end plot(x,y,'r.-'); title('向后欧拉'); grid on

岢岚县18673256591: 在MatLab里面用隐式欧拉法(backward euler)解决常微分方程.初学matlab 好多都不会,知道的帮下忙 -
旁岭齐迈: 1.新建一个m文件,编写隐式Euler法的程序: function [x,y]=Implicit_Euler(odefun,xspan,y0,h,varargin) % 隐式Euler公式求解常微分方程 % 输入参数: % ---odefun:微分方程的函数描述 % ---xspan:求解区间[x0,xn] % ---y0:初始条件 % ---h:迭...

岢岚县18673256591: 求助过路的matlab大神,老师留作业:用两种欧拉方法解常微分方程 -
旁岭齐迈: 欧拉方法的matlab 先定义函数euler function [x,y]=euler(fun,x0,xfinal,y0,n); if narginend h=(xfinal-x0)/n; x(1)=x0;y(1)=y0; for i=1:n x(i+1)=x(i)+h; y(i+1)=y(i)+h*feval(fun,x(i),y(i)); end 再把你的方程改写成一阶方程组,然后定义成函数fun 最后调用就行了,你试试看.

岢岚县18673256591: 求助过路的matlab大神,老师留作业:用两种欧拉方法解常微分方程方程是 20y"+y'+0.5y=5sin(3x) 其中 h=0.1,y'(0)=1,y"(0)= - 1 -
旁岭齐迈:[答案] 欧拉方法的matlab 先定义函数euler function [x,y]=euler(fun,x0,xfinal,y0,n); if nargin

岢岚县18673256591: 数值分析:用改进欧拉法解微分方程初值问题(vf编程) 100
旁岭齐迈: clear input "请输入区间的左端点:" to a input "请输入区间的右端点:" to b input "请输入步长:" to h input "请输入初值:" to y for k=1 to (b-a)/h x=a+k*h z=y+h*f3(x,y) s=y+h/2*(f3(x,y)+f3(x+h,z)) y=s ?x,s endfor

岢岚县18673256591: MATLAB中已知系统微分方程及初始值用欧拉法和龙格库塔法解一阶微分方程 -
旁岭齐迈:[答案] function Euler %欧拉法和龙格库塔算法解一阶常微分方程源代码 %例子dy/dx=-y+x+1 f=inline('-y+x+1','x','y'); %微分方程的右边项 dx=0.5; %x方向步长 xleft=0; %区域的左边界 xright=10; %区域的右边界 xx=xleft:dx:xright; %一系列离散的点 n=length(...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网