空間前方交會程序_第1頁
空間前方交會程序_第2頁
空間前方交會程序_第3頁
空間前方交會程序_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、#include #include const int n=3; void inverse (double cnn); templatevoid transpose (t1*mat1,t2*mat2,int a,int b); templatevoid multi(t1*mat1,t2 * mat2,t2 * result,int a,int b,int c); templatevoid input (t*mat,int a,int b); templatevoid output(t*mat,char*s,int a,int b); void main() double x=0,y=0,z=0

2、; double at34,a ta33,xg31,a tl31; double a1,a2,a3,b1,b2,b3,c1,c2,c3,l1,l2,l3,l4,l5,l6,l7,l8,l9,l10,l11,l12,lx1,ly1,lx2,ly2; double a10,a20,a30,b10,b20,b30,c10,c20,c30; float r,w,k; printf( 輸入 r:n); scanf(%f,&r); printf( 輸入 w:n); scanf(%f,&w); printf( 輸入 k:n); scanf(%f,&k); a1=cos(r)*cos(

3、k)-sin(r)*sin(w)*sin(k); a2=-cos(r)*sin(k)-sin(r)*sin(w)*cos(k); a3=-sin(r)*cos(w); b1=cos(w)*sin(k); b2=cos(w)*cos(k); b3=-sin(w); c1=sin(r)*cos(k)+cos(r)*sin(w)*sin(k); c2=-sin(r)*sin(k)+cos(r)*sin(w)*cos(k); c3=cos(r)*cos(w); float r1,w1,k1; printf( 輸入 r1:n); scanf(%f,&r1); printf( 輸入 w1:n);

4、scanf(%f,&w1); printf( 輸入 k1:n); scanf(%f,&k1); a10=cos(r)*cos(k)-sin(r)*sin(w)*sin(k); a20=-cos(r)*sin(k)-sin(r)*sin(w)*cos(k); a30=-sin(r)*cos(w); b10=cos(w)*sin(k); b20=cos(w)*cos(k); b30=-sin(w); c10=sin(r)*cos(k)+cos(r)*sin(w)*sin(k); c20=-sin(r)*sin(k)+cos(r)*sin(w)*cos(k); c30=cos(r)*

5、cos(w); double x0=0.0,y0=0.0,f=0.15324; double x1=-86.15,y1=-68.99,x2=0.0,y2=0.0; double xs=393795.45,ys=27476.46,zs=7572.69; l1=f*b1+(x1-x0)*a3; l2=f*a1+(x1-x0)*b3; l3=f*c1+(x1-x0)*c3; lx1=f*a1*xs+f*b1*ys+f*c1*zs+(x1-x0)*a3*xs+(x1-x0)*b3*ys+(x1-x0)*c3*zs; l4=f*a2+(y1-y0)*a3; l5=f*b2+(y1-y0)*b3; l6=

6、f*c2+(y1-y0)*c3; ly1=f*a2*xs+f*b2*ys+f*c2*zs+(y1-y0)*a3*xs+(y1-y0)*b3*ys+(y1-y0)*c3*zs; l7=f*b10+(x2-x0)*a30; l8=f*a10+(x2-x0)*b30; l9=f*c10+(x2-x0)*c30; lx2=f*a10*xs+f*b10*ys+f*c10*zs+(x2-x0)*a30*xs+(x2-x0)*b30*ys+(x2-x0)*c30*zs; l10=f*a20+(y2-y0)*a30; l11=f*b20+(y2-y0)*b30; l12=f*c20+(y2-y0)*c30;

7、ly2=f*a20*xs+f*b20*ys+f*c20*zs+(y2-y0)*a30*xs+(y2-y0)*b30*ys+(y2-y0)*c30*zs; double a43=l1,l2,l3,l4,l5,l6,l7,l8,l9,l10,l11,l12; double l41=lx1,ly1,lx2,ly2; transpose(a,at,3,4); multi(at,a,ata,3,4,3); inverse(ata); multi(at,l,a tl,3,4,1); multi(ata,atl,xg ,3,3,1); x=xg00; y=xg10; z=xg20; printf(x=%lf

8、,y=%lf,z=%lfn,x,y ,z); void inverse(double cnn) int i,j,h,k; double p; double qn6; for(i=0;in;i+)/ 構造高斯矩陣for(j=0;jn;j+) qij=cij; for(i=0;in;i+) for(j=n;j6;j+) if(i+3=j) qij=1; else qij=0; for(h=k=0;kn-1;k+,h+)/ 消去對角線以下的數據for(i=k+1;in;i+) if(qih=0) continue; p=qkh/qih; for(j=0;j0;k-,h-) / 消去對角線以上的數據f

9、or(i=k-1;i=0;i-) if(qih=0) continue; p=qkh/qih; for(j=0;j6;j+) qij*=p; qij-=qkj; for(i=0;in;i+)/ 將對角線上數據化為 1 p=1.0/qii; for(j=0;j6;j+) qij*=p; for(i=0;in;i+) / 提取逆矩陣for(j=0;jn;j+) cij=qij+3; templatevoid transpose(t1*mat1,t2*mat2,int a,int b) int i,j; for(i=0;ib;i+) for(j=0;ja;j+) mat2ji=mat1ij; return; templatevoid multi(t1*mat

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論