こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

fortran cosθをベクトリから求めるプログラム

ベクトルからcosθを求めるペログラムを作ってみたのですが、実際計算した値と実行結果の値が一致しないのですが。プログラム上に問題があるのでしょうか?教えて下さい。よろしくお願いします。
module subprogs
implicit none
contains
function vec_cos(a,b) result(vcos)
real(8), intent(in) :: a(:), b(:)
real(8) ab, vcos
if (size(a) /= size(b)) stop ' er : size(a) /= size(b) '
ab = dot_product(a,a)* dot_product(b,b)
if (ab == 0.0d0) then
vcos = 0.0d0
else
vcos = dot_product(a,b)/sqrt(ab)
endif
end function vec_cos
end module subprogs

programmain
use subprogs
implicit none
real(8) :: x(1:2) = (/1.2d0, 3.4d0/), y(1:2) = (/5.6d0, 7.8d0/)
write(*,*) 'cos = ', vec_cos(x,y)
end program main

実行結果 cos = 0.9601163787292428

投稿日時 - 2009-10-20 17:36:56

QNo.5382551

すぐに回答ほしいです

質問者が選んだベストアンサー

その「実際計算した値」というのはどのように計算したもので値はいくつになったのでしょうか?

投稿日時 - 2009-10-20 18:09:56

お礼

cos = ( 1.2*5.6+3.4*7.8)/sqrt((1.2*1.2+3.4*3.4)*(5.6*5.6+7.8*7.8))=0.9531....
再度計算し直したらちゃんと実行結果の値と同じになりました。こちらのケアレスミスでした。ありがとうございました。

投稿日時 - 2009-10-20 23:40:47

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問