美文网首页数值分析数值分析(numerical analysis)
数值分析之带初值的常微分方程数值解法(二)

数值分析之带初值的常微分方程数值解法(二)

作者: 辛辛辛烷 | 来源:发表于2019-06-08 12:46 被阅读0次

【实验原理】

一、改进的欧拉法(预报校正)

1)预报校正法基本思路

改进欧拉法先用欧拉法求出预报值,再利用梯形公式求出校正值,局部截断误差比欧拉法低了一阶,可以较大程度地提高计算精度。

2)预报校正法算法描述

二、四阶规范龙格-库塔公式

【实验内容】

一、回答下面的问题

1.什么是常微分方程的解析解和数值解?

2.欧拉左矩形公式和右矩形公式是什么,有什么区别。

3.解函数y(x)的光滑性表现在什么地方,解函数y(x)“变化剧烈”如何体现,请举例说明。

4.写出一个二阶龙格-库塔公式、四阶标准龙格-库塔公式

二、编程计算课后习题中规定题目,交回实验报告与计算

实验代码

%定义函数
function z=f1(x,y)
%UNTITLED3 Summary of this function goes here
%   Detailed explanation goes here
z=1/(x^2)-y/x;
end
%改进欧拉法
clear;clc;
h=0.05; 
x=1:h:2; %定义函数范围
y(1)=1; %初值

for i=1:20 
    yp=y(i)+h*f1(x(i),y(i));%改进(迭代)公式
    yc=y(i)+h*f1(x(i+1),yp);
    y(i+1)=(yp+yc)/2;%校正值
end 

%-----------输出--------------------
disp('i=0...10的值为:'); 
for i=1:2:21 
    fprintf('%f\n',y(i)) 
end
%-----------输出--------------------
%四阶RK 
clear all
a=1;b=2;h=0.1;%边界及步长
x0=a;y0=1;%初值
 n=(b-a)/h;
N=[0:1:n]';
x=zeros(n+1,1);
y=zeros(n,1);%用矩阵存储
x(1)=x0;y(1)=y0;
 for i=1:n
    x(i+1)=x(i)+h;
end
%----------------四阶RK--------------------
for i=1:n
    k1=h*f1(x(i),y(i));
    k2=h*f1(x(i)+h/2,y(i)+k1/2);
    k3=h*f1(x(i)+h/2,y(i)+k2/2);
    k4=h*f1(x(i)+h,y(i)+k3);
    y(i+1)=y(i)+(k1+2*k2+2*k3+k4)/6;
end
%----------------四阶RK--------------------
[N,x,y]%输出

实验结果

运行结果

实验代码(仅改动部分)

%--------------------函数定义-------------------
function z=f1(x,y)
%UNTITLED3 Summary of this function goes here
%   Detailed explanation goes here
z=-50*y+50*x^2+2*x;
end
%--------------------函数定义-------------------

a=0;b=1;h=0.1; %边界及步长
x0=a;y0=1/3; %初值
T=[N,x,y] %输出解
dy=y-(1/3*exp(-50*x)+x.^2) %输出与精确解的误差

实验结果过多,此处略去


相关文章:
MATLAB数值分析之数值积分(一)

相关文章

  • 数值分析之带初值的常微分方程数值解法(二)

    【实验原理】 一、改进的欧拉法(预报校正) 1)预报校正法基本思路 改进欧拉法先用欧拉法求出预报值,再利用梯形公式...

  • 前向欧拉方程

    欧拉方法是一种一阶数值方法,用以对给定初值的常微分方程(即初值问题)求解。它是一种解决数值常微分方程的最基本的一类...

  • 10-Python 科学计算_scipy 篇

    课程概要:1、非线性方程组2、数值积分3、常微分方程组 1、非线性方程组 2、数值积分(定积分) 3、常微分方程组

  • 用mathematica绘制弹簧摆的运动轨迹

    对于如图的弹簧摆,可以写出常微分方程组如下。 这个方程组没有解析解,我们用mathematica求方程组的数值解。...

  • #数值分析读书笔记(4)求非线性方程的数值求解

    数值分析读书笔记(4)求非线性方程的数值求解 1.关于非线性方程的根的定位以及二分法 我们直接介绍二分法 将有根区...

  • 扩散方程的数值解法的处理

    交替方向隐式方法:ADI(alternating direction implicit)是构造了一种用直接法及迭代...

  • 二阶变系数线性常微分方程的求解

    之前总结过一次常见的常微分方程的解法,不过里面并没有二阶变系数线性常微分方程的求解方法,现在补充如下。 对于形式的...

  • 常微分方程数值解:Python求解

    这里对使用python求解常微分方程提供两种思路,一种是自己编程实现欧拉法,改进欧拉法或者四阶龙格库塔,这样有助于...

  • LeetCode 第一题

    使用python 解法 : 暴力解法: 数值比较少的时候没有问题,当数值过多的时候,会出现超时 字典解法: 这种解...

  • 安装Scipy库

    Scipy库在Numpy的基础上增加了众多的数学计算。例如常微分方程数值求解,稀疏矩阵等。 但因Scipy库的安装...

网友评论

    本文标题:数值分析之带初值的常微分方程数值解法(二)

    本文链接:https://www.haomeiwen.com/subject/vdkixctx.html