资源简介
研究生课程计算方法A上机作业:
1.QR分解 2.共轭梯度法 3.三次样条 4.龙格-库塔
代码片段和文件信息
%%%% --------共轭梯度法求解线性方程组---------%%%%
% %% 参数说明
% A --系数矩阵,方程Ax=b中的A矩阵,人为给定
% b --方程Ax=b中的b矩阵,人为给定
% x0 --迭代初始值,人为给定
% e --给定精度ε,人为给定
% n --迭代次数,人为给定
% r --残向量r(k)
% r_ --残向量r(k+1)
% a --搜索步长α
% bt --代表β
% norm_r --r(k)的2范数
% norm_r_ --r(k+1)的2范数
close all; clear all; clc
disp(‘-----共轭梯度法求解线性方程组-----‘)
prompt1=‘请输入系数矩阵A\n‘;
A = input(prompt1); % 输入一个矩阵用于计算
%% 本算法中检测了矩阵A是否为对称正定矩阵,矩阵A对称非正定矩阵,-A为对称正定矩阵,本例题计算得为 -Ax = -b;
e = 0.001;
n = 500;
[m_An_A] = size(A); % 获取矩阵的维数
flag = 1; % 标志变量,用于检测系数矩阵A是否为对称正定矩阵
%% 判断矩阵A是否是对称正定矩阵
if m_A == n_A
for q = 1:length(A)
c = mat2cell(A[qlength(A)-q][qlength(A)-q]);
if det(c{11})<=0
flag = 0 ; % 如果顺序主子式的行列式小于0,flag置0
end
end
else
flag = 0;
end
%% 计算
if flag == 0
disp(‘错误!矩阵A不是对称正定矩阵。‘) % 如果A不是对称正定矩阵,不执行迭代操作,输出提示文字
else
prompt2=‘请输入对应的矩阵b\n‘;
b = input(prompt2); % 输入一个矩阵b用于计算
prompt3=‘请给定初始向量x0\n‘;
x0 = input(prompt3); % 输入一个初始向量x0
prompt4=‘请给定精度ε\n‘;
e = input(prompt4); % 输入一个给定精度ε,精度满足要求是跳出循环
prompt5=‘请给定迭代次数\n‘;
n = input(prompt5) ; % 输入一个对大迭代次数n
r_ = b-A*x0; % 计算r0,此处r_代表r0
d = r_; % 计算d0,此处d代表d0
x = x0;
%% 迭代n次
for k = 0:n-1
norm_r_=0; % 初始化变量,用于计算r(k)和r(k+1)的2范数,注意这个初始化一定要放在迭代循环里边。
norm_r =0;
r = r_;
a = r‘*r /(d‘*A*d);
x = x + a*d;
r_ = b-A*x;
%% 计算r(k)和r(k+1)的2范数
for i_r = 1:m_A
norm_r_ = norm_r_+ r_(i_r1)*r_(i_r1);
norm_r = norm_r + r(i_r1)*r(i_r1);
end
norm_r_ = sqrt(norm_r_);
norm_r = sqrt(norm_r);
bt = norm_r_*norm_r_/(norm_r*norm_r);
d = r_ + bt*d;
%% 判断精度是否达到要求或迭代次数是否到达上限
if norm_r_<= e || k+1 == n
break
end
end
disp([‘残差的2范数为:‘num2str(norm_r_)])
disp([‘迭代‘num2str(k+1)‘次求得方程的解为:‘])
x
end
%%% P113 3.2计算实习参数
% n=100 A = -2*eye(100)+[zeros(1100);eye(99)zeros(991)]+[zeros(991)eye(99);zeros(1100)]
% n=200 A = -2*eye(200)+[zeros(1200);eye(199)zeros(1991)]+[zeros(1991)eye(199);zeros(1200)]
% n=400 A = -2*eye(400)+[zeros(1400);eye(399)zeros(3991)]+[zeros(3991)eye(399);zeros(1400)]
% n=100 b = [-1;zeros(981);-1]
% n=200 b = [-1;zeros(1981);-1]
% n=400 b = [-1;zeros(3981);-1]
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3124 2019-01-05 23:32 程序\Conjugate_Gradient.m
文件 700 2019-01-03 14:47 程序\NewtonInterpolation.m
文件 670 2019-01-03 14:51 程序\NewtonInterpolation1.m
文件 2245 2019-01-05 23:09 程序\QR.m
文件 1262 2019-01-06 09:09 程序\RungeKutta.m
文件 149 2019-01-06 10:19 程序\sf.m
文件 6032 2019-01-06 08:36 程序\Spline.m
文件 456 2018-12-26 22:35 程序\ZG.m
目录 0 2019-01-05 23:35 程序
----------- --------- ---------- ----- ----
14638 9
- 上一篇:VHDL 音乐播放器
- 下一篇:IDEA主题插件4款主题插件
相关资源
- 相位屏仿真方法.rar
- 基于高斯混合模型的背景减除
- 基于co-training的手写数字识别Multiple
- 多普勒脉冲雷达回波仿真
- kpca lda mds降维 人脸数据
- 光伏在MPPT下的boost电路
- 随机梯度下降算法
- 基础差分进化算法Rastrigin测试
- ABC带约束优化算法
- 连接二值图像中断开的点
- 车牌倾斜校正
- 卷积编解码,实现了2/33/4删余卷积
- 有源电力滤波器APF
- RBF神经网络预测
- 固体火箭发动机内弹道计算方法和计
- 基于模糊控制和PID结合的倒立摆仿真
- 基本风+阵风+噪声风+渐变风联合仿真
- 瑞利信道下的分集合并技术仿真
- advisor复合电源二次开发过程
- 旅行商问题中国34省会的
- 计量经济学软件eviews6.0建模方法与操
- 机场延误 遗传算法
- MSSIM 图像相似度的计算
- 螺线管磁场高精度计算方法
- 微电网虚拟同步发电寄控制模型
- flocking concrol.zip
- 数值计算方法与算法试题及答案
- 蚁狮算法寻优
- 二次曲面拟合实现高程模型建立
- 角点检测Corners代码
评论
共有 条评论