北航研究生数值分析上机作业 三 (报告+所有程序大全)(2)
for(ii=0;ii<=k_max;ii++) //GT * G {
for(jj=0;jj<=k_max;jj++) {
M[ii][jj]=row_multi_sum((double **)G,ii,jj,length_y); }
}
for(ii=0;ii<=k_max;ii++) //F=B'*U for(jj=0;jj<length_y;jj++) {
F[ii][jj]=0;
for(kk=0;kk<length_x;kk++)
F[ii][jj]=F[ii][jj]+B[kk][ii]*U[kk][jj]; }
for(ii=0;ii<=k_max;ii++) //E=F*G for(jj=0;jj<=k_max;jj++) {
E[ii][jj]=0;
for(kk=0;kk<length_y;kk++)
E[ii][jj]=E[ii][jj]+F[ii][kk]*G[kk][jj]; }
Matrix_LU((double **)W,(double **)E,(double **)M,(double **)C,k_max,0);//(double **)XX,
for(ii=0;ii<length_x;ii++) for(jj=0;jj<length_y;jj++) {
sum=0;
for(r=0;r<=k_max;r++) for(s=0;s<=k_max;s++)
sum=sum+C[r][s]*pow(xx[ii],r)*pow(yy[jj],s); pp[ii][jj]=sum; }
sum=0;
for(ii=0;ii<length_x;ii++) for(jj=0;jj<length_y;jj++)
牛人报告,供大家参考,非常鄙视抄袭者。P.S. 北航数值分析吕老师讲的非常好,鼓励大家选这门课,能够学到很多东西。有问题联系作者!
{
sum=sum+(pp[ii][jj]-U[ii][jj])*(pp[ii][jj]-U[ii][jj]); }
fprintf(fd,"\nk=%d, sigma=%.11e\n",k_max,sum);
if(sum<=1e-7) {
fprintf(fd,"\nC_rs:\n"); for(r=0;r<=k_max;r++) {
for(s=0;s<=k_max;s++) {
fprintf(fd,"%.11e ",C[r][s]); }
fprintf(fd,"\n"); }
break; } }
for(ii=0;ii<x_length;ii++) xx[ii]=0.1*(ii+1);
for(ii=0;ii<y_length;ii++) yy[ii]=0.5+0.2*(ii+1);
for(ii=0;ii<x_length;ii++) //生成f*阵 {
for(jj=0;jj<y_length;jj++) {
ite_equations(&tt,&uu,xx[ii],yy[jj]); //牛顿迭代解方程,输入一点(x,y)输出一点(t,u)
U[ii][jj]=(double)interpolation(tt,uu,(double **)table); //输入一点,输出一点插值 } }
fprintf(fd,"\nf(x*,y*):\n"); for(ii=0;ii<x_length;ii++)
牛人报告,供大家参考,非常鄙视抄袭者。P.S. 北航数值分析吕老师讲的非常好,鼓励大家选这门课,能够学到很多东西。有问题联系作者!
}
for(jj=0;jj<y_length;jj++) {
fprintf(fd,"%-10f ",U[ii][jj]); }
fprintf(fd,"\n");
for(ii=0;ii<x_length;ii++) //生成p*阵 {
for(jj=0;jj<y_length;jj++) {
sum=0;
for(r=0;r<=k_max;r++) for(s=0;s<=k_max;s++)
sum=sum+C[r][s]*pow(xx[ii],r)*pow(yy[jj],s); pp[ii][jj]=sum; } }
fprintf(fd,"\np(x*,y*):\n"); for(ii=0;ii<x_length;ii++) {
for(jj=0;jj<y_length;jj++) {
fprintf(fd,"%-10f ",pp[ii][jj]); }
fprintf(fd,"\n"); }
fclose(fd); }
2) 矩阵2列相乘
#include<stdio.h> #include<math.h> #define size 10
#define TTT(a,b) *((double *)TTT+(a)*(size)+b) //L U 的宏定义,以方便操作二维数组
牛人报告,供大家参考,非常鄙视抄袭者。P.S. 北航数值分析吕老师讲的非常好,鼓励大家选这门课,能够学到很多东西。有问题联系作者!
double row_multi_sum(double **B,int i,int j,int length) //矩阵列相乘 {
double sum=0; double **TTT; int kk=0; TTT=B;
for(kk=0;kk<length;kk++) {
sum=sum+(TTT(kk,i))*(TTT(kk,j)); }
return sum; }
3) 9点分片双二次插值
#include<stdio.h> #include<math.h> #define size 6
#define table(a,b) *((double *)table+(a)*(size)+b) //L U 的宏定义,以方便操作二维数组
double interpolation(double tt,double uu,double **table) //输入一点,输出一点插值 {
int ii=0; int jj=0;
int section_t=0; int section_u=0; double answer=0; double temp=0;
double temp_u[3]={0}; double temp_t[3]={0};
double my_t[6]={0}; double my_u[6]={0};
for(ii=1;ii<6;ii++) {
牛人报告,供大家参考,非常鄙视抄袭者。P.S. 北航数值分析吕老师讲的非常好,鼓励大家选这门课,能够学到很多东西。有问题联系作者!
my_t[ii]=my_t[ii-1]+0.2; }
//判断输入点在哪个区域 //判断u用哪段插值
if ((uu>=0)&&(uu<0.6)) section_u=1;
else if((uu>=0.6)&&(uu<1.0)) section_u=2;
else if((uu>=1.0)&&(uu<1.4)) section_u=3;
else if((uu>=1.4)&&(uu<=2)) section_u=4; else ;
//判断t用哪段插值
if ((tt>=0)&&(tt<0.3)) section_t=1;
else if((tt>=0.3)&&(tt<0.5)) section_t=2;
else if((tt>=0.5)&&(tt<0.7)) section_t=3;
else if((tt>=0.7)&&(tt<=1.0)) section_t=4; else ;
temp_u[0]=(uu-my_u[section_u])*(uu-my_u[section_u+1])/((my_u[section_u-1]-my_u[section_u])*(my_u[section_u-1]-my_u[section_u+1]));
temp_u[1]=(uu-my_u[section_u-1])*(uu-my_u[section_u+1])/((my_u[section_u]-my_u[section_u-1])*(my_u[section_u]-my_u[section_u+1]));
temp_u[2]=(uu-my_u[section_u-1])*(uu-my_u[section_u])/((my_u[section_u+1]-my_u[section_u-1])*(my_u[section_u+1]-my_u[section_u]));
temp_t[0]=(tt-my_t[section_t])*(tt-my_t[section_t+1])/((my_t[section_t-1]-my_t[section_t])*(my_t[section_t-1]-my_t[section_t+1]));
temp_t[1]=(tt-my_t[section_t-1])*(tt-my_t[section_t+1])/((my_t[section_t]-my_t[section_t-1])*(my_t[section_t]-my_t[section_t+1]));
temp_t[2]=(tt-my_t[section_t-1])*(tt-my_t[section_t])/((my_t[section_t+1]-my_t[section_t-1])*(my_t[section_t+1]-my_t[section_t]));
answer=0;
for(ii=0;ii<3;ii++)
牛人报告,供大家参考,非常鄙视抄袭者。P.S. 北航数值分析吕老师讲的非常好,鼓励大家选这门课,能够学到很多东西。有问题联系作者!
{
answer=answer+temp_t[ii]*(temp_u[0]*table((section_t-1+ii),section_u-1)+temp_u[1]*table((section_t-1+ii),section_u)+temp_u[2]*table((section_t-1+ii),section_u+1)); }
return answer; }
4) Newton迭代求解非线性方程组
#include<stdio.h> #include<math.h>
void ite_equations(double *tt,double *uu,double xx,double yy) //牛顿迭代解非线性方程组 {
double t=1; double u=1; double v=1; double w=1;
double d[4]={0}; //增量
double x=xx; double y=yy;
相关推荐:
- [初中教育]婚姻家庭法学教学教案
- [初中教育]浅谈小学语文教学中的创新教育
- [初中教育]中华人民共和国侵权责任法2009
- [初中教育]2016-2022年中国薄膜太阳能电池行业发
- [初中教育]多级轻型井点降水的应用
- [初中教育]外语教学法流派介绍和简评
- [初中教育]实验一、典型环节及其阶跃响应
- [初中教育]内蒙古2012-2013学年度国家奖学金获奖
- [初中教育]移动通信营销渠道管理探讨
- [初中教育]初三化学第一学期第一第二章基础知识点
- [初中教育]一天的食物教学设计
- [初中教育]光导照明系统的基本结构及工作原理
- [初中教育]长春市十一高、东北师范大学附属中学、
- [初中教育]“十三五”规划重点-配重式装卸车项目
- [初中教育]领导方法和领导艺术
- [初中教育]第三章 植物病虫草鼠害诊断与防治基
- [初中教育]2019届九年级语文上册 第二单元 6纪念
- [初中教育]甲级单位编制水豆腐项目可行性报告(立
- [初中教育]Ch8-1补充 09101数据库系统原理及应用-
- [初中教育]2017-2023年中国吊装设备行业市场分析
- 制作毕业纪念册需要哪些材料
- 2015-2016学年高二化学苏教版选修4课件
- 哈佛管理导师-创建商业案例
- 职场交际中的谈吐礼仪知识与职场会议接
- 中国糕点及面包行业发展现状与竞争战略
- 沂河“12·7”洪水茶山拦河坝
- 管道水流量计算公式
- 4-2发电机火灾事故处置方案
- 数字信号处理实验五
- 2009年经济师(中级)金融专业知识全真试
- 历史街区保护规划--04历史文化遗产保护
- 宁夏回族自治区中小学职称评价标准
- 评先评优测评表
- 圆的切线证明及线段长求解在在中考中的
- 【解析版】2015年江苏省南京外国语学校
- 人教版八年级上册科学第一章习题精华
- 责任心与执行力
- SA8000社会责任管理体系标准培训
- IgA肾病的饮食应注意
- 杭州市建设工程文件归档整理方案(试行)