matlab编写如下程序:编写利用显式Euler法求解一阶常微分方程的程序。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab编写如下程序:编写利用显式Euler法求解一阶常微分方程的程序。相关的知识,希望对你有一定的参考价值。

编写利用显式Euler法求解一阶常微分方程的程序。
测试方程y`=-y+x+1,0≤x≤10

等号左边是y的导数!!
答题正确者加分啊!!希望各位matlab高手给予支持!!^_^

function [x,y]=euler_homework(f,x0,y0,xfinal,n)
f=input('y`=','s');
f=inline(f,'x','y');
x0=input('x0=');
xl=input('xfinal=');
y0=input('y0=');
n=input('n=');
h=(xl-x0)/n;
x(1)=x0;
y(1)=y0;
for i=1:1:n
x(i+1)=x(i)+h;
y(i+1)=y(i)+h*f(x(i),y(i));
end;
euler_homework=y(n);

哥们你吉大的吧,跟我做一样的作业,第四题对吧!!分享一下!!
参考技术A 以下为代码
------------------------------------------
sum1=0;
for i=0:15
sum1=sum1+2^i;
end
disp(['用for循环所求的值为' num2str(sum1) ]);

sum2=0;
i=0;
while i<16
sum2=sum2+2^i;
i=i+1;
end
disp(['用while循环所求的值为' num2str(sum2) ]);
----------------------------------------------------
以下为结果
----------------------------------------------------
用for循环所求的值为65535
用while循环所求的值为65535
>> %其实用等比数列求和公式可以知道和为 2^16-1
>> 2^16-1

ans =

65535

>>
-----------------------------------------------
如果是要能够调用的函数形式的话,可以在m文件开头加上函数的定义句
function XXXXXX(),但是这时要保证XXXXXX同时是文件的名称,这样就可以在其它文件中调用XXXXXX函数了
欢迎采纳~~~

如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!

vaela
参考技术B 你没有给出初值条件,这里假设y0=1。
程序如下:
x=[0:0.01:10]'; % x,列向量,步长为0.01
length=size(x,1); % x行数,即x离散点数
y=zeros(size(x)); % y
y(1)=1; % 初值条件,需给定
for n=1:1:length-1
y(n+1)=y(n)+0.1*(-y(n)+x(n)+1);
end
plot(x,y)

SA:T1编写主函数法和T2Matlab自带的SA工具箱GUI法,两种方法实现对二元函数优化求解——Jason niu

%SA:T1法利用Matlab编写主函数实现对定义域[-5,5]上的二元函数求最优解—Jason niu
[x,y] = meshgrid(-5:0.1:5,-5:0.1:5);
z = x.^2 + y.^2 - 10*cos(2*pi*x) - 10*cos(2*pi*y) + 20;
figure
mesh(x,y,z)
hold on
xlabel(‘x‘)
ylabel(‘y‘)
zlabel(‘z‘)
title(‘SA:利用SA最优化,定义域[-5,5]上的二元函数z =  x^2 + y^2 - 10*cos(2*pi*x) - 10*cos(2*pi*y) + 20的最大值—Jason niu‘)

maxVal = max(z(:));
[maxIndexX,maxIndexY] = find(z == maxVal);
for i = 1:length(maxIndexX)  
    plot3(x(maxIndexX(i),maxIndexY(i)),y(maxIndexX(i),maxIndexY(i)), maxVal, ‘r*‘,‘linewidth‘,2)
     text(x(maxIndexX(i),maxIndexY(i)),y(maxIndexX(i),maxIndexY(i)), maxVal, {[‘    X: ‘ num2str(x(maxIndexX(i),maxIndexY(i)))];[‘    Y: ‘ num2str(y(maxIndexX(i),maxIndexY(i)))];[‘    Z: ‘ num2str(maxVal)]})
    hold on
end

技术分享图片

 

%SA:T2法利用Matlab自带的SA工具箱optimtool通过GUI调用@Jason_niu函数实现对二元函数优化求解—Jason niu
function fitnessVal = Jason_niu( x )

技术分享图片

 技术分享图片

 


以上是关于matlab编写如下程序:编写利用显式Euler法求解一阶常微分方程的程序。的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB教程案例87使用Euler法计算lorenz混沌系统

在MatLab里面用隐式欧拉法(backward euler)解决常微分方程。初学matlab 好多都不会,知道的帮下忙

SA:T1编写主函数法和T2Matlab自带的SA工具箱GUI法,两种方法实现对二元函数优化求解——Jason niu

微分方程数值解用matlab练习

如何用MATLAB编写双线性变换法

Matlab编写的GUI转.exe之后,按钮的边框没有了