
计算方法及程序实现
swordboy_fire
这个作者很懒,什么都没留下…
展开
-
对分法
对分法是解方程中比较快的方法,先确定边界,然后判断中间节点与目标的大小关系,如果不相等,则缩小边界,再次取中间节点,直至相等。c++代码如下:(代码中是求方程x*x*x - 2 * x*x - 4 * x - 7的根)#include<iostream>using namespace std;float f(float x){ return x*x*x - 2 * x*...原创 2018-10-21 16:53:33 · 4425 阅读 · 1 评论 -
牛顿法求解方程
牛顿法求解方程的核心是迭代,设立一个初始解,根据公式不断迭代,直至误差小于某个特定值。首先将方程化为求根形式,如:将x^3=a化为x^3-a=0,F(x)=x^3-a。迭代公式:x(i+1)=x(i)-F(x)/F'(x),下面使用牛顿迭代法求解a的立方根,c++代码如下:#include<iostream>#include<cmath>using ...原创 2018-10-21 17:06:43 · 8939 阅读 · 0 评论 -
列选主元的高斯消去法
列主元高斯消去法是求解线性方程组的直接方法,将系数矩阵化为上三角矩阵,使用当前行消去剩余行时,如果当前行的第一个元素非最大值,则需要与第一个元素为最大值的行进行元素互换,再使用当前行消去剩余行,然后回代方程求解。c++代码如下:#include<stdio.h>#include<math.h>#define N 3 //矩阵的阶数using name...原创 2018-10-21 17:25:14 · 11681 阅读 · 0 评论 -
LU分解法求解线性方程组
LU分解法是求解线性方程组的一种算法。先将系数矩阵分别转换成上三角矩阵U和下三角矩阵L,其中U(k,j)=a(k,j) - ∑L(k,m)*U(m,j) m<k,L(i,k)=(a(i,k) - ∑L(i,m)*U(m,j))/(u(k,k)) m<k;求解Ly=b,b为因变量矩阵;求解Ux=y;c++代码如下:#include<stdio.h&g...原创 2018-10-21 19:14:07 · 10226 阅读 · 1 评论 -
雅可比迭代法
求解线性方程组可以使用迭代法,雅可比迭代法就是其中的一种,类似于求解方程组的迭代法,将Ax=b转换为迭代形式x=Cx+f,给定一组初始解,然后使用迭代方程组进行迭代。注意要先判断矩阵是否收敛c++代码如下:#include<stdio.h>#include<math.h>using namespace std;float cha(float x[3], ...原创 2018-10-21 19:33:02 · 3463 阅读 · 1 评论 -
高斯-塞德尔迭代法求解线性方程组解
高斯-塞德尔迭代法也是求解线性方程组解的一种方法,与雅可比不同之处在于,求解某个未知数的某代值时,直接使用上一未知数在该代的值。C++代码如下:#include<stdio.h>#include<math.h>using namespace std;float cha(float x[3], float y[3]){ float z; int i, ...原创 2018-10-21 19:55:44 · 4591 阅读 · 1 评论 -
拉格朗日插值法
已知一组自变量和因变量,求某一个自变量对应的值,可以使用拉格朗日插值法。c++代码如下:#include <stdio.h>using namespace std;int main(void) { float x[20], y[20], p, t, s; int n, i, k; printf("请输入节点个数n+1\n"); scanf("%d", &...原创 2018-10-21 20:11:47 · 1065 阅读 · 0 评论 -
牛顿基本插值法
牛顿基本插值法又叫均差法,通过算出均差表求解拟合方程的各阶系数。c++ 代码如下:#include<stdio.h>using namespace std;int main(){ int i, k, n; float x[20], y[20], t, h, p; scanf("%d", &n); for (i = 0; i <= n; i++){...原创 2018-10-21 20:25:00 · 3179 阅读 · 0 评论 -
曲线拟合
首先根据已知点的分布判断是几阶函数,再拟合出各次项系数。c++代码如下:#include "math.h"#include "stdio.h"#define N 7int main(){ float a[10][10], x[N + 1], y[N + 1], s, t[10], d, t1; int i, j, k, m = 2, l; //m为阶数 for(i=1;...原创 2018-10-21 20:56:45 · 422 阅读 · 0 评论