當前位置:首頁 » 操作系統 » cos源碼

cos源碼

發布時間: 2022-06-20 15:02:23

① 怎麼用java畫出一個 cos函數,求源代碼

package ui;import java.awt.*;import javax.swing.*;import java.util.*;class MyPanel extends JPanel { private Vector comps; public MyPanel () { comps = new Vector(); setLayout(null); } public void paint (Graphics g) { g.setColor(Color.BLACK); for (int i=1; i

② 急!!!!!用c語言編寫的產生正態隨機數的源代碼!!!

一般有兩種演算法
演算法一產生12個(0,1)平均分布的隨機函數,用大數定理可以模擬出正態分布。
演算法二用到了數學中的雅可比變換,直接生成正態分布,但此演算法在計算很大規模的數時
會出現溢出錯誤。
測試程序:
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>

double _random(void)
{
int a;
double r;

a=rand()%32767;
r=(a+0.00)/32767.00;

return r;

}

double _sta(double mu,double sigma)
{
int i;
double r,sum=0.0;

if(sigma<=0.0) { printf("Sigma<=0.0 in _sta!"); exit(1); }
for(i=1;i<=12;i++)
sum = sum + _random();
r=(sum-6.00)*sigma+mu;

return r;

}

double _sta2(double mu,double sigma)
{
double r1,r2;

r1=_random();
r2=_random();

return sqrt(-2*log(r1))*cos(2*M_PI*r2)*sigma+mu ;

}

int main()
{
int i;
double mu,sigma;

srand( (unsigned)time( NULL ) );
mu=0.0;
sigma=1.0;
printf("Algorithm 1:\n");
for(i=0;i<10;i++)
printf("%lf\t",_sta(mu,sigma));
printf("Algorithm 2:\n");
for(i=0;i<10;i++)
printf("%lf\t",_sta2(mu,sigma));
return 0;

}

//由均勻分布的隨機數得到正態分布的隨機數
#include <math.h>

float gasdev(im)
int *im;
{
static int iset=0;
static float gset;
float fac,r,v1,v2;
float ran1();//產生均勻分布的隨機數,可利用系統函數改寫

if (iset == 0) {
do {
v1=2.0*ran1(im)-1.0;
v2=2.0*ran1(im)-1.0;
r=v1*v1+v2*v2;
} while (r >= 1.0);
fac=sqrt(-2.0*log(r)/r);
gset=v1*fac;
iset=1;
return v2*fac;
} else {
iset=0;
return gset;
}
}
原理可找本數值演算法方面的書看看。

③ 用C語言編寫快速傅立葉變換源代碼

// 函數名: 快速傅立葉變換(來源《C常用演算法集》)
// 本函數測試OK,可以在TC2.0,VC++6.0,Keil C51測試通過。
// 如果你的MCS51系統有足夠的RAM時,可以驗證一下用單片機處理FFT有多麼的慢。
//
// 入口參數:
// l: l = 0, 傅立葉變換; l = 1, 逆傅立葉變換
// il: il = 0,不計算傅立葉變換或逆變換模和幅角;il = 1,計算模和幅角
// n: 輸入的點數,為偶數,一般為32,64,128,...,1024等
// k: 滿足n=2^k(k>0),實質上k是n個采樣數據可以分解為偶次冪和奇次冪的次數
// pr[]: l="0時",存放N點采樣數據的實部
// l="1時", 存放傅立葉變換的N個實部
// pi[]: l="0時",存放N點采樣數據的虛部
// l="1時", 存放傅立葉變換的N個虛部
//
// 出口參數:
// fr[]: l="0", 返回傅立葉變換的實部
// l="1", 返回逆傅立葉變換的實部
// fi[]: l="0", 返回傅立葉變換的虛部
// l="1", 返回逆傅立葉變換的虛部
// pr[]: il = 1,i = 0 時,返回傅立葉變換的模
// il = 1,i = 1 時,返回逆傅立葉變換的模
// pi[]: il = 1,i = 0 時,返回傅立葉變換的輻角
// il = 1,i = 1 時,返回逆傅立葉變換的輻角
// data: 2005.8.15,Mend Xin Dong
kkfft(double pr[], double pi[], int n, int k, double fr[], double fi[], int l, int il)
{
int it,m,is,i,j,nv,l0;
double p,q,s,vr,vi,poddr,poddi;
for (it=0; it<=n-1; it++)
{
m = it;
is = 0;
for(i=0; i<=k-1; i++)
{
j = m/2;
is = 2*is+(m-2*j);
m = j;
}
fr[it] = pr[is];
fi[it] = pi[is];
}
//----------------------------
pr[0] = 1.0;
pi[0] = 0.0;
p = 6.283185306/(1.0*n);
pr[1] = cos(p);
pi[1] = -sin(p); if (l!=0)
pi[1]=-pi[1];for (i=2; i<=n-1; i++)
{
p = pr[i-1]*pr[1];
q = pi[i-1]*pi[1];
s = (pr[i-1]+pi[i-1])*(pr[1]+pi[1]);
pr[i] = p-q;
pi[i] = s-p-q;
}for (it=0; it<=n-2; it="it"+2)
{
vr = fr[it];
vi = fi[it];
fr[it] = vr+fr[it+1];
fi[it] = vi+fi[it+1];
fr[it+1] = vr-fr[it+1];
fi[it+1] = vi-fi[it+1];
}
m = n/2;
nv = 2;for (l0=k-2; l0>=0; l0--)
{
m = m/2;
nv = 2*nv;
for(it=0; it<=(m-1)*nv; it="it"+nv)
for (j=0; j<=(nv/2)-1; j++)
{
p = pr[m*j]*fr[it+j+nv/2];
q = pi[m*j]*fi[it+j+nv/2];
s = pr[m*j]+pi[m*j];
s = s*(fr[it+j+nv/2]+fi[it+j+nv/2]);
poddr = p-q;
poddi = s-p-q;
fr[it+j+nv/2] = fr[it+j]-poddr;
fi[it+j+nv/2] = fi[it+j]-poddi;
fr[it+j] = fr[it+j]+poddr;
fi[it+j] = fi[it+j]+poddi;
}
}if(l!=0)
{
for(i=0; i<=n-1; i++)
{
fr[i] = fr[i]/(1.0*n);
fi[i] = fi[i]/(1.0*n);
}
}
if(il!=0)
{
for(i=0; i<=n-1; i++)
{
pr[i] = sqrt(fr[i]*fr[i]+fi[i]*fi[i]);
if(fabs(fr[i])<0.000001*fabs(fi[i]))
{
if ((fi[i]*fr[i])>0)
pi[i] = 90.0;
else
pi[i] = -90.0;
}
else
pi[i] = atan(fi[i]/fr[i])*360.0/6.283185306;
}
}
return;
}

④ 求函數sqrt,asin,acos源代碼

/*
*sqrt源代碼
*/
double my_sqrt(double x)
{
register double ret;
__asm__(
"fsqrt"
: "=t" (ret)
: "0" (x)
);

return ret;
}//計算x的平方根

/*
*asin源代碼
*/
double atan2 (double x, double y)
{
register double ret;
__asm__(
"fpatan\n\t"
"fld %%st(0)"
: "=t" (ret)
: "0" (y), "u" (x)
);

return ret;
}//求x / y的反正切值。
double my_asin(double x)
{
return atan2 (x, sqrt (1.0 - x * x));
}//求x的反正弦值。

/*
*acos源代碼
*/
double atan2 (double x, double y)
{
register double ret;
__asm__(
"fpatan\n\t"
"fld %%st(0)"
: "=t" (ret)
: "0" (y), "u" (x)
);

return ret;
}//求x / y的反正切值。
double my_acos(double x)
{
return atan2 (sqrt (1.0 - x * x), x);
}//求x的反餘弦值。

/***********************/
以上是你要求的源代碼,如果你要自己來實現,可以參考數值計算或數值逼近
sqrt:可以使用牛頓迭代公式,f(x)=x^2 - a
求零點(即方程f(x)=0的根),就是開方了。

而對於後面的兩個,sin cos exp 是用泰勒公式和麥克勞林公式來計算,通過這里演化迭代就可以了,對於任何的c還是c++的編譯器,在庫函數裡面都應該有這些基本的數學函數的,你在使用的時候加上#include<math.h>就可以了

⑤ cos移植到51單片機

有1K的ram的 51單片機都是外部擴展的了,
只不過是51單片機內部給你做的了,,
訪問還是用movx指令,

如果你自己不想移植的話.直接下載別人源碼,,
周立功上面直接有現成移植好了.
你下載來編譯一下就可以了,

如果想自己一直..自己去買一本邵貝貝的 ucos那本書.多看看吧..

⑥ 我可以看看java.lang.StrictMath.cos函數的源碼嗎

是可以的,你可以再Java安裝路徑下尋找,或是通過IDE訪問

⑦ C語言,輸入float類型數進行cos函數計算,但只有整數部分參與計算,怎麼解決

scanf("%1f",&x);

1還是l,樓主是不是寫錯了。

%1f這種寫法,告訴scanf,我要接收進來一個float類型,他的整數部分有效位是1個,小數部分有效位是0個。

所以你輸入的雖然是3.14,然後x最終只會賦值為3.00

如果你輸入的是13.14,最後x只會等於1.00

⑧ Python如何畫cos和sin的圖啊

import
numpy
as
np
import
matplotlib.pyplot
as
plt
#從-π到π取201個變數(取得多點線就圓滑一點,這是源碼寫的例子201不知道有啥特殊之處,反正取100也行)
x
=
np.linspace(-np.pi,
np.pi,
201)
#計算201個變數對應的值連成線
plt.plot(x,
np.sin(x))
plt.plot(x,
np.cos(x))
#將畫成的圖顯示出來
plt.show()
大概就是這個意思,有錯誤的還請指教

⑨ 如何准備閱讀linux源碼

閱讀linux源代碼要掌握一定的386硬體知識,AT&T匯編語言結構,操作系統原理等等基礎知識。但是及時掌握這些知識讀懂源碼還是很困難的(當然掌握操作系統原理也是一件不容易的事情),建議你先去看一下u/cos源代碼,根據其源代碼試著自己給51單片機寫一個小的分時操作系統,移植到單片機上試試效果。然後再根據對u/cos理解自己寫一個自己的u/cos,並移植到arm7平台上,一步一步來。。。。。。總之linux操作系統是一個很復雜的軟體,它不僅僅要求你對大型軟體架構有很深入的認識,還要求你對硬體的操作非常熟悉,我們經常看到在linux系統中常常會有匯編語言與c語言的嵌套。閱讀linux源代碼不是一件容易的事情,要不斷的學習,讓我們一起來努力吧!

⑩ 求一個 JAVA 的 科學計算器 的 源代碼最好裡面有 sin cos 倒數、平方根、平方、立方高級一點的!

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Calculator implements ActionListener
{

String s="",s1;
double d1,d2;
JFrame jf = new JFrame("小計算器by Graate") ;

JTextField tf = new JTextField();

public void init()//實現計算器界面
{
Container c=jf.getContentPane();
tf.setHorizontalAlignment(JTextField.RIGHT);//文本框
c.add(tf,"North");

JPanel pn3 = new JPanel(new BorderLayout());
c.add(pn3,"Center");

JPanel pn2 = new JPanel();//功能鍵界面(清除鍵和關閉鍵)
pn2.setLayout(new BorderLayout());

JPanel pn1 = new JPanel();//運算界面

pn1.setLayout(new GridLayout(4,4));

pn3.add(pn2,"North");
pn3.add(pn1);

//設置按鈕
JButton b = new JButton("CLEAR");
b.setToolTipText("請按清除鍵!");//設置清零鍵
b.setForeground(Color.RED);//設置字體顏色
b.setBackground(Color.YELLOW);//設置背景色
b.addActionListener(this);
pn2.add(b,"Center");
b = new JButton("OFF");
b.setToolTipText("請按退出鍵!");//設置off鍵,點擊退出應用程序b.addActionListener(this);
b.setForeground(Color.RED);//字體顏色
b.setBackground(Color.ORANGE);//背景色
pn2.add(b,"East");
b = new JButton("1");//add butten 1
b.addActionListener(this);
pn1.add(b);
b = new JButton("2");//add butten 2
b.addActionListener(this);
pn1.add(b);
b = new JButton("3");//add butten 3
b.addActionListener(this);
pn1.add(b);
b = new JButton("+");//add butten +
b.setForeground(Color.BLUE);//設置字體顏色
b.addActionListener(this);
pn1.add(b);
b = new JButton("4");//add butten 4
b.addActionListener(this);
pn1.add(b);
b = new JButton("5");//add butten 5
b.addActionListener(this);
pn1.add(b);
b = new JButton("6");//add button 6
b.addActionListener(this);
pn1.add(b);
b = new JButton("-");//add button -
b.setForeground(Color.BLUE);//設置字體顏色
b.addActionListener(this);
pn1.add(b);
b = new JButton("7");//add button 7
b.addActionListener(this);
pn1.add(b);
b = new JButton("8");//add button 8
b.addActionListener(this);
pn1.add(b);
b = new JButton("9");//add button 9
b.addActionListener(this);
pn1.add(b);
b = new JButton("*");//add button *
b.setForeground(Color.BLUE);//設置字體顏色
b.addActionListener(this);
pn1.add(b);
b = new JButton("0");//add button 0
b.addActionListener(this);
pn1.add(b);
b = new JButton(".");//add button .
b.addActionListener(this);
pn1.add(b);
b = new JButton("=");//add button =
b.setForeground(Color.RED);//設置字體顏色
b.addActionListener(this);
pn1.add(b);
b = new JButton("\\");//add button \
b.setForeground(Color.BLUE);//設置字體顏色
b.addActionListener(this);
pn1.add(b);

jf.setSize(300,300);//設置大小
jf.setVisible(true);//設置為可視
}

//處理按鈕按下時的動作,進行相應的處理
public void actionPerformed(ActionEvent e)
{
String command = e.getActionCommand();
tf.setText(tf.getText()+command);
if(command.equals("CLEAR")) //清零鍵 按下時返回初始狀態
{
s1=null;
s="";
tf.setText("");//記錄輸入值的變數清空
}

else if(command.equals("OFF")) System.exit(0);//off鍵 關閉應用程序

else if(!command.equals("*")&&!command.equals("\\")
&&!command.equals("+")&&!command.equals("-")
&&!command.equals("="))//判斷輸入是否為數字
{
if(s1==null)//判斷輸入是否為第一個
s1 = command;
else s1+=command;
d1 = new Double(s1).doubleValue();//字元串型轉換為雙精度型,還原輸入數字
try
{
if(s.equals("+")) d1 = d1+d2;//加法運算
else if(s.equals("-")) d1 = d2-d1;//減法運算
else if(s.equals("*")) d1 = d1*d2;//乘法運算
else if(s.equals("\\"))d1 = d2/d1;//除法運算
}
catch(Exception ex)
{
tf.setText("Error");//錯誤顯示"Error"
System.out.println(ex.getMessage());
}

}

else if(!command.equals("=")) //判斷輸入是否為+ - * \
{
s = command;
s1 = null;
d2 = d1;
}

else//輸入=時,顯示運算結果
{

tf.setText(tf.getText()+d1);

}

}

public static void main(String [] args)
{

new Calculator().init();

}
}

熱點內容
資料庫及約束 發布:2024-11-08 04:53:41 瀏覽:403
我的世界叢林大劍伺服器 發布:2024-11-08 04:52:14 瀏覽:567
壓縮文件到最小 發布:2024-11-08 04:52:05 瀏覽:877
rararchive解壓 發布:2024-11-08 04:51:27 瀏覽:87
xp代理伺服器如何設置 發布:2024-11-08 04:27:20 瀏覽:524
androidpdf轉圖片 發布:2024-11-08 04:08:55 瀏覽:659
強夯壓縮系數 發布:2024-11-08 04:05:35 瀏覽:81
伺服器io錯誤是什麼原因 發布:2024-11-08 04:03:50 瀏覽:14
解壓閑聊 發布:2024-11-08 04:00:08 瀏覽:807
微信安卓為什麼信息延遲 發布:2024-11-08 03:46:57 瀏覽:198